Drop-in replacement for next-themes

@wrksz/themes

Modern theme management for Next.js 16+ and React 19+. Fixes every known bug in next-themes and adds the features that were missing.

Everything next-themes should have been

Bug fixes and new features, zero API changes.

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.

Nested providers

Independent theme instances per section. Each provider manages its own state with a per-instance store.

Full type safety

Generic useTheme<AppTheme>() constrains setTheme to your exact theme union. No casting needed.

Flexible storage

localStorage, sessionStorage, or none. Disable persistence for forced or server-driven themes.

Zero runtime deps

No runtime dependencies. Ships only what the browser needs: a tiny inline script and React hooks.

Why not next-themes?

43 open issues, 16 open PRs, React 19 bugs unresolved.

React 19 script warningFixed
__name minification bugFixed
React 19 Activity / cacheComponents stale themeFixed
Multiple classes per themeFixed
Nested providersYes
sessionStorage supportYes
Disable storageYes
meta theme-color supportYes
Server-provided themeYes
Generic typesYes
Zero runtime dependenciesYes

What's next

The library is 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.