Skip to content

Instantly share code, notes, and snippets.

@eyeseast
Last active January 28, 2025 15:40
Show Gist options
  • Save eyeseast/ca323928045efeb0499339f109d72db6 to your computer and use it in GitHub Desktop.
Save eyeseast/ca323928045efeb0499339f109d72db6 to your computer and use it in GitHub Desktop.
A Svelte store that saves to localStorage
<script>
import { onMount } from "svelte";
import { writable } from "svelte/store";
import { saveStore } from "localstorage.js";
let features = writable([])
onMount(() => {
saveStore(features, "$features", { storage: localStorage });
}
</script>
export function saveStore(
store,
key,
{ storage = sessionStorage, serialize = JSON.stringify, deserialize = JSON.parse }
) {
if (!store || !key) return;
const saved = storage.getItem(key);
if (saved) {
store.set(deserialize(saved));
}
return store.subscribe($value => {
storage.setItem(key, serialize($value));
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment