Once UI Blog
Posts
Once UI
Once UI 2.5: reactions that move
Once UI 2.4: ready for AI apps
Once UI 3.0 beta: one way to say it
Stack languages: your app in Hungarian, or in two
Stack store: your shop on your own site
Liquid Metal: chrome that never sets
Chirio, redesigned
Styled screenshots in Chirio
Once UI 2.3: made for real apps
Frametic is now a video and capture studio
Agents write about 40% less code from Stack
Magic Portfolio, now on Once UI 2
Frametic MCP: let your agent film your site
Once UI Stack: your site as a desktop app
Once UI Stack, redesigned
Stack: teams and billing
Prism Glow: soft prism light behind your sign-in screen
Once UI for React Native: the same props on a phone
Once UI 2.2: chat, forms and mobile
Dither: your own image or video as a dithered print
Once UI 2.1: The pieces apps kept asking for
Once UI 2.0: A system an AI can build with
What made Once UI 2.0 possible
Once UI 2.0 alpha: Measured, not assumed
Colour arrives in pairs
Once UI 1.8: Polish as a feature
Once UI 1.7: Form with Intent
From products to systems: a new service model
Magic Journal: A different medium for long-form writing
Supa Social: The next milestone of our journey
Once UI is open source. Here's how we plan to keep it that way.
Designing a timeless, AI-native brand
Once UI 1.5: Curiosity in code
Once UI 1.4 migration guide: The breakpoint object
Launching in the AI-native era: A guide for indie builders
The first design system for indie builders
Builder Stories
Side and Once UI: From café website to reservation system
SatisPro and Once UI: Scaling smarter review management
IQON and Once UI: Scaling with a design system
Dev: Blending science and code with Once UI
JExcellence and Once UI: Turning experiments into enterprise apps
OsmyReal: Launching a platform for mobile gaming with minimal coding
TrademarkTrademark
Ctrl k
Search…
Sign up
Once UI Blog
Posts
Once UI
Once UI 2.5: reactions that move
Once UI 2.4: ready for AI apps
Once UI 3.0 beta: one way to say it
Stack languages: your app in Hungarian, or in two
Stack store: your shop on your own site
Liquid Metal: chrome that never sets
Chirio, redesigned
Styled screenshots in Chirio
Once UI 2.3: made for real apps
Frametic is now a video and capture studio
Agents write about 40% less code from Stack
Magic Portfolio, now on Once UI 2
Frametic MCP: let your agent film your site
Once UI Stack: your site as a desktop app
Once UI Stack, redesigned
Stack: teams and billing
Prism Glow: soft prism light behind your sign-in screen
Once UI for React Native: the same props on a phone
Once UI 2.2: chat, forms and mobile
Dither: your own image or video as a dithered print
Once UI 2.1: The pieces apps kept asking for
Once UI 2.0: A system an AI can build with
What made Once UI 2.0 possible
Once UI 2.0 alpha: Measured, not assumed
Colour arrives in pairs
Once UI 1.8: Polish as a feature
Once UI 1.7: Form with Intent
From products to systems: a new service model
Magic Journal: A different medium for long-form writing
Supa Social: The next milestone of our journey
Once UI is open source. Here's how we plan to keep it that way.
Designing a timeless, AI-native brand
Once UI 1.5: Curiosity in code
Once UI 1.4 migration guide: The breakpoint object
Launching in the AI-native era: A guide for indie builders
The first design system for indie builders
Builder Stories
Side and Once UI: From café website to reservation system
SatisPro and Once UI: Scaling smarter review management
IQON and Once UI: Scaling with a design system
Dev: Blending science and code with Once UI
JExcellence and Once UI: Turning experiments into enterprise apps
OsmyReal: Launching a platform for mobile gaming with minimal coding
Sponsored
Aveiro
aveiro.app
Sponsored
Aveiro
aveiro.app
TrademarkTrademark
Once UIDocumentationBlog
© Once UI. All rights reserved.
Built with Aveiro
Release

Once UI 2.1: The pieces apps kept asking for

Once UI 2.1 is out. Tabs, Drawer, DataTable, Pagination and Breadcrumbs join the system, Sass is no longer required, MDX and OG routes take a line each, the date pickers speak your language, and a new CLI starts an app in one command.
Updated 8 days ago
Dither: your own image or video as a dithered print
Once UI 2.0: A system an AI can build with
Once UI 2.1 is out. It is on the latest tag, so it is what npm installs now:
npm i @once-ui-system/core@2.1.0
2.0 made Once UI a system an AI can build with. 2.1 fills in the pieces real apps kept reaching for, takes away a setup step, and makes the harness cheaper for an agent to read. It is a minor release: everything is additive, nothing is removed or renamed, so upgrading from 2.0 is a version bump.

New components

The most requested gaps are closed. Each one ships with the keyboard and screen reader behaviour built in, not left as an exercise.
  • Tabs, horizontal or vertical, with arrow keys, Home and End, and automatic or manual activation.
  • Drawer, a modal sheet from any edge, built on Dialog's focus trap, scroll lock and inert page.
  • DataTable, typed rows from column definitions, with sorting, a select-all checkbox, client or server pagination, an empty state and loading skeletons.
  • Pagination, a fixed-width row of real buttons with ellipses and optional first and last pages. Table uses it now too.
  • Breadcrumbs, RadioGroup, RangeSlider and VisuallyHidden, which doubles as a skip link.
  • useHotkeys and KeyTip, for mod+k style shortcuts that show ⌘ on a Mac and Ctrl everywhere else.
Switch, TagInput and Slider also work uncontrolled now, and onToggle hands you the new state, so a setter can go straight in.

Sass is no longer required

Component styles ship precompiled. Any bundler that handles CSS modules works with no setup: Next.js with webpack or Turbopack, Vite, Storybook, Remotion. Pages render the same as before and your imports don't change. If nothing else in your app uses sass, you can uninstall it. Twelve more components render as server components too, including Badge, Tag, Avatar, List and Skeleton.

Less wiring for common jobs

  • MDX in one map. @once-ui-system/core/mdx renders Markdown through Once UI, with linked headings, links, images, code and tables. It works with and .
SmartLink
Media
CodeBlock
Table
next-mdx-remote
@next/mdx
  • OG routes in two lines. createOgFetchRoute() and createOgProxyRoute() from @once-ui-system/core/next give OgCard its routes, and they only reach public addresses, checked again on every redirect.
  • defineConfig checks your config and keeps its types, so each section spreads straight into the providers with no casts.
  • A custom brand colour with no flash. Give brandSeed a colour and the whole scheme is generated, rendered on the server for the first paint.
  • StylePanel translates and fits a sidebar, with labels for every string it shows and a stacked layout.
  • StylePanel can offer that custom colour too. With customColors, the Brand and Accent rows end in a swatch of your own and a field to pick it, and the panel reports the seed for you to render.