useLocalStoragebrowser

useLocalStorage

NewSSR SAFE

Syncs state with localStorage across browser sessions.

$ pnpm dlx shadcn@latest add @byphongphan/use-local-storage
Requires @byphongphan in components.json
browser
Loading preview...

Installation

$ pnpm dlx shadcn@latest add @byphongphan/use-local-storage
Requires @byphongphan in components.json

Usage

import { useLocalStorage } from "@/shared/hooks"
export function ThemeToggle() { const [theme, setTheme] = useLocalStorage<"light" | "dark">("app_theme", "dark")
return ( <button onClick={() => setTheme(theme === "dark" ? "light" : "dark")}> Current Theme: {theme} </button> )}

Props & Parameters

ParamTypeDefaultDescription
keystring—Unique key identifier in browser localStorage.
initialValueT | (() => T)—Fallback initial value if no stored value exists in localStorage.
options.serializer(value: T) => stringJSON.stringifyCustom serializer function for complex objects or models.
options.deserializer(value: string) => TJSON.parseCustom deserializer function.

Returns

ReturnTypeDescription
storedValueTCurrent synchronized state value from localStorage.
setValue(value: T | ((prev: T) => T)) => voidSetter function supporting direct values and functional updater callbacks.
removeValue() => voidRemoves the key from localStorage and resets state back to initial value.

Command Palette

Quick search and commands navigation