Skip to content

perf: prevent theme flash with blocking script in _document and layout#223

Open
AbuJulaybeeb wants to merge 1 commit into
StellarFlow-Network:mainfrom
AbuJulaybeeb:feat/dark-mode-repaint-optimization
Open

perf: prevent theme flash with blocking script in _document and layout#223
AbuJulaybeeb wants to merge 1 commit into
StellarFlow-Network:mainfrom
AbuJulaybeeb:feat/dark-mode-repaint-optimization

Conversation

@AbuJulaybeeb
Copy link
Copy Markdown
Contributor

Created src/pages/_document.tsx with a blocking script in that reads the stored theme from localStorage (defaulting to "dark") and applies the theme class to document.documentElement before page load.
Modified src/app/layout.tsx to inject the same blocking <script> element inside the to prevent the white background flash on initial load and route transitions in the Next.js App Router.
Why it was done

Without this blocking script, the document element is rendered before next-themes hydrates, causing the background to default to white (from the :root styles) and create a visible white flash before the dark theme stylesheet is parsed and applied.
How it was verified

Verified syntax, file paths, and staging.
Ran npm install and npm run build (Note: The build output identified unrelated syntax/semantic errors on upstream main in FloatingSidebar.tsx and logs/page.tsx).
Closes #109

@drips-wave
Copy link
Copy Markdown

drips-wave Bot commented May 29, 2026

@AbuJulaybeeb Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🌑 Perf | Dark Mode Repaint Optimization

1 participant