SvelteKit
Set up Swoff with SvelteKit (client-only mode).
SvelteKit
Adapter for SvelteKit with client-only rendering. Swoff runs client-only — SvelteKit server features are not used.
Create Project
npm create svelte@latest my-app
cd my-app && npm installConfigure Client-Only
// svelte.config.js
const config = {
kit: {
adapter: adapter({ fallback: "index.html" }), // SPA mode
},
};Entry Point (src/routes/+layout.svelte)
<script>
import { onMount } from 'svelte'
import { initServiceWorker } from '../../swoff/sw-injector'
onMount(() => { initServiceWorker() })
</script>
<slot />Add Patterns
Copy from Patterns:
- SW Template →
swoff/sw-template.js - Build Script →
swoff/sw-generator.js - Client Registration →
swoff/sw-injector.js - TypeScript Declarations →
swoff/swoff.d.ts
Output Directory
SvelteKit's output directory depends on your adapter:
| Adapter | Output Directory |
|---|---|
@sveltejs/adapter-auto (Vercel) | .vercel/output/ |
@sveltejs/adapter-netlify | netlify/ |
@sveltejs/adapter-node | build/ |
@sveltejs/adapter-static | build/ |
Update your swoff/sw-generator.js to write to the correct output directory for your deployment target.
Update package.json:
{
"scripts": {
"build": "vite build && node swoff/sw-generator.js"
}
}Build & Test
npm version patch
npm run buildNext Steps
- Svelte Stores —
pwaUpdate,swProgress - Svelte Components —
UpdatePrompt,SWProgressBar
Swoff