FAQ
Answers to the questions people ask most about NibCSS.
Isn't this just inline styles?#
No. Inline style cannot express hover, focus, media queries, dark mode or pseudo-elements, cannot be
cached or deduplicated, and has the highest specificity. NibCSS generates real classes in a real stylesheet.
Does it work without JavaScript?#
Yes. With the build plugin and rewrite: true — or the CLI — static markup is plain HTML plus a CSS file.
How big is the stylesheet?#
One rule per distinct rule you write, shared by every element that uses it. Typical apps stay in the low tens of kilobytes. See Performance.
Can I use any CSS value?#
Yes — colours, calc(), clamp(), var(), gradients, anything CSS accepts.
Can I use it with Tailwind or existing CSS?#
Yes. NibCSS selectors are one class strong and the reset sits in a cascade layer, so both coexist.
What about SSR and hydration?#
Class names are deterministic, so server and client agree. Dynamic CSS is collected with NibStyles /
collectNibStyles. See SSR.
Why do my recipes do nothing when used as class="btn"?#
Recipes compile to hashed classes. Use nib="btn" or useNib("btn").
Which browsers are supported?#
All evergreen browsers. The generated CSS is standard; the runtime needs MutationObserver.
Why are diagnostics in Uzbek?#
uz is the default language. Set language: "en" (or ru, tr, es, de, zh) in the config.
Is it production-ready?#
NibCSS is at 1.x with a stable syntax. Pin versions, and read the changelog when upgrading.
Is there a VS Code extension?#
Not yet. TypeScript types for the nib attribute and the dev overlay cover most of what an extension would.