import { Dispatch, SetStateAction, useEffect, useState } from 'react'; export function usePersistedState( key: string, defaultValue: S, ): [S | undefined, Dispatch>] { const [state, setState] = useState(() => { try { const item = localStorage.getItem(key); return JSON.parse(item || String(defaultValue)); } catch (e) { console.warn('Failed to retrieve persisted value from store.', e); return defaultValue; } }); useEffect(() => { localStorage.setItem(key, JSON.stringify(state)); }, [key, state]); return [state, setState]; }