@wrksz/themes
Modern theme management for Next.js 16+ and React 19+. Every bug fixed. Every missing feature added.
Features
Everything next-themes should have been
React 19 ready
Fixes the inline script warning, Activity/cacheComponents stale theme, and the __name minification bug.
Drop-in replacement
Same API as next-themes. Swap the import and you are done. No migration needed.
Hybrid storage
Use storage="hybrid" for cookie-first SSR correctness plus cross-tab sync via localStorage.
Nested providers
Independent theme instances per section. Each provider manages its own state with a per-instance store.
Full type safety
createThemes(...) infers your theme union once and types useTheme, useThemeValue, and setTheme everywhere.
Zero runtime deps
No runtime dependencies. Ships only what the browser needs: a tiny inline script and React hooks.
Comparison
Why not next-themes?
43 open issues, 16 open PRs, React 19 bugs unresolved.
| next-themes | @wrksz/themes | |
|---|---|---|
| React 19 script warning | Bug | Fixed (useServerInsertedHTML)Fixed |
| __name minification bug | Bug | FixedFixed |
| React 19 Activity / cacheComponents stale theme | Bug | Fixed (useSyncExternalStore)Fixed |
| Multiple classes per theme | Bug | Fixed (correct class removal)Fixed |
| Nested providers | No | per-instance storeYes |
| sessionStorage support | No | YesYes |
| cookie storage (zero-flash SSR) | No | storage="cookie"Yes |
| Disable storage | No | storage="none"Yes |
| meta theme-color support | No | themeColor propYes |
| Server-provided theme | No | initialTheme propYes |
| Always follow system preference | No | followSystem propYes |
| disableTransitionOnChange per property | No | CSS string + inline scriptYes |
| Read theme outside React | No | getTheme()Yes |
| Generic types | No | useTheme<AppTheme>()Yes |
| Zero runtime dependencies | YesYes | YesYes |
What's next
Actively developed and growing
Framework agnostic
Remix, Vite, SvelteKit, and any React-based framework. Not just Next.js.
More features
New APIs, more storage adapters, and deeper control over theme resolution.
Open to contributions
Bug reports, feature requests, and PRs are welcome on GitHub.