Next.js Discord

Discord Forum

Issues on npm run dev, but not on npm run build with static export

Unanswered
American Sable posted this in #help-forum
Open in Discord
American SableOP
app/page.tsx
"use client";
import { RedirectType, redirect } from "next/navigation";
import generalConfig from "@/app/config/general.json";

export default function RootPage() {
    let storedLang = generalConfig.defaultLanguage;
    if (typeof localStorage !== "undefined") {
        storedLang = localStorage.getItem("language") || "";
    }

    if (!generalConfig.languages.includes(storedLang)) {
        localStorage.setItem("language", generalConfig.defaultLanguage);
        return redirect(generalConfig.defaultLanguage, RedirectType.replace);
    }

    return redirect(storedLang, RedirectType.replace);
}


This works great after npm run build and npx serve.
But on npm run dev it results always to the defaultLang

1 Reply

American SableOP
This seem to work, is that the "recommended" solution?
"use client";
import { RedirectType, redirect } from "next/navigation";
import generalConfig from "@/app/config/general.json";
import dynamic from "next/dynamic";

const Root = dynamic(
    () => {
        const storedLang = localStorage.getItem("language") || "";

        if (!generalConfig.languages.includes(storedLang)) {
            localStorage.setItem("language", generalConfig.defaultLanguage);
            return redirect(
                generalConfig.defaultLanguage,
                RedirectType.replace
            );
        }

        return redirect(storedLang, RedirectType.replace);
    },
    { ssr: false }
);

// TODO: Add metatags based on the default language
export default function RootPage() {
    return (
        <html lang={generalConfig.defaultLanguage}>
            <body>
                <Root />
            </body>
        </html>
    );
}