Swoff Swoff

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 install

Configure 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:

  1. SW Templateswoff/sw-template.js
  2. Build Scriptswoff/sw-generator.js
  3. Client Registrationswoff/sw-injector.js
  4. TypeScript Declarationsswoff/swoff.d.ts

Output Directory

SvelteKit's output directory depends on your adapter:

AdapterOutput Directory
@sveltejs/adapter-auto (Vercel).vercel/output/
@sveltejs/adapter-netlifynetlify/
@sveltejs/adapter-nodebuild/
@sveltejs/adapter-staticbuild/

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 build

Next Steps

On this page