Explore
FAQ
Answers to the questions developers ask in their first ten minutes with Nova.
If your question isn't here, open a discussion on GitHub. Every question that shows up twice ends up in this file.
Getting started
Is Nova a package or a source library?
Both. Install the primitives from npm for stability, or copy the source into your app via the CLI when you want full ownership.
Which frameworks are supported?
React 19 with Tailwind v4 is the primary target. Works with Next.js, TanStack Start, Remix, Vite, and Astro islands. RSC is supported for stateless primitives.
Do I have to use Tailwind?
For v0.1, yes — styling is Tailwind v4 utility classes with CSS-first tokens. Framework-agnostic CSS packages are on the roadmap for v0.4.
Can I use Nova with an existing UI library?
Yes. Nova composes cleanly alongside shadcn/ui, Chakra, MUI, or Radix primitives — migrate route-by-route rather than in one big rewrite.
Comparisons
How is Nova different from shadcn/ui?
Nova is opinionated about material and motion. Sculpted depth, spring physics, and AI-native primitives are first-class — not a theming exercise on top of neutral primitives.
Is Nova heavier than Radix?
No. Nova wraps Radix primitives where semantics matter; the styling layer is compiled Tailwind. There's no runtime CSS-in-JS.
Why not just use Tailwind UI?
Tailwind UI is HTML snippets. Nova is composable React with types, keyboard flows, and accessibility contracts you can trust.
Theming & tokens
How does theming work?
Every color is an OKLCH semantic token defined in CSS. The ThemeProvider swaps a data attribute; the cascade handles the rest. Generate custom palettes via the CLI's `theme` command.
Can I bring my own palette?
Yes. Override the tokens in your own CSS file — Nova components read from CSS variables, so you never fork a component to rebrand.
How do I add a new theme?
Add a `[data-theme='name']` block in your CSS overriding the token variables. ThemeProvider will honor any theme name you pass.
Accessibility
Is Nova accessible?
WCAG 2.2 AA is the baseline, not the ceiling. Every primitive uses Radix under the hood; focus rings, keyboard flows, and ARIA attributes are audited in CI with axe-core.
Does Nova respect prefers-reduced-motion?
Yes. Decorative animations are held; meaningful motion (spinners, progress) is preserved but slowed.
How do you handle focus on modals?
Focus is trapped inside the overlay and restored to the trigger on close — Radix handles the choreography, Nova styles the ring.
Performance & bundle
What's the bundle size cost?
Median gzipped size is under 4KB per primitive, treeshaken. The full v0.1 foundation ships under 22KB gzipped when every component is used.
Does Nova ship a runtime CSS engine?
No. All styling is compiled Tailwind. There's no emotion, no styled-components, no runtime theme walk.
Is SSR supported?
Yes. Every stable primitive is SSR-safe. Client-only widgets are wrapped in <ClientOnly> or dynamically imported.
Roadmap & licensing
What's the license?
MIT. Use it for anything, forever. Contribute back if you extend it — but you don't have to.
Will you charge for Nova?
The library stays MIT. Paid extras (Pro templates, a hosted theme studio) may exist later, but the core is free forever.
How can I contribute?
Open a discussion on GitHub before a large PR. For docs typos, small tweaks, and new recipes — just open a PR.