 Webhid, WebNFC, and WebSerial have all graduated from their origin trial and are now available and stable. We're closing a loophole that a few developers have used to skirt the PWA installability checks. WebShare and WebShareTarget arrive on desktop, and there's plenty more. I'm Pete LaPage. Let's dive in and see what's new for developers in Chrome 89. I'm really excited about Webhid, WebNFC, and WebSerial. They open up new scenarios for users that were never possible before, interacting with real world hardware. It allows makers to connect to fun and quirky hardware, video conferencing apps to use those dedicated telephony buttons on specialized speakers, or any other number of use cases. Using WebSerial and about 60 lines of code, Andre created a page that can interact with the MicroPython REPL on a Raspberry Pi Pico. It's also used by Esprino and their web-based IDE. At CDS last year, Francois wrote a fun memory-style game using WebNFC. You had to tap the right card in the right order to win. And my favorite, Bramus used WebHid to connect to a stream deck, building a daft punk drum pad. Whether it's your site that interacts with your hardware, or your hardware that interacts with lots of sites, users win because they don't need to install special drivers or software. Getting started guides and some cool demos are at web.devs slash devices, and linked in the description. Offline support has been a key part of the progressive web app installability criteria since the beginning. Like any other installed app, users expect it to work reliably, it should work fast, and they should never, ever see the offline dyno. Later this year, we plan to close a loophole that allows a few sites to pass the installability criteria without an offline experience. If your PWA already has an offline experience, you're all set. There's no action required. But if you don't, it's time to add one. Starting in Chrome 89, if your PWA doesn't provide a valid response when offline, you'll see a warning in Chrome DevTools under the issues tab, and Lighthouse will indicate there's an issue. You can decide what kind of experience you want to provide. Now ideally, you should provide as much of the experience as possible. But at a minimum, it can be as simple as an offline fallback page. Enforcement will start in Chrome 93 later this year. Check out our post on developer.chrome.com for more details. If you're not sure where to get started, check out Workbox. It has a set of libraries that can power a production-ready service worker for your PWA. Or for a simple offline fallback page, we've got some code that you can just copy and paste on web.dev, so check the description for more details. If your site allows users to create, edit, or interact with files, you should be using the WebShare and WebShare target APIs. WebShare makes it possible for users to send files or other data to installed apps on their device. For example, sending a photo from Google Photos to Twitter. To register as a target so that other apps can share files or data with you, you'll want to use the WebShare target API. These APIs have been available on mobile for some time, but they're now supported on Chrome OS and Windows. Check web.dev slash webshare or webshare target for getting started guides. And of course, there's plenty more. Chrome now allows top-level await within JavaScript modules. To reduce confusion for users, we've updated the icon that's shown in the OmniBox for installable PWAs. And if you've used a trusted web activity to make your PWA available in the Play Store for Chrome OS, you can sign up for the Digital Goods API Origin Trial. All the details, including links, docs, specs, are in the updates post linked in the description. Hit that subscribe button so that you don't miss the latest Chrome DevTools video or any of the other fun videos that we have. I'm Pete LaPage, and as soon as Chrome 90 is released, I'll be right here to tell you what's new in Chrome.