Intro into PWA

A presentation at Mozilla TechSpeakers Meetup 2018 in September 2018 in Paris, France by Ioana Chiorean

Slide 1

Slide 1

Intro to Progressive Web Apps IWD Celebration – GDG Abu Dhabi – NYUAD | 9th March 2018

Slide 2

Slide 2

Overview Hi. We’re Mozilla, the proudly non-profit champions of the Internet, helping to keep it healthy, open and accessible to all. 2

Slide 3

Slide 3

Tweet at Us! #mozilla #moztechspeakers TAKE 3 MIN to Tell Us What you think! mzl.la/devsurvey 3

Slide 4

Slide 4

Me. Alaa Shaheen @FloweryCoder https://www.linkedin.com/in/alaashaheen1/ Email: alaa.shaheen2012@gmail.com Software Product Manager at Bilbareed.com Mozilla Tech Speaker 4

Slide 5

Slide 5

What is PWA ➔Web apps are the websites, that are using web technologies, and they have the capabilities to act like a mobile app. ➔Top level in task switcher ➔Top level in home screen ➔Top level in the notification tray 5

Slide 6

Slide 6

➔”A progressive web application is basically a website built using modern web technologies but acts and feels like a mobile app” 6

Slide 7

Slide 7

Why we need to go into Progressive web apps? ➔Recent studies shows that progressive web apps, increases business revenues and web stands for the companies. 7

Slide 8

Slide 8

Using the mobile apps,, ➔Needs to install app from the app store ➔Some apps are not available in our countries ➔Limited access to app stores ➔Users install or buy apps when buying phone, then less apps are being installed. 8

Slide 9

Slide 9

FlipKart ➔Largest online shopping site in India, called FlipKart, launched their light application using progressive web apps, and they found a huge increase in the number of visitors. ➔62% from the users accessed the website from 2G network. ➔Uses three times less mobile data to access the website and get the items they want. 9

Slide 10

Slide 10

Progressive Web Apps ➔Progressive: must work on any device and enhance progressively. ➔Discoverable: in search engines. ➔Linkable: should use the URI to indicate the current state of the application. ➔Responsive: must fit the device’s form factor and screen size. ➔App-like: like a native app and be built on the application shell model, with minimal page refreshes. 10

Slide 11

Slide 11

Progressive Web Apps ➔Connectivity-independent: low connectivity or offline. ➔Re-engageable: push notifications. ➔Installable: installed on the device’s home screen. ➔Fresh: new content should be made available in the app. ➔Safe: hosted over HTTPS to prevent man-in-the-middle attacks. 11

Slide 12

Slide 12

Progressive Web Apps ➔Connectivity-independent: low connectivity or offline. ➔Re-engageable: push notifications. ➔Installable: installed on the device’s home screen. ➔Fresh: new content should be made available in the app. ➔Safe: hosted over HTTPS to prevent man-in-the-middle attacks. 12

Slide 13

Slide 13

Characteristics: ➔Add to home ➔Splash Screen ➔App Shell 13

Slide 14

Slide 14

14

Slide 15

Slide 15

Technologies behind it? ➔Service Workers ➔Application Shell ➔Web App Manifest File 15

Slide 16

Slide 16

Service Workers ➔Web Apps are being built on top of: ◆Server ◆Client Service Worker sit between client and server to enhance network connectivity to the app. 16

Slide 17

Slide 17

Service Workers ➔a script, that your browser runs in the background. ➔handle http requests and push notifications. ➔cache all static resources. ➔can be used to display the application shell. ➔inform users that they are disconnected from the internet. 17

Slide 18

Slide 18

Code Example ➔Service Worker’s Life Cycle: ◆Register ◆Install ◆Activate ◆Fetch 18

Slide 19

Slide 19

Code Example ➔ Register the service worker in your app’s js file app.js 19

Slide 20

Slide 20

Code Example ➔An install event is triggered the first time a user visits the page. ➔the service worker is installed in the browser. ➔you can cache all the static assets in your web app. 20

Slide 21

Slide 21

Code Example 21

Slide 22

Slide 22

Code Example ➔Activate: This event is fired when the service worker starts up. ➔service worker updates its cache whenever any of the app shell files change. 22

Slide 23

Slide 23

Code Example 23

Slide 24

Slide 24

Code Example ➔Fetch: This event helps serve the app shell from the cache. ➔It then either responds with the cached version, or uses fetch to get a copy from the network. 24

Slide 25

Slide 25

Code Example 25

Slide 26

Slide 26

Web app Manifest File ➔It controls how your app should appear to the user in mobile phone. ➔Where to find the app in the phone and how to launch it. 26

Slide 27

Slide 27

Application Shell ➔Usually the app assembles the page content in one place. ➔App Shell, separates the content of the app that does not change often. ➔It helps to boot the app when it starts, and power the user interface of the web app. ➔It is written in HTML , CSS and JS. 27

Slide 28

Slide 28

Application Shell 28

Slide 29

Slide 29

App Shell ➔Service Worker can save locally the content of the app, and the application shell can load the main app interface. ➔App Shell , with caching mechanism and using the Service Workers, allows developers to focus on performance and speed. 29

Slide 30

Slide 30

Offline Mode Using PWA , developer can cache the App Shell, and load it offline, by saving content locally. 30

Slide 31

Slide 31

App Shell ➔Break design to main components: ◆Main design on the screen ◆Other UI components key to the app ◆Supporting resources to App Shell, JS , Styles , etc 31

Slide 32

Slide 32

App Shell ➔Should contain all the necessary resources to launch the app: ◆HTML ◆CSS ◆JS ◆Images 32

Slide 33

Slide 33

How to Add Data to the App? ➔We have three methods to display data to our PWA: ◆Server Side Rendering: fastest ◆Get Data Via Ajax Request: slowest method ◆Combination of server side and Ajax request: server inject data into the app JS. 33

Slide 34

Slide 34

●Eliminate the need for HTML request ●But we need JS to run the data ●We can cache data after loading for further use 34

Slide 35

Slide 35

Storage data ➔Local Storage: easiest , and available to everywhere, but the it is Synchronous and may cause bad performance. 35

Slide 36

Slide 36

Storage data ➔Cache: ◆Ready to use ◆Asynchronous ◆Fast ◆Not available to all browsers 36

Slide 37

Slide 37

Storage data ➔Indexed DB: ◆Fast ◆Asynchronous ◆Supported on all browsers ◆Check Mozilla develop website for more info. 37

Slide 38

Slide 38

Appendix

Slide 39

Slide 39

Resources MDN Web Docs https://developer.mozilla.org/en-US/Apps/Progressive/I ntroduction https://developer.mozilla.org/en-US/Apps/Progressive The Firefox Frontier https://blog.mozilla.org/firefox/progressive-web-apps-w hats-big-deal/ Auth0.com https://auth0.com/blog/introduction-to-progressive-app s-part-one/ Google Developers https://developers.google.com/web/progressive-web-app s/ 39

Slide 40

Slide 40

Thanks. Alaa Shaheen @FloweryCoder https://www.linkedin.com/in/alaashaheen1/ Email: alaa.shaheen2012@gmail.com Software Product Manager at Bilbareed.com Mozilla Tech Speaker 40

Slide 41

Slide 41

Q&A