Documentation Index
Fetch the complete documentation index at: https://docs.go-mizu.dev/llms.txt
Use this file to discover all available pages before exploring further.
Service workers enable offline support, push notifications, and Progressive Web App (PWA) functionality.
Basic Service Worker
Create Service Worker
// public/sw.js
self.addEventListener('install', (event) => {
console.log('Service Worker installing')
})
self.addEventListener('activate', (event) => {
console.log('Service Worker activating')
})
self.addEventListener('fetch', (event) => {
// Handle fetch events
})
Register in App
// src/main.ts
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js')
.then(reg => console.log('SW registered', reg))
.catch(err => console.log('SW registration failed', err))
}
app.Use(frontend.WithOptions(frontend.Options{
ServiceWorker: "sw.js", // Sets proper scope headers
}))
Caching Strategies
Cache First
// sw.js
const CACHE_NAME = 'v1'
self.addEventListener('fetch', (event) => {
event.respondWith(
caches.match(event.request)
.then(response => response || fetch(event.request))
)
})
Network First
self.addEventListener('fetch', (event) => {
event.respondWith(
fetch(event.request)
.catch(() => caches.match(event.request))
)
})
Workbox
Use Workbox for production service workers:
npm install workbox-cli -D
// workbox-config.js
module.exports = {
globDirectory: 'dist/',
globPatterns: ['**/*.{html,js,css,png,jpg,svg}'],
swDest: 'dist/sw.js',
runtimeCaching: [{
urlPattern: /^https:\/\/api\./,
handler: 'NetworkFirst',
}],
}
Build:
npx workbox generateSW workbox-config.js
PWA Manifest
// public/manifest.json
{
"name": "My Mizu App",
"short_name": "MizuApp",
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#000000",
"icons": [
{
"src": "/icon-192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/icon-512.png",
"sizes": "512x512",
"type": "image/png"
}
]
}
<!-- index.html -->
<link rel="manifest" href="/manifest.json">
Next Steps
Production
Production optimization
Workbox
Workbox documentation