Semantic HTML, styled.

Millet gives you a production-ready UI baseline with native HTML, without framework lock-in. Ship faster, keep markup clean, and maintain full control over accessibility and theming.

Built for shipping speed

Tiny bundle. Real components. Millet stays small while covering dialogs, forms, tabs, tables, and more.

No framework lock-in

Use it in plain HTML, React, Vue, Svelte, server-rendered apps, or static sites. Your markup remains portable.

Semantic-first architecture

Style native elements like <button>, <input>, and <dialog> directly with minimal attribute-driven variants.

Accessibility as a default

Keyboard navigation, focus visibility, and ARIA-aware enhancements are built in from day one.

Design system ready

Theme with a compact set of CSS tokens and evolve toward a full design system without rewriting components.

Why Millet?

Millet is heavily inspired by Oat by K Nadh from Zerodha, with a goal to make a faster and lighter implementation for modern product teams. Most UI stacks force a tradeoff between speed and maintainability. Millet removes that tradeoff by combining semantic HTML, tiny footprint, and practical defaults that are easy to customize. You move fast now without creating future UI debt.

About the author

Built with equal parts semantic obsession and a mild refusal to ship 400KB of CSS for one button. If your UI feels fast, the millet is doing its job :)

Install from npm and follow updates on GitHub.