Once UI Blog
Builder stories
Beiträge
Once UI
Once UI Stack chat: an AI chat with a face
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
Once UI 2.0 Alpha: Gemessen, nicht vermutet
Paarweise gestalten: background und onBackground
Colour arrives in pairs
Once UI 1.8: Feinschliff als Feature
Once UI 1.7: Form mit Absicht
Von Produkten zu Systemen: Ein neues Servicemodell
Magic Journal: Ein anderes Medium für Langform-Texte
Supa Social: Der nächste Meilenstein unserer Reise
Once UI ist Open Source. So wollen wir es beibehalten.
Gestaltung einer zeitlosen, KI-nativen Marke
Once UI 1.5: Neugier im Code
Once UI 1.4 Migrationsleitfaden: Das Breakpoint-Objekt
Launches im KI-nativen Zeitalter: Ein Leitfaden für Indie-Builder
Das erste Design-System für Indie-Builder
Builder Stories
Side und Once UI: Von der Café-Website zum Reservierungssystem
SatisPro und Once UI: Smarteres Bewertungsmanagement skalieren
IQON und Once UI: Skalieren mit einem Design-System
Dev: Verbindung von Wissenschaft und Code mit Once UI
JExcellence und Once UI: Experimente in Enterprise-Apps verwandeln
OsmyReal: Start einer Mobile-Gaming-Plattform mit minimalem Codeaufwand
TrademarkTrademark
Ctrl k
Search…
Registrieren
Once UI Blog
Builder stories
Beiträge
Once UI
Once UI Stack chat: an AI chat with a face
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
Once UI 2.0 Alpha: Gemessen, nicht vermutet
Paarweise gestalten: background und onBackground
Colour arrives in pairs
Once UI 1.8: Feinschliff als Feature
Once UI 1.7: Form mit Absicht
Von Produkten zu Systemen: Ein neues Servicemodell
Magic Journal: Ein anderes Medium für Langform-Texte
Supa Social: Der nächste Meilenstein unserer Reise
Once UI ist Open Source. So wollen wir es beibehalten.
Gestaltung einer zeitlosen, KI-nativen Marke
Once UI 1.5: Neugier im Code
Once UI 1.4 Migrationsleitfaden: Das Breakpoint-Objekt
Launches im KI-nativen Zeitalter: Ein Leitfaden für Indie-Builder
Das erste Design-System für Indie-Builder
Builder Stories
Side und Once UI: Von der Café-Website zum Reservierungssystem
SatisPro und Once UI: Smarteres Bewertungsmanagement skalieren
IQON und Once UI: Skalieren mit einem Design-System
Dev: Verbindung von Wissenschaft und Code mit Once UI
JExcellence und Once UI: Experimente in Enterprise-Apps verwandeln
OsmyReal: Start einer Mobile-Gaming-Plattform mit minimalem Codeaufwand
Release
Once UI

Once UI 2.3: made for real apps

Drag-to-reorder lists, a sidebar look you set once, a file tree, 32px toolbar fields, light mode with depth, and an app starter for agents.
Updated 2 days ago
Styled screenshots in Chirio
Frametic is now a video and capture studio
Sponsored
Aveiro
aveiro.app
Sponsored
Aveiro
aveiro.app
TrademarkTrademark
Once UIDokumentationBlog
© Once UI. Alle Rechte vorbehalten.
Built with Aveiro
Once UI 2.3 is about the parts of a real app that sit around the pages: the sidebar, lists people reorder, a file tree, a toolbar of small controls, and a light mode that looks as finished as the dark one. It also ships an app starter that an AI agent copies instead of writing.
Once UI 2.3 at a glance, slide 1 of 9
Once UI 2.3 at a glance, slide 2 of 9
Once UI 2.3 at a glance, slide 3 of 9
Once UI 2.3 at a glance, slide 4 of 9
Once UI 2.3 at a glance, slide 5 of 9
Once UI 2.3 at a glance, slide 6 of 9
Once UI 2.3 at a glance, slide 7 of 9
Once UI 2.3 at a glance, slide 8 of 9
Once UI 2.3 at a glance, slide 9 of 9

Drag to reorder: Sortable

Wrap a list in Sortable and each row in Sortable.Item, and apply the new order in onReorder. A mouse drags after a 4px move, a finger after a 200ms press, so taps and scrolling still work. The keyboard picks a row up with Space, moves it with the arrow keys and drops it with Space, and every step is read out to screen readers. Lists that share a group trade rows, and it has no dependencies.

One look for the whole sidebar: Nav

Wrap your NavItems and NavGroups in Nav and set the look once: density for how tight the rows are, variant for how the current page stands out, and rail for the line down an open group. NavSection gives each block its small heading. A selected NavItem with an href now carries aria-current="page".

Files and folders: FileTree

Pass items and FileTree renders an indented tree that the arrow keys walk. Right opens a folder, Left closes it, and Enter selects. It works controlled or uncontrolled, with slots for custom rows and empty or loading states. FileTree was contributed by @kadrxy, thank you.

Toolbar fields

Every text field now takes size="xxs": 32px, the height of a small Button, so a dashboard toolbar can be all small controls. At that size the label shows as the placeholder and stays the field's accessible name.

Light mode with depth

The light page is now a soft off-white and surfaces stay white, so cards, dialogs and panels lift off the page the way they do in dark mode. Text and solid fills moved a step so every text token passes WCAG AA, and inputs are white with a clear edge instead of a gray fill that read as disabled. defaultTheme sets a starting theme that visitors can still switch, and brandScale, accentScale and neutralScale take your brand's exact colours step by step.

An app starter for agents

ai/starters/app/ is a working Next.js setup with Once UI's CSS, fonts, providers and a switchable theme, plus a signed-in shell: a sidebar, a top bar with breadcrumb, a command palette, an account menu and a phone drawer. The product name, the user and the nav live in one file. AGENTS.md points agents at it, so they copy it and edit it instead of writing the shell from scratch. In our own test runs on the same five-route app, agents that started from it used about half the tokens and model calls and passed the same checks. Agents without it locked the theme switch or lost the app fonts.

Fixes and accessibility

Dialogs keep focus inside and wrap Tab, hover triggers open from the keyboard, the first toast is read out, and a disabled Fieldset disables everything inside it. ThemeProvider no longer causes a hydration mismatch, and every example on the docs site is now typechecked and opened in a browser before release. The full list is in the changelog.
npm i @once-ui-system/core@latest
<Sortable items={rows} onReorder={setRows}>
  {rows.map((row) => (
    <Sortable.Item key={row} id={row}>
      <NavItem href={`/${row.toLowerCase()}`} label={row} />
    </Sortable.Item>
  ))}
</Sortable>
cp -r node_modules/@once-ui-system/core/ai/starters/app/src/. src/