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.2: chat, forms and mobile

Building blocks for chat and forms, a core that works on phones, about 25 fixes, and docs an AI agent reads in one go.
Updated 2 days ago
Once UI for React Native: the same props on a phone
Dither: your own image or video as a dithered print
Sponsored
Aveiro
aveiro.app
Sponsored
Aveiro
aveiro.app
TrademarkTrademark
Once UIDokumentationBlog
© Once UI. Alle Rechte vorbehalten.
Built with Aveiro
Once UI 2.2 adds the parts most apps end up building by hand: a chat, forms that wire themselves up, and a core that behaves on a phone. It also makes the docs cheaper for an AI agent to read, and fixes about 25 bugs.
Once UI 2.2 at a glance, slide 1 of 9
Once UI 2.2 at a glance, slide 2 of 9
Once UI 2.2 at a glance, slide 3 of 9
Once UI 2.2 at a glance, slide 4 of 9
Once UI 2.2 at a glance, slide 5 of 9
Once UI 2.2 at a glance, slide 6 of 9
Once UI 2.2 at a glance, slide 7 of 9
Once UI 2.2 at a glance, slide 8 of 9
Once UI 2.2 at a glance, slide 9 of 9

Chat

Five components cover what every chat has: ChatMessage for a bubble with its author, time and delivery state, ChatMessageList that follows the conversation as it grows, ChatComposer with send and attach, TypingIndicator, and ConversationItem for inbox rows. They work for people talking to each other and for an assistant that streams its replies. Set from="self" to put a message on the right, and grouped on a follow-up from the same author so the bubbles line up. They are under Modules, then Chat, in the docs.

Forms

A label, a hint and an error each need an id, and the control needs aria-describedby and aria-invalid pointing at them. Written by hand, that bookkeeping breaks silently: the error shows and a screen reader never hears it. Field does the wiring for you. Fieldset groups controls, SubmitButton shows a pending state while the submit runs, and FormErrorSummary lists what to fix and links to each field. Form now takes an async onSubmit, and useField and useFormPending let your own controls join in.

Mobile-ready core

On a touch screen, small controls grow to a 44px touch target without changing how they look. Hover styles no longer stick after a tap. New --safe-area-* tokens keep sheets and bars clear of notches and the home indicator, and the viewport units no longer jump when the browser bar slides away.

Fewer tokens for agents

When an AI agent builds a page with Once UI, most of what it pays for is reading. The package now ships one Markdown bundle per kind of page, such as a dashboard, a pricing page or a changelog, with the rules, the components, their known gotchas and a finished example in one file. AGENTS.md points to the right bundle, so an agent reads one file and starts writing.
Page
2.1
2.2
Change
Dashboard726k186k−74%
Product grid345k141k−59%
Changelog264k91k−66%
Pricing page136k73k−46%
These are our own test runs with the same model, prompts and checks as for 2.1, one or two runs per page. They are not a benchmark, and we have not rated the pages for quality yet.

Fixes

About 25 bugs are fixed. The date components take labels for other languages, and the locale now reaches the time picker. DatePicker respects the week start, Checkbox, Radio and Switch pass their native props through so they work with react-hook-form, and AccordionGroup, OTPInput, DateRangeInput and Badge behave as documented. The full list is in the changelog.
npm i @once-ui-system/core@latest
<ChatMessageList ariaLabel="Chat">
  {messages.map((m) => (
    <ChatMessage key={m.id} from={m.from} time={m.time}>
      {m.text}
    </ChatMessage>
  ))}
  {typing && <TypingIndicator />}
</ChatMessageList>
<ChatComposer onSend={send} attach />
<Form as="form" onSubmit={async (e) => {
  e.preventDefault();
  await save(new FormData(e.currentTarget));
}}>
  <Field label="Email" hint="For receipts" error={error}>
    <Input id="email" />
  </Field>
  <SubmitButton pendingLabel="Saving…">Save</SubmitButton>
</Form>