[2.0.0] — 2026-09-25
Once UI 2.0 is on latest:
npm i @once-ui-system/core2.0 is the release where Once UI becomes a system an AI can build with
correctly. One spec drives the docs, the ai/ harness, the validator and the
codemod, so what an agent reads is what the package accepts. Utilities and
responsive classes are generated, and breakpoints are fixed, so CSS and
JavaScript agree on every width and a responsive Flex can be a server
component.
Upgrading from 1.8.x. MIGRATING.md is the checklist, in the
order that keeps the app building: run the codemod, install the peers for the
subpaths you use, fix what the codemod reports, import LayoutProvider from
@once-ui-system/core/next in a Next app, check the browser floor (Chrome 111,
Safari 15.4, Firefox 113), drop custom breakpoints, and re-shape any
ScrollContainer. Most apps finish in the first two steps.
What is in it. 2.0.0 is 2.0.0-alpha.3 plus the entry below. The four
alpha entries that follow are the full record of what changed from 1.8.x and
why; read them together, oldest first. Two things are by design rather than
open questions:
- A bundler is required. Components import their own
.module.scssfiles,
so Once UI runs in apps built by a bundler that compiles Sass modules
(Next.js, Vite and the like), as it always has. Plain Noderequire/import
of the package is not supported. @once-ui-system/foundationsstays private. Core inlines its SCSS and CSS
at build time, so there is nothing extra to install.
Added
sizestakes theMediashorthand everywhere it reachesMedia.
<Media sizes={1200}>stands for(max-width: 1200px) 100vw, 1200px, but
Carousel(its slides andthumbnail.sizes),Swiper,OgCard,Bookand
MediaUploadtyped theirsizesasstringwhile passing it straight to
Media— so the number worked at runtime and failed to type-check. They take
string | numbernow, resolved byMediaas before. Theai/harness lists
the wider type, so an agent validating against the alpha.3 harness would
reject the shorthand on these five.