Progressive Web Apps are all about an amazing experience. You PWA should combine the best of the web and the best of apps. In the example above (yep, the ‘Noter web app‘) you can see that it is useful from the very first visit in a browser tab, to the launch from a home screen. As the user progressively builds a relationship with the App over time, it becomes more and more powerful. It loads quickly, even on flaky networks, it persistent and your notes are always there. It got an icon on the home screen and loads as a top-level, full screen experience. If you wish to add push notifications (which are great way to re-engage with your users) – pay attention to the tips in the image below.
- First step: I strongly recommend trying out the PWA code lab so you understand how the approach to this type of app may be similar (or not) from what you’re used to do.
- Tech: Evaluate whether you’re going to just use vanilla JS for your app or a library/framework. See here for barebones PWA config or try Web Starter Kit for a starting point with a build process (=Gulp). Your PWA should supports the application shell architecture for faster first-paint and persistent.
- Offline support: There are few libraries for helping you with Service Worker pre-caching (sw-precache) and runtime caching (sw-toolbox). You can check this code lab for building your first offline web app as a starting point.
- User Interface: Like anything on the web, there are lots of options for your UI. Some of the example PWAs take advantage of Material Design and there are libraries for using it available for vanilla JS, Polymer Paper elements, Angular Material and community efforts like Material UI for React.
- Icons: I find both iconfinder.com and realfavicongenerator to be good resources. If you have the budget, it’s always great to get something polish from a designer.
- Performance: Please follow the RAIL performance model:
- First load (network-bound), First paint at 1s or sooner, Speed Index of 1,000 or less, <100ms for response, <16ms for each frame.
- Second load: first paint at 300ms or sooner, Speed Index of 1,000 or less.
- First load (network-bound), 3G (normal, as defined by WPT): First paint at 2s or sooner (including TLS handshake), Speed Index of 3,000 or less.
- Second load (disk-bound because SW): First paint at 300ms or sooner, Speed Index of 1,000 or less.
- Test your work with WebPageTest and Chrome DevTools.
- Smaller Pictures – A great web app that will help you shrink photos.
- Air Horner – The ‘must have’ web app for the olympics in the summer.
- Voice Memos – Very useful when you have conversations with your spouse.
- Offline Wikipedia – If you need to read something on the plane.
- Guitar Tuner – For the ones that needs to tune their guitar.
- Zuperkulblog – Good if you thinking on a PWA for publishers.
- Snapdrop – an Apple Airdrop in HTML.
- More on this pwa-list.
- Alex Russell – intro post to the topic.
- The Angular team have also started an early ng2-application-shell project based on the app-shell architecture.
- Addy Osmai great post: “Getting started with PWA”
- FlipKart’s case study – With lots of good technical tips.
Be strong and build something amazing!