spark-html-persist
v1.0.0
Published
Persist a spark-html store across reloads in one line — hydrate from localStorage/sessionStorage, save on every change.
Maintainers
Readme
⚡ spark-html-persist
Persist a spark-html store across
reloads — one line. Hydrates from storage on boot, saves on every change.
Built on store() + subscribe(), one dependency.
import { persist } from 'spark-html-persist';
// a normal store(), but it survives reloads:
persist('settings', { theme: 'dark', fontSize: 14 });<!-- any component -->
<script>const s = useStore('settings');</script>
<button onclick="{s.theme = s.theme === 'dark' ? 'light' : 'dark'}">{s.theme}</button>Change s.theme, reload the page — it's still there.
Install
bun add spark-html-persistAPI
persist(name, initial?, options?)Returns the same store as store(name) — useStore(name) reads it everywhere.
Saved values layer on top of initial, so adding a new default key works
even for users with an older saved blob.
| Option | Default | Meaning |
|--------|---------|---------|
| key | spark:<name> | Storage key. |
| storage | localStorage | Any Storage — pass sessionStorage for per-tab state. |
| include | all keys | Persist only these keys. |
| exclude | — | Persist everything except these keys. |
persist('user', { name: '', token: '', draft: '' }, {
storage: sessionStorage,
exclude: ['token'], // keep secrets out of storage
});Writes are coalesced to one setItem per tick, and storage errors (quota,
private mode, corrupt JSON) fall back silently to the defaults — never throws.
The Spark family
Small, single-purpose packages that share one philosophy: no compiler, no virtual DOM, no build step required — built for humans who love hand-writing their web apps. Add only what you use.
| Package | What it does |
|---|---|
| spark-html | The runtime — components, reactivity, stores, forms, scoped styles. ~14.4 kB gzip, 0 deps. |
| spark-html-bun | Dev server, bundler & preview on Bun — scoped HMR, no-build dev, post-build pipeline. |
| spark-html-router | <template route> routing — nested routes/layouts, route.query, active links. |
| spark-html-theme | Dark/light/system theming in one line — persisted, no flash. |
| spark-html-head | Reactive <title>/<meta> per route + a head store. |
| spark-html-motion | Enter/leave transitions on if/each blocks — transition="fade|slide|scale". |
| spark-html-devtools | In-page devtools — live stores, component tree, patch activity. |
| spark-html-query | Declarative async data — a self-fetching store (loading/error/data/refetch). |
| spark-html-persist | Persist stores to localStorage/sessionStorage in one line. |
| spark-html-websocket | A WebSocket as a reactive store — auto-reconnect, JSON, send(). |
| spark-prerender | Build-time SEO prerender + sitemap/robots — no SSR server. |
| spark-ssr | Full-stack SSR on Bun — the template is the backend: inferred DB, REST CRUD, auth, live updates. Precompiled + response-cached: fast by default. |
| spark-html-image | Build-time image optimization — webp/avif + responsive srcset, zero config. |
| spark-html-font | Font loading optimizer — preload + size-adjusted fallbacks, no FOUT. |
| spark-html-manifest | PWA manifest + icons + head tags (and optional service worker) from one config. |
| spark-html-offline | Offline URL imports — a service worker that caches CDN components. |
| spark-html-sri | Subresource Integrity — hash + verify assets and remote components. |
| create-spark-html-app | Scaffold a spark-html app in one command. |
| prettier-plugin-spark | Prettier for components — formats <script>/<style>, markup stays byte-for-byte. |
| spark-html-language-server | LSP — diagnostics, go-to-definition, prop autocomplete, hover docs. |
