diff --git a/packages/core/src/hooks/use-local-storage.js b/packages/core/src/hooks/use-local-storage.js index 283e49d..e143c24 100644 --- a/packages/core/src/hooks/use-local-storage.js +++ b/packages/core/src/hooks/use-local-storage.js @@ -3,13 +3,15 @@ import { useState, } from '@flecks/react'; +const useBrowserLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : () => {}; + const useLocalStorage = (key, defaultValue) => { const [value, setValue] = useState(defaultValue); - useLayoutEffect(() => { + useBrowserLayoutEffect(() => { setValue(JSON.parse(window.localStorage.getItem(key) || JSON.stringify(defaultValue))); // eslint-disable-next-line react-hooks/exhaustive-deps }, [key]); - useLayoutEffect(() => { + useBrowserLayoutEffect(() => { window.localStorage.setItem(key, JSON.stringify(value)); }, [key, value]); return [value, setValue];