Create a storage instance backed by globalThis.localStorage. The underlying storage is resolved lazily from globalThis when the instance is used, so it can be imported before a browser-like global exists. Values persist across page reloads and are synced across tabs via the storage event when available.
// @twoslash-cache: {"v":1,"hash":"088a272689b725269922c7afba5cb8bac42148bc848708f323c0939c2712e2d5","data":"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="}
import { createLocalStorage } from '@studiometa/js-toolkit/utils';
const storage = createLocalStorage({ prefix: 'myapp:' });
storage.set('theme', 'dark');
storage.get('theme'); // 'dark'
storage.get('lang', 'en'); // 'en' (default)
// React to changes (including from other tabs)
const unsubscribe = storage.subscribe('theme', (value) => {
document.documentElement.dataset.theme = value;
});options(StorageOptions): Optional configuration.options.prefix(string): Key prefix for namespacing.options.serializer(StorageSerializer): Custom serializer. Defaults to JSON.
StorageInstance<T>: See createStorage for the full API.