ReferenceError: localStorage is not defined

`localStorage` finns inte i Node.js och kan inte användas under server-rendering.

Förklaring

localStorage och sessionStorage är Web Storage API:er som enbart finns i webbläsaren. Next.js kör server-rendering i Node.js, där dessa objekt saknas helt. Refererar en komponent till localStorage i render-fasen kastas det här felet.

Ett vanligt misstag är att läsa från localStorage för att initialisera ett state-värde direkt i useState-anropet. Det fungerar i en vanlig React-app utan server-rendering men kraschar i Next.js.

Vanliga orsaker

localStorage-anrop utanför useEffect. Initial useState(localStorage.getItem(...)). Tredjepartsbibliotek som läser localStorage vid import.

Lösning

Läs alltid från localStorage inuti useEffect:

const [theme, setTheme] = useState("light");

useEffect(() => {
  const saved = localStorage.getItem("theme");
  if (saved) setTheme(saved);
}, []);

Om du behöver värdet för initial rendering, acceptera att den första renderingen visar ett standardvärde och uppdateras när useEffect körs. Det kallas hydration-safe initialisering.