This plugin is powered by Workbox and other good stuff.
👋 Share your awesome PWA project 👉 here
Features
- 0️⃣ Zero-config for registering and generating service worker out of the box
- ✨ Optimized precaching and runtime caching
- 💯 Maximal Lighthouse score
- 🎈 Easy-to-understand examples
- 📴 Offline support with fallbacks (example)
- 📦 Uses Workbox and workbox-window v6
- 🍪 Works with cookies out of the box
- 🔉 Default range requests for audios and videos
- ☕ No custom server needed for Next.js 9+ (example)
- 🔧 Handle PWA lifecycle events (opt-in - example)
- 📐 Custom worker to run extra code with code splitting and Typescript support (example)
- 📜 Public environment variables are available in custom workers
- 🐞 Debug service worker in development mode without caching
- 🌏 Internationalization support (a.k.a i18n) with
next-i18next
(example) - 🛠 Configurable by Workbox's options for GenerateSW and InjectManifest
- ⚡ Supports blitz.js (simply add
blitz.config.js
) - 🚀 Spin up a GitPod and try out examples in rocket speed (or use
create-next-app
to create a brand new Next.js app with them (for example, runpnpm create next-app --example https://github.com/DuCanhGH/next-pwa/tree/master/examples/basic
to create a new Next.js app using thebasic
example))
NOTE 1 -
next-pwa
version 2.0.0+ should only work withNext.js
9.1+, and static files should only be served through thepublic
directory.NOTE 2 - If you encounter the error
TypeError: Cannot read property **'javascript' of undefined**
during build, please consider upgrading to Webpack 5 innext.config.js
.NOTE 3 -
@ducanh2912/next-pwa
currently doesn't support Turbopack, but I will start working on it as soon as we get our hands on Turbopack. It may not use Workbox anymore depending on Workbox's maintain status, however.