Top Banner
Progressive Web Apps for Beginners - 2018 Pietro Alberto Rossi
48

Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

May 20, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Progressive Web Apps for Beginners - 2018

Pietro Alberto Rossi

Page 2: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Pietro Alberto Rossi

[email protected]

www.sprik.it

Page 3: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Before starting…

Page 4: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

Before starting

Page 5: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

Before starting

13% Mobile web

87% AppsSource: comScore Mobile Metrix, U.S., Age 18+, June 2015

Page 6: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

Before starting

Page 7: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

Before starting

Progressive Web Apps!!!

Page 8: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

What are the Progressive Web Apps?

Page 9: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Progressive Web Apps

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

Progressive Web Applications take advantage of new technologies to bring the best of mobile sites and native applications to users. They're reliable, fast, and engaging.

Page 10: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

Progressive Web Apps

A Progressive Web App is• Progressive - Works for every user, regardless of browser choice because it's built with progressive enhancement as a core tenet.

• Responsive - Fits any form factor: desktop, mobile, tablet, or whatever is next.

Page 11: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Progressive Web Apps

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

• Connectivity independent - Enhanced with service workers to work offline or on low-quality networks.

• App-like - Feels like an app to the user with app-style interactions and navigation because it's built on the app shell model.

Page 12: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Progressive Web Apps

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

• Fresh - Always up-to-date thanks to the service worker update process.

• Safe - Served via HTTPS to prevent snooping and to ensure content hasn't been tampered with.

• Discoverable - Is identifiable as an "application" thanks to W3C manifest and service worker registration scope, allowing search engines to find it.

Page 13: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Progressive Web Apps

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

• Re-engageable - Makes re-engagement easy through features like push notifications.

• Installable - Allows users to "keep" apps they find most useful on their home screen without the hassle of an app store.

• Linkable - Easily share via URL, does not require complex installation.

Page 14: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Check List

Page 15: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Progressive Web Apps

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

• Baseline Progressive Web App Checklist• Exemplary Progressive Web App Checklist

Page 16: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Baseline Checklist

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

• Site is served over HTTPS• Pages are responsive on tablets & mobile devices• All app URLs load while offline• Metadata provided for Add to Home screen• First load fast even on 3G• Site works cross-browser• Page transitions don't feel like they block on the network

• Each page has a URL

Page 17: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Exemplary Checklist

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

• Site's content is indexed by Google• Schema.org metadata is provided where appropriate• Social metadata is provided where appropriate• Canonical URLs are provided when necessary• Pages use the History API• Content doesn't jump as the page loads• Pressing back from a detail page retains scroll position on the previous list page

Page 18: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Exemplary Checklist

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

• When tapped, inputs aren't obscured by the on screen keyboard

• Content is easily shareable from standalone or full screen mode

• Site is responsive across phone, tablet and desktop screen sizes

• Any app install prompts are not used excessively• The Add to Home Screen prompt is intercepted

Page 19: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Exemplary Checklist

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

• First load very fast even on 3G• Site uses cache-first networking• Site appropriately informs the user when they're offline• Provide context to the user about how notifications will be used

• UI encouraging users to turn on Push Notifications must not be overly aggressive.

• Site dims the screen when permission request is showing

Page 20: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Exemplary Checklist

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

• Push notifications must be timely, precise and relevant• Provides controls to enable and disable notifications• User is logged in across devices via Credential Management API

• User can pay easily via native UI from Payment Request API

Page 21: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Checklist

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

https://developers.google.com/web/progressive-web-apps/checklist

Url checklist

Page 22: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Lighthouse

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

https://chrome.google.com/webstore/detail/lighthouse/blipmdconlkpinefehnmjammfjpmpbjk

Page 23: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

History Case

Page 24: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

History Case

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

Page 25: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

The Washington Post

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

https://wapo.com/pwa

Page 26: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

The Washington Post

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

Add to Home Screen

Page 27: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

The Washington Post

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

Add to Home Screen

Page 28: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

The Washington Post

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

Splash Screen

Page 29: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

The Washington Post

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

Launch it!

Page 30: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

The Washington Post

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

Task Manager

Page 31: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

AliExpress

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

2x more page views

Page 32: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Jumia

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

38% open rate

Page 33: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

A bit of codes

Page 34: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

manifest.json

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

Page 35: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

manifest.json

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

Page 36: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

manifest.json

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

Page 37: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

pwa.html

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

Page 38: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

main.js

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

Page 39: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Service Worker

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

What is a service worker?

A service worker is a type of web worker. It's essentially a JavaScript file that runs separately from the main browser thread, intercepting network requests, caching or retrieving resources from the cache, and delivering push messages.

Because workers run separately from the main thread, service workers are independent of the application they are associated with.

Page 40: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Service Worker

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

What a service worker can do?

• Improve performance of your application/site • Make your app “offline-first" • Act as the base for advanced features (Notification API, Push

API, Backround Sync API, Channel Messaging API)

https://developers.google.com/web/ilt/pwa/introduction-to-service-worker

Page 41: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

sw.js

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

Page 42: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Final Considerations

Page 43: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Final Considerations

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

• Instant Loading • Add to Home Screen • Push Notifications • Fast • Secure • Responsive

Page 44: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Final Considerations

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

Code, code and code!

Page 45: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Questions?

Page 46: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

References

+PietroAlbertoRossi

@sprik89

Pietro Alberto Rossi

Pietro Alberto Rossi

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

Page 47: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Resources

@: [email protected] | TW: @sprik89 | G+: +PietroAlbertoRossi

• Washington Post PWA - https://wapo.com/pwa • SSLMate - https://sslmate.com • Let’s Encrypt - https://letsencrypt.org/ • Manifest Generator - https://brucelawson.github.io/manifest/ • Manifest Validator - https://manifest-validator.appspot.com/ • Favicon Generator - http://realfavicongenerator.net/ • Code labs - https://codelabs.developers.google.com/pwa-roadshow

Page 48: Progressive Web Apps for Beginners - 2018palermo.grusp.org/wp-content/uploads/2018/06/PWA_Magneti.pdf · Progressive Web Apps A Progressive Web App is •Progressive - Works for every

Thanks