 My name is Adriana Jara. I'm a developer advocate in Chrome OS. I will share five tips to make your PWA stand out in a good way. Earlier this year, I was a developer on a progressive web app here at Google. And in the beginning, our users had a lot of questions about PWA's. How do you install a website? What happens if you don't install it right away? What happens when you are offline? How does it manage local resources? These are the lessons I learned from answering their questions. Hopefully, they'll help you build and experience your users we love. Here we go. Number one, there to be offline. When a user is offline, they don't expect to be able to get to a website. Let alone enjoy any of its features. As a developer, you might even be convinced that your app just doesn't make sense offline. And because a PWA requires an offline experience, you can create a custom page that asks users to come back later when there is a connection. Instead, how about creating different features? You can't give users full functionality, but some parts could still work with the use of device storage and caching. For example, users can't get to the latest posts, but they could interact with previously retrieved posts. They could comment and add reactions. You can save those interactions locally and sync them later when they are back online. Brand new searches are impossible, but if you have cashed recent results, the answer they are looking for may be there. The result? Happy user. And you didn't even need the internet. By the way, since you don't know when a user is going to be offline or when the phone is going to be turned off, it's a good practice to save snapshots in workflows so that the users don't lose a lot of work in case of an interruption. Number two, use device storage wisely. On the web, our apps seem to have unlimited storage, but in a device, it's a different story. There are hard limits. Keep tabs on how much space is available. You don't want your app to just stop working in the middle of recording a video. You can use Storage Manager to calculate available space and then show the user warnings so they can take action. Also, choose wisely which method is more appropriate to save the local data. Some options are Cache API, which, by the way, can be accessed directly from the window object. It doesn't need to go through a service worker. IndexedDB, a good use case here are operations that need a transaction. Or the native file system API. It is not fully available yet, but you can start to experiment with it. Check out the link in the description for more info. Also, don't keep local data longer than necessary. Once you can sync the data to the cloud, free app space in the device. And clear all local data when appropriate. For example, when the user signs out. Number three, embrace multi-device journeys. Users have multiple devices. They jump from one another and pick up where they left. At least that is their expectation. As users, we want to start a task on our computer and send it to our phone to be continued and vice versa. It is pretty convenient to take a picture with our phone, but also a big screen and a keyboard are nice to edit photos and type captions. Another example is content consumption. We consume content on our phone in a different way than we do on a larger screen. Users want to be able to take advantage of the real estate that is available and consume content in the most efficient and enjoyable way for them. Building different layouts also helps with making your app more accessible and inclusive. Your users know that no matter what device they are using, your app will provide the appropriate experience for their journey across different form factors. Number four, bring your users with you. Progressive web apps are still new for users. They might not realize they have landed on a website with special capabilities. Help them along the way. Prompt your users to install your app when it is convenient. For a while, we used the browser's default prompt. Unfortunately, it would interrupt our users. In the middle of our getting started flow, the prompt would go away and users would forget to install our app. Now, you can capture the before-installed prompt event and prompt the users at a later time. You can use headers, banners, menus, and others. I added a link to an article in the description that walks you through different patterns. You can also help your users by adding tips in your UI the first time they go through a workflow. You can highlight things like what data will be available offline or what parts of your app will work in the background. Finally, don't ask for permissions until the user is trying a specific feature. Don't ask for camera access until the user is going to take a picture. This makes the user understand why you need permissions and they will be more willing to grant them. Number five, beware of service workers. Service workers are powerful and are central in implementing several of my tips. For example, you can use background sync to upload large amounts of data, even when the app is closed. They also make possible to make good use of notifications and re-engage your users. Maybe to remind your users of unfinished tasks or of new content. However, service workers can be tricky. The best approach is to generate it. There are tools like Workbox that can help you generate a service worker with the strategies your app needs. Finally, keeping your service worker code to a minimum will also make your app easier to test. This way, you'll implement behaviors in helper classes that can be better unit tested. Thank you for watching. I hope you got some new ideas to make your PWA give users the best of the web and native experiences. I include the links in the description to help you implement these tips. Don't forget to subscribe and share with your friends.