STEVE
JOBS
“You’ve got everything you
need if you know how to
write apps using the most
modern web standards to
write amazing apps for the
iPhone today”
2007
STEVE
JOBS
“You’ve got everything you
need if you know how to
write apps using the most
modern web standards to
write amazing apps for the
iPhone today”
2007
STEVE
JOBS
“You’ve got everything you
need if you know how to
write apps using the most
modern web standards to
write amazing apps for the
iPhone today”
2007
ALEX
RUSSELL
Progressive Web Apps:
Escaping Tabs Without Losing
Our Soul
2015
WHAT ARE
PROGRESSIVE WEB
APPS?
WHAT IT’S NOT
A Tool
A Framework
WHAT THEY ARE
Progressive
Works on any device and enhance
functionality progressively.
Discoverable
Better discovery and integration
with search.
Linkable
Ability to retain or reload its state
and be shareable from a link.
Responsive
Fit any device’s form factor and
screen size.
Current
Application and content is up to date
when connected to the Internet.
Re-engageable
Promotes re-engagement through
features such as push notifications.
Performant
Works as fast or faster than a native app.
Connected to users
Direct feedback to you through
ratings and reviews
App-like
Looks like a native app and uses the
application shell model with minimal
page refreshes.
Connectivity-agnostic
Works with low connectivity or offline.
Installable
Install on the device’s desktop,
start menu, or task bar making it
readily available.
MINIMUM
HTTPS Web App Manifest Service Worker
RECOMMENDED
Cross Platform Responsive Deep linking Best Practices
SUPPORT
WHY?
CONNECTIVITY
Service worker takes care of bad connection
• By caching
• Showing custom offline page
PLATFORM INDEPENDENT
100% code share
Not in the store (per se)
WHY?
 No lengthy installation process
 Don’t occupy device storage
 Discoverable
 Secure
 Fast
 Cheap
WHAT ABOUT…?
I NEED A NATIVE APP FOR
Geolocation
I NEED A NATIVE APP FOR
GeolocationW3C API
I NEED A NATIVE APP FOR
Authentication
I NEED A NATIVE APP FOR
AuthenticationWeb API
I NEED A NATIVE APP FOR
Payment
I NEED A NATIVE APP FOR
Payment Request API
I NEED A NATIVE APP FOR
USB
Bluetooth
VR
Gamepad
I NEED A NATIVE APP FOR
Web USB API
Web Bluetooth API
WebVR
Web Gamepad API
IF IT’S REALLY NOT
THERE (YET)
WHO?
EXAMPLES
Starbucks
EXAMPLES
Twitter
EXAMPLES
Pinterest
EXAMPLES
Instagram
MAKING PWA
ANALYZING
LIGHTHOUSE
LIGHTHOUSE
 Chrome Extension
 Dev Tools Audit
 CLI
Lighthouse analyzes web apps and web
pages, collecting modern performance
metrics and insights on developer best
practices.
WEBHINT
webhint is a linting tool that will help you with your site's accessibility, speed,
security and more, by checking your code for best practices and common
error
 Online scanner
 CLI
 Visual Studio Code integration
GETTING STARTED
PWA BUILDER
1. Provide a URL
2. Generate a Manifest
3. Build a Service Worker
4. Publish the App
Generate your Progressive Web App
WEB APP MANIFEST
 W3C standard
 Contains all info about app
 Working Draft - 18 October 2018
<link rel="manifest" href="/manifest.webmanifest">
SERVICE WORKER
 Runs in background
 Handles cache, push, sync
 programmable network proxy
SERVICE
WORKER
Lifecycle
FETCH
 Modern replacement of XMLHttpRequest
 Relies on promises
WHAT’S NEXT?
NOT SHOWN
NOT SHOWN
 Push notifications
 Notifications API + Push API
 Build on top of the Service Worker API
 Background Sync
 Defer actions until stable connection
FRAMEWORKS
Performance Resilience Progressive web app
JavaScript Libraries for adding offline support to web apps
• Precaching
• Runtimecaching Strategies
• Request routing
• Backgroundsync
• Helpful debugging
PREACT-CLI
 App creation
 Index.html app shell generation
 Browser list autoprefixing
 Firebase configuration for server
push
 Powered by sw-precache
VUE
Vue-cli & @vue/cli-plugin-pwa
 Uses WorkBox
 Can automatically generate service worker or
start with existing one
ANGULAR
@angular-cli
 ng add @angular/pwa - Turn your application into
a PWA by adding an app manifest and service
worker
TIPS
TESTING
 F12 tools
 Connect phone with USB
 Chrome://inspect
 Android debugger needs to be running
“adb.exe start-server”
 Custom domain with SSL
 DNS directs to local IP, ie
192.168.1.13
TESTING
• Test on real devices
• Throttling is not enough
• Offline checkbox doesn’t affect websockets
PWA SLACK
https://join.slack.com/t/progressive-web-apps/shared_invite/enQtMjY0NDI2MjAxNTc1LWM4ZWYyNDZhNDRlZDUyNTk5YThhZGQwOWRhZTkwZjAwNTlhNzA3MzY0ZWM0NWQxZmVkZjJhNWEzNTZkYmQ3ZTY
• Events
• Tooling
• Help
• Examples
SERVICEWORKE.RS
ANGULAR CONNECTNovember 6-7
CHROME DEV SUMMITNovember 12-13
THANK YOU!
Timmy Kokke
https://timmykokke.com
https://youtube.com/c/sorskoot
https://webxr.nl
@sorskoot
Timmy.kokke@centric.eu

Progressive Web Apps

Editor's Notes

  • #6 https://infrequently.org/2015/06/progressive-apps-escaping-tabs-without-losing-our-soul/
  • #12 Since IOS 11.3 also on IOS!
  • #19 Uber & Google maps Go
  • #21 Windows Hello
  • #28 https://preview.startbucks.com
  • #29 https://mobile.twitter.com
  • #30 https://pinterest.com
  • #31 https://Instagram.com
  • #32 Build demosite with bootstrap studio and deploy with FTP. LightHouse PWA Builder Create Icon Add manifest Add Service worker with offline page
  • #36 Was SonarWhal Started my MS Edge team, wanted open source and community driven
  • #43 Build demosite with bootstrap studio and deploy with FTP.
  • #48 Static index.html
  • #56 Maxime Salnikov Building an Angular PWA: Angular Service Worker or Workbox?