Progressive web applications (PWAs) utilize an emerging set of technologies to create web-based applications with the responsiveness and user experience of a native app that can be installed on the home screen of a mobile device. PWAs are based on modern browser features that recognize an app’s progressive features and invoke what has come to be known as “gate prompting,” which invites the user to install the app on their home screen.
The primary technical components of a PWA are service workers and the app shell. Service workers are background scripts that run independently of the browser and offer features like script and data caching, server push handling, offline detection, and network service request interception. They interpose themselves between the browser and the network and respond programatically to various user actions. A PWA can use multiple service workers. The app shell is a model or pattern for controlling a PWA, implemented as a script. It coordinates the actions of service workers in responding to user interface and network events. The shell loads quickly and provides a means for the application to offer fast response times and a variety of native-feeling services to the user.
Brian Capouch and Danilo Zekovic offer a high-level overview of the emerging architecture of progressive web applications, examining code snippets that implement various components and functions and exploring the tools that provide the PWA developer with information about the application, in terms of its adherence to best practices and performance under real-world conditions.
Danilo Zekovic is a software engineer at Symphony, where he develops web applications for clients. He currently lives in Novi Sad, Serbia, where he is attending the graduate school at the University of Novi Sad majoring in software engineering. Danilo is interested in anything that involves programming, web development, and related technologies. Danilo holds a degree from Saint Joseph’s College.
Comments on this page are now closed.
©2017, O'Reilly Media, Inc. • (800) 889-8969 or (707) 827-7019 • Monday-Friday 7:30am-5pm PT • All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners. • firstname.lastname@example.org