Yugen UI

Updates

What's new

Changes by release for yugen-ui, @yugen-ui/cli and create-yugen-ui: new features, improvements, fixes and what to check when upgrading.

Current version: 0.16.0 · The full log lives in CHANGELOG.md and on the Releases.

  1. v0.16.0

    Performance: lighter imports, smaller CSS and fewer re-renders

    Latest

    A release about performance. Every component folder is a subpath of the package, parts that only some apps render load on demand, YugenProvider keeps the theme in a context of its own and charts no longer recompute on hover. The Performance page puts the settings and the numbers in one place. Sizes are gzip, measured on a Vite 8 build.

    • NewSubpath imports: every component folder is also a path of the package (yugen-ui/Button, yugen-ui/Chart, yugen-ui/hooks…). Production builds with Vite, Rollup, webpack and Next.js keep the same size. In Node, tests and dev servers a cold import { Button } loads 14 modules in about 60 ms instead of 498 in about 1.6 s. With esbuild code splitting, import from subpaths.View
    • NewyugenHtmlAttributes() and yugenThemeScript() put the theme on <html> before the first paint in server-rendered apps. Both are plain functions that work in a Next.js Server Component, imported from yugen-ui or yugen-ui/YugenProvider/document. YugenProvider applyToDocument now writes the attributes in a layout effect, before the browser paints.View
    • NewuseYugenTheme() ({ theme, brand, dir }) and useYugenLocale(): a component that reads one of them does not re-render when the other changes.View
    • NewuseElementSize({ enabled }): with false the hook measures nothing and adds no ResizeObserver.View
    • NewA Performance page with the import path for each bundler, what loads on demand, CSS size, re-renders and charts, and the measured numbers.View
    • ImprovedYugenProvider warns once in development when the deprecated withToaster prop is used. Templates and docs now render an explicit <Toaster /> child; withToaster remains available until 1.0.0.View
    • ImprovedwithToaster loads the Toaster after the first client render, and toast() calls made before that still show. Apps without withToaster no longer ship @radix-ui/react-toast: { YugenProvider } goes from 24.9 to 13.3 kB, a six-component app from 38.0 to 31.1 kB. Rendering <Toaster /> as a child of the root provider is the recommended setup.View
    • ImprovedBreadcrumb loads the menu of its "…" button only when maxDisplayedItems collapses items (40.2 → 13.5 kB), and StreamingMarkdown loads the citation card only when the text has citations (49.3 → 27.3 kB). Nav no longer imports Tooltip; AppShell's Sidebar adds the rail tooltip (29.9 → 12.0 kB). Tests that open the menu or a card right after rendering need to wait for it (findByRole).View
    • ImprovedA theme switch re-renders only the components that read the theme: with 1,800 controls and stable children it takes 1.4 ms instead of about 66 ms. messages written inline is compared by value like defaults, so a parent re-render with the same strings no longer re-renders the controls.View
    • ImprovedComponents with variants (Button, Input, Badge, Card and 11 more) merge their classes once per combination of props: rendering 1,000 Buttons without a className takes 44–53% less time on the server and in the browser, for about 0.27 kB more. buttonVariants and the other exported variant functions return the merged string.View
    • ImprovedMoving the pointer over LineChart, AreaChart or BarChart no longer recomputes the chart: a hover step goes from 9.7 to 1.1 ms at 500 points and from 39 to 1.1 ms at 2,000. A 4 × 200 LineChart with markers has 30% less markup, and a Sparkline with a number width mounts in one render with no ResizeObserver. Pixels, keyboard and screen reader output are unchanged.View
    • ImprovedThe keyframes live in @theme, so Tailwind writes only the ones your app uses: a Button-only app on theme-core.css goes from 20 keyframes to 1 (9.17 → 8.86 kB). tokens.css is plain CSS, and theme.css imports theme-core.css instead of repeating it (64 kB less in the package). An app that redefines one of the library's keyframes (fade-in, sweep…) declares it inside @theme.View
    • ImprovedCalendar no longer bundles the Vietnamese date-fns locale: about 2 kB less on every date component in English apps ({ DatePicker } 58.8 → 56.8 kB). Vietnamese apps still get it through messagesVi.View
    • ImprovedCombobox and TagPicker no longer use cmdk: a small built-in listbox handles the highlighted option and the keyboard. { Combobox } goes from 42.8 to 38.9 kB and { TagPicker } from 50.6 to 41.0 kB, and with 1,000 options an arrow key re-renders only the two options whose highlight changes. TagPicker loads Sortable only with reorderable, and a tag that has focus keeps it when it arrives. The listbox is named by the field label (or the input's aria-label). Options no longer carry cmdk-* attributes: tests that query [cmdk-item] inside these two components should query role="option".View
    • ImprovedTheme Designer: each part (color, shape, density and type, surfaces, motion, glass) has its own preview and its checks next to its controls, and the full preview shows light, dark and high contrast in one row. The font field takes any font name.View
    • FixedTypes under TypeScript module: "node16" / "nodenext": 72 exports (BarChart, StreamingMarkdown, useDisclosure…) failed with "has no exported member". CI now type-checks every export from a nodenext project.
    • FixedreadAppShellCookie works in React Server Components. It lived behind "use client" and threw when a Next.js layout called it; import it from yugen-ui.View
    • FixedDeprecation warnings are in English and link to the versioning page instead of the old #/ URL, and the AppShell cookie gets secure on https pages. The published JS has no comments (the JSDoc stays in the .d.ts files): 1,238 → 1,132 kB unpacked.View
  2. v0.15.0

    New form controls, NavigationMenu, status pages and app-wide defaults

    PasswordInput, FormattedInput, month, year and date-time pickers, ColorPicker, NavigationMenu and StatusPage join the library, and YugenProvider can set default props and density for a whole app. Prose gets a Typeset page. Prop names from the API review before 1.0 are in place; the old names keep working until 1.0. Installing yugen-ui no longer pulls in a 180 MB icon package, and React 19 is now required.

    • NewPasswordInput: a password field with a show / hide button, a Caps Lock note and an optional strength meter.View
    • NewFormattedInput formats phone numbers, card numbers and amounts as you type, keeps the caret in place and submits the raw value.View
    • NewMonthPicker and YearPicker pick a month or a year, with the same field, keyboard and locale handling as DatePicker.View
    • NewDateTimePicker puts the calendar and a time field in one popover.View
    • NewColorPicker: a color area, hue and opacity sliders, HEX / RGB / HSL inputs, a screen color picker where the browser supports it, and preset swatches.View
    • NewNavigationMenu: a website header menu with dropdown panels (mega menus), hover intent, keyboard support and router links.View
    • NewStatusPage and ErrorBoundary: pages for 404, 500, 503, offline and new versions, and a boundary that shows them instead of a blank screen. The docs now have a real 404 page, and the Vite templates catch errors with it.View
    • NewTypeset: tune Prose's fonts, size, line height, block spacing and line length on real content, then copy the CSS. Prose now reads these from CSS variables, and the theme has four presets (yugen-prose-docs, -article, -chat, -compact).View
    • NewYugenProvider takes defaults and density. defaults={{ Button: { shape: "circular" } }} sets props for every instance in that part of the UI, and a prop on the instance still wins. density="compact" makes controls size small by default and tightens spacing; "comfortable" loosens spacing.View
    • NewYugen Labs: glassNavigationDefaults turns every navigation component with glass (Toolbar, TabsList, Nav, menus, popovers, tooltips, dialogs, drawers and sheets) to material="glass" from one place: <YugenProvider defaults={glassNavigationDefaults}>.View
    • NewYugenProvider scrollLock="keep-scrollbar" keeps the page scrollbar while a Menu, ContextMenu or Dropdown is open, so the page no longer jumps by the scrollbar width on Windows. "hide-scrollbar" stays the default until 1.0. Menu and ContextMenu document modal={false} for a menu that doesn't lock scrolling.View
    • NewConsistent prop names, from the API review before 1.0: Carousel gap="medium" (full size names) and loop, Tree onSelectionChange, DatePicker and DateRangePicker onValueChange, List appearance, RatingDisplay showValue, toast dismissible, CarouselNavContainer previousLabel, Autocomplete noResultsText, and breakpoint tokens ("3xl") on Sheet and NotificationCenter, as on AppShell. TimePicker gains onValueChange, Carousel activeIndex / defaultActiveIndex and Stepper defaultActiveStep. The old names keep working until 1.0 and print one warning in development.View
    • NewMore names from the same review: CarouselNavContainer showAutoplayToggle, TimelineItem intent="error", Stat size="extra-large", and orientation on Divider and TeachingPopoverFooter. highlightRanges, getOverflowGroups and the top-level dispatchToast are deprecated and leave the package in 1.0; use <HighlightMatch>, useIsOverflowGroupVisible and toast() / useToast().dispatchToast. Old names keep working until 1.0 with one warning in development.View
    • ImprovedYugen Labs: StreamingMarkdown, Citation, MessageScroller, CodeBlock, PageProgress, AsyncContent / ErrorState and useOptimisticList leave Labs and follow SemVer. The rest stays experimental, and their pages say so.View
    • ImprovedComponents are plain function components that take ref as a prop, the React 19 way, instead of forwardRef wrappers. Refs work as before and React.ComponentRef<typeof Button> still gives the element type. A callback ref that returns a cleanup function now gets it called, also on components that keep their own ref (Carousel, Sheet, Toolbar…).View
    • FixedMarkdown, StreamingMarkdown and CodeBlock stay fast on hostile input: deep nesting no longer overflows the stack, and long runs of unclosed [, * or ${ no longer take seconds to parse. The new Security page lists what Yugen UI cleans up and what your app still has to do.View
    • Breakingyugen-ui no longer installs @fluentui/react-icons (about 180 MB). The icons inside components ship with the library as small SVGs and look the same. If your app imports icons from @fluentui/react-icons, add it to your dependencies: npm i @fluentui/react-icons. Other icon sets such as lucide-react also fit icon slots.View
    • BreakingReact 19 or later is required: react / react-dom >=19. React 18.3 was supported through 0.14 and no longer gets fixes upstream. Apps on React 18 can stay on yugen-ui 0.14 until they upgrade.View
  3. v0.14.0

    AppShell, Sortable and a Contributors page

    AppShell builds the frame of an app: a sidebar that collapses to icons or opens as a Drawer on narrow screens, a top bar, the main content, a side column and a footer. The SaaS, Dashboard, AI chat, Admin, Docs, Store, Blog, Landing and Starter templates use it. Sortable reorders lists by drag and drop or with the keyboard: DataGrid column order, TagPicker tags and the Kanban board in the Admin template. The Contributors page credits the people who have helped Yugen UI (merged PRs, bug reports, suggestions and reviews), pulled from GitHub each time the docs are deployed. Each release also names its contributors on this page and in the CHANGELOG. The CSS can include only the components an app uses: on the templates it goes from about 25 kB to 14–19 kB gzip.

    • BreakingComponents' built-in text is English by default (the close button, "Loading…", chart descriptions, screen reader announcements), and locale defaults to "en-US" (dates, times, numbers, a 12-hour TimePicker). Vietnamese apps add messages={messagesVi} locale="vi-VN" to YugenProvider; source copied with the CLI uses the …MessagesVi sets.View
    • NewAppShell and Sidebar: the sidebar collapses to icons (item names show in a Tooltip) or hides completely, opens as a Drawer when the frame is narrow, resizes by dragging and toggles with Ctrl+B / ⌘B. Its state is saved in a cookie that the server can read when rendering. layout="header" runs the top bar across the full width, scroll="page" scrolls the whole page for content sites, and AppShellFooter adds a footer.View
    • NewSortable: reorder lists with a mouse, touch, a pen or the keyboard (Space to pick up, arrow keys to move, Esc to cancel). Every step is announced to screen readers, and when dragging isn't possible, click a handle to pick an item up, then click where it should go. Vertical, horizontal and grid lists; SortableGroup for Kanban boards; the list scrolls on its own when you drag near an edge. No new dependency.View
    • NewShared hooks: useControllableState, useDisclosure, useMediaQuery, useLocalStorage (synced across tabs), useClipboard, useHotkeys (skips text fields; arrow keys follow the text direction in RTL), useDebouncedValue, useIntersection and useElementSize. The components use these same hooks, so an app doesn't need a second hook library.View
    • NewMarkdown: renders content written in Markdown (articles, release notes, CMS fields) with Prose typography. No HTML, and a javascript: link keeps only its label; relative links are kept, and renderLink hands links to the app's router. inline is for one-line text such as list items or table cells.View
    • NewCSS for the components you use: yugen-ui/theme-core.css is the theme without the scan of every component; add one @import "yugen-ui/sources/<Component>.css" line per component the app uses (each file also covers the components it uses inside). yugen-ui/sources/index.json maps every export to its file. theme.css stays the zero-config default.View
    • NewContributors page: each person is a blossom on a cherry branch, opening in the order of their first contribution. Two sections: code and docs (merged pull requests), and ideas and discussion (ideas, bug reports, reviews, feedback in issues). Each person shows contribution counts by type and their recent contributions.View
    • ImprovedThe docs open in English: /components/button is English and the Vietnamese version is at /vi/components/button. Your language choice is remembered, old /en/… links go to the new address, and browsers set to Vietnamese get a one-time suggestion to switch.View
    • ImprovedComponent demos, the code you copy from them and the blocks are in English, with sample data in US dollars and en-US formats. Templates open in English too (Vietnamese with create --lang vi). Demos about Vietnamese input keep their Vietnamese text.View
    • ImprovedThe SaaS, Dashboard, AI chat, Admin, Docs, Store, Blog, Landing and Starter templates are built on AppShell: less repeated code, a collapsible sidebar, Ctrl+B and a skip link.View
    • ImprovedNavItem gains tooltip: the label shows when the sidebar is collapsed to icons.View
    • ImprovedDataGrid gains columnOrder; in DataGridColumnPicker, drag a column (or press Alt + ↑ ↓) to change the column order. TagPicker gains reorderable for reordering tags by dragging.View
    • ImprovedEach release names its contributors on the What's new page and in the CHANGELOG.
    • ImprovedDocs on phones: the props and Messages tables no longer scroll sideways (one block per prop or key, with labelled Vietnamese and English values), text in backticks renders as code, and opening an example's code widens its tile to the full row. Every component page fits a 375px screen.
    • ImprovedThe What's new page is in English for every release of all three packages. Release notes are now written in Markdown, one file per release and language.
    • FixedCodeTabs and PackageManagerTabs: className applies to the outer box, so w-full in a flex row fits a narrow screen and the tabs wrap instead of running past it.View
    • FixedCopy buttons (CodeBlock, PackageManagerTabs…) report an error when the browser refuses the clipboard write, instead of still showing "Copied".
    • FixedBoot loading screen (Yugen Labs): the kanji numerals in the Enso and Bloom concepts are no longer cut off at the bottom in full-screen view.View

    Thanks toDave Kurian#266#259#161Nguyễn Gia Bảo#257#251#246Imgbot#311

  4. v0.13.0

    Refraction for glass, cherry blossom season in the Glass template

    The edges of glass surfaces bend the image behind them like the rim of a lens (GlassRefraction, Chromium browsers). The Glass template adds Kyoto, Tokyo, Hirosaki and Mount Fuji in blossom season. Adds Sonner (stacked notifications) and four display components: Timeline, DescriptionList, Stat and Prose. The Templates page has a full-screen mode; Checkbox, Switch and Dropdown in a Field no longer stretch the page when they sit in a form inside a scrolling area. Yugen Labs adds a boot loading screen (a calligraphy brush stroke, kanji or Latin numerals) and HTTP status pages (404, 500, maintenance, offline…).

    • NewSonner: notifications that stack in a corner of the screen and fan out on hover or focus. Call sonner("…") or sonner.success / info / warning / error / loading from anywhere; sonner.promise switches in place from loading to success or error; call again with the same id to update a notification. Action and cancel buttons, richColors, swipe to dismiss, F8 to reach the notification region. Built on Radix Toast, with no new dependency.View
    • NewTimeline (history, activity logs; detailed and compact), DescriptionList (label / value pairs, drops columns when narrow, copy button), Stat (headline number, delta, a small chart; StatTile is now built on Stat) and Prose (typography for Markdown or HTML from a CMS, opt out with not-prose).View
    • NewGlassRefraction (Yugen Labs): place it once at the app root and the edges of every glass surface bend the background behind them like the rim of a lens, while the middle stays frosted so text keeps its contrast. Only Chromium browsers draw it; Safari and Firefox keep the regular glass. It turns off along with the blur under reduced transparency, increased contrast, forced colors and the high-contrast theme.View
    • NewSlider and Switch gain material="glass" (Yugen Labs): while pressed or dragged, the thumb turns to glass, growing larger on Slider so the track shows through it, and longer on Switch.View
    • NewBoot loading screen (Yugen Labs): a brush stroke in the middle follows real loading progress, kanji numerals 〇–百 run vertically down the edge, and the ensō logo is inked in the corner and blooms when loading is done. It appears in npm run dev, on 404.html and on prerendered pages that stay hidden because their language or RTL direction doesn't match. The Labs page has a lab for loading screen concepts in two numeral styles, kanji and Latin, viewable full screen.View
    • NewHTTP status pages (Yugen Labs): 400, 401, 403, 404, 410, 429, 500, 503, 504, offline and new version, in the same layout as the loading screen, with a logo that changes with the status and a countdown that follows Retry-After. Comes with a status catalog and how each page recovers on its own.View
    • ImprovedThe Blog and Docs templates style articles with Prose instead of separate classes on each element.View
    • ImprovedGlass MenuPopover and PopoverSurface grow out of the button that opens them and shrink back into it when they close; with reduced motion they still just fade.View
    • ImprovedTheme Designer: a Glass axis (airy, default, frosted) and brand-tinted glass, previewed over a photo, with a check that text on glass stays at 4.5:1 or more over a black or white backdrop; the exported CSS includes the glass variables.View
    • ImprovedThe Glass template: four cherry blossom trips to Kyoto, Tokyo, Hirosaki and around Mount Fuji (Wikimedia Commons photos, credited with their licenses); the Settings page previews bars and controls over a bright photo, a blossom photo and a night photo; the Explore page is a world map (Natural Earth) with each trip pinned at its real coordinates, and nearby pins group together and zoom in when selected.View
    • ImprovedTemplates page: a full-screen button on each preview, with desktop, tablet or phone sizes; a ?preview=<template> link opens this view directly. The other templates are picked with tabs and shown in one frame as large as the featured template; a #<template> link preselects a template.View
    • ImprovedNotice: React 18.3 stays supported for the rest of 0.x; from 1.0, Yugen UI supports React 19 only. If your app still uses React 18, move to React 19 before updating to 1.0.View
    • FixedCheckbox, Switch and Dropdown in a Field: inside a <form> in a scrolling area, the hidden input used for form submission no longer stretches the page and leaves blank space at the bottom.View
  5. v0.12.0

    Glass, six new templates and a column picker for DataGrid

    A glass material (Yugen Labs) for toolbars, tab bars, sidebars and menus that float above content. Six new templates: Glass, Landing, Admin, Docs, Store and a Next.js starter; SaaS uses real paths, and every single-page app template comes with deploy configuration. People can hide and show DataGrid columns themselves. Long menus no longer run off the screen; on touch screens, buttons that used to appear only on hover are now always visible.

    • NewGlass (Yugen Labs, inspired by Liquid Glass): material="glass" | "glass-clear" on Toolbar, TabsList, Nav, MenuPopover, PopoverSurface, TooltipContent, DialogSurface, DrawerSurface and SheetContent; appearance="glass" | "glass-prominent" on Button; appearance="glass" on Input / SearchBox. TabsList gains minimized and the useScrollMinimize hook for tab bars that shrink while scrolling. Utilities: glass, glass-clear, glass-tinted, glass-scrim, scroll-edge, rounded-concentric. Text keeps 4.5:1 or more over any backdrop; glass turns opaque with reduced transparency, increased contrast, high contrast or forced colors. Names may change before 1.0.View
    • NewDataGrid accepts hiddenColumns; DataGridColumnPicker is a “Columns” button that opens a checkbox menu, and it works with Table too. The menu stays open while you check columns, a hideable: false column and the last visible column can't be hidden, and a sorted column keeps sorting the rows while hidden. Hidden columns keep their resized width; save the choice with onHiddenColumnsChange.View
    • NewThe Glass template: a travel journal with full-bleed photos, a glass sidebar and tab bar (which shrink while scrolling), an Explore page with pins and floating filters in clear glass, a glass bottom sheet, and a glass / solid setting. Sample photos from Unsplash in AVIF.View
    • NewThe Landing template: a product page with monthly / yearly pricing, FAQ, testimonials and a validated sign-up form. The first screen, title, Open Graph and product JSON-LD are written into index.html at build time; mobile Lighthouse scores are 95 or higher in all four categories, checked in CI.View
    • NewThe Next.js starter template (App Router): YugenProvider in a Client Component, theme and brand stored in a cookie so the server renders the right theme (no flash), a home page that is a Server Component using Yugen components, per-page metadata and next/font. The SSR page links to the template.View
    • NewThe Admin template: customers and orders on a mock API. DataGrid with server-side paging, sorting and filtering, a column picker, and multi-row selection for CSV export or deletion; add and edit in a Drawer with validation by react-hook-form + zod; optimistic updates that roll back with a toast on error. Includes sign-in, forgot password, OTP code entry and pages that require signing in.View
    • NewThe Docs template: documentation pages from Markdown files, with each folder as a section of the sidebar. The table of contents highlights the heading you're reading, Ctrl K searches titles and headings, code blocks are grouped into tabs by language, and install commands get npm / pnpm / yarn / bun tabs. Each page has its own HTML file with title, description and Open Graph, plus sitemap.xml and 404.html.View
    • NewThe Store template: a small shop selling tea, ceramics and stationery. A product grid filtered by category and price range, with sorting and filters kept in the URL; product pages with a Carousel and color, size and quantity choices; a cart in a Sheet saved to localStorage; a four-step Wizard checkout with validation and an order confirmation page. Prices are formatted by language (USD or VND), and checkout is only simulated.View
    • ImprovedThe SaaS template uses real paths (/analytics) instead of #/analytics, and old links still open the right page. SaaS, Dashboard, AI chat and Glass come with deploy configuration: _redirects for Netlify, vercel.json, and npm run build:gh-pages for GitHub Pages; Cloudflare Pages needs nothing extra.View
    • ImprovedDataGrid: a column only needs label, and renderHeaderCell becomes optional. The hide / show logic is available on its own through useDataGridColumnVisibility and getVisibleColumns.View
    • ImprovedDataGrid and Table use tabular figures, so numbers in a column line up without an extra class.View
    • ImprovedMenuItemCheckbox and MenuItemRadio accept secondaryContent, like MenuItem.View
    • ImprovedThe Versioning page sets a rule for each number: most changes ship in patch releases, a minor only comes with new API and at least 14 days after the last one, and majors are at least 180 days apart. This applies after 0.12.0.View
    • FixedDataGrid: when the set of columns changes, keyboard focus stays on the same column instead of jumping to whichever column now sits at that position; if the focused cell is removed, focus moves to the nearest column.View
    • FixedMenu, ContextMenu, Menubar and submenus: long menus scroll within the screen instead of overflowing it, so the last item can always be reached.View
    • FixedTouch screens: row action buttons, subtle selection checkboxes (Table, DataGrid) and Tree item actions are always visible, since there is no hover to reveal them.View
  6. v0.11.1

    Skeleton's wave animation runs smoothly again

    The Skeleton highlight crosses the full width and loops without a break, in every shape and in the translucent appearance.

    • FixedSkeleton: since 0.11.0, the wave highlight only showed in the last quarter of each cycle, stopped halfway and jumped back to the start. It now crosses the full width and loops without a break, in every shape (rectangle, circle, square) and in the translucent appearance.View
  7. v0.11.0

    Replaceable UI strings, English docs and new templates

    Every built-in string in the components can be changed through YugenProvider, and an English set is included. The docs are fully available in English, with real URLs and prerendered HTML. Dashboard and AI chat become complete apps, and every template comes in two languages.

    • NewYugenProvider accepts messages and locale: change button labels, aria-label text and screen reader announcements for every component, by namespace; messagesEn switches everything to English. A component's own label props still take priority; Vietnamese stays the default.View
    • NewComponent pages have a Messages section listing each key with its Vietnamese default and English version.View
    • NewEnglish docs for every page under /en/: concepts, 113 components, Foundations, Blocks and Theme Designer. Path-based URLs, prerendered HTML for each page, a sitemap with hreflang and Open Graph images of their own; a new SEO page.View
    • NewThe Dashboard template (4 pages, one date range for every chart, DataGrid with CSV export) and AI chat (conversation list, streamed replies you can stop, connects to your own backend) become complete apps; SaaS, Blog and the new templates come in English and Vietnamese (create --lang).View
    • ImprovedSkeleton (wave) and the indeterminate ProgressBar animate with transforms, so they no longer repaint every frame; new animate-sweep and animate-indeterminate-slide utilities.View
    • ImprovedFaster with large data or frequent updates: Chart, DataGrid, Tree, List, Combobox, TagPicker, Autocomplete, MessageScroller, StreamingMarkdown, Carousel and PageProgress.View
    • ImprovedTemplates load each page on demand: the first load of SaaS is about a quarter smaller. CI builds and checks every template against the PR's own yugen-ui build (bundle size, console errors, axe).View
    • ImprovedLighter docs: first-load JS is down by more than half and the home page has fewer elements; the cherry blossoms on the home page are no longer clipped.
    • FixedCalendar: in English, day buttons name the day with a plain number ("October 1, 2026" instead of "October 1st"), matching the number shown on the button, so voice control can select the day (WCAG 2.5.3).View
  8. v0.10.0

    Numeric spacing, Theme Designer and a Motion page

    Spacing uses Tailwind's numeric scale (the upper-case aliases are deprecated), and cn() uses tailwind-merge 3. The docs get a multi-axis Theme Designer, a new Motion page and a resizable sidebar.

    • NewTheme Designer: besides the brand color, you can pick the corner radius, density, font and root font size, neutral colors, elevation and motion, each with a few steps checked for contrast and target size. Preview in light, dark, high contrast and RTL; the exported CSS includes every choice, and a share link keeps your settings.View
    • NewThe Motion page is rewritten and available in English: tokens and animate-*, the motion of each component with live demos, a playground that compares two settings, a reduced motion preview, choreography and performance.View
    • NewDocs: drag the sidebar edge to change its width (240–400px, arrow keys, double-click to reset) or collapse it to icons; the state is kept after a reload.
    • ImprovedComponents, examples, templates and the registry use numeric spacing (p-3, gap-2) instead of the upper-case aliases (p-M, gap-S). Nothing changes at a 16px root font size; the numeric scale is in rem, so it follows the browser's font size.View
    • ImprovedThe upper-case spacing aliases (p-M, gap-SNudge…) in theme.css and cn() are deprecated and keep working until 1.0. Rename them as XXS → 0.5, XS → 1, SNudge → 1.5, S → 2, MNudge → 2.5, M → 3, L → 4, XL → 5, XXL → 6, XXXL → 8.View
    • ImprovedThe Form example with react-hook-form + zod is written for zod 4 (z.email(), the error parameter) and @hookform/resolvers 6; it needs zod 4 or later.View
  9. v0.9.0

    React 19 and a minimal starter

    React 19 is the default, and React 18.3 is still supported. A leaner English starter, 5 new blocks, and updated docs and roadmap.

    • New5 new blocks: Newsletter sign-up, Quantity picker, Welcome dialog, Project progress and Who's online.View
    • ImprovedReact 19 is the default for the docs, tests and templates. React 18.3 is still supported and tested in CI, and the end of React 18 support will be announced at least one minor release ahead.View
    • ImprovedTemplates have short names (Starter, SaaS, Blog, Dashboard, AI chat) and one-line descriptions. The starter is a minimal English page with the Sakura and Web brands.View
    • ImprovedWhat's new has a tab each for yugen-ui, @yugen-ui/cli and create-yugen-ui; notes for an upcoming release carry an Upcoming label.View
    • ImprovedThe Introduction page is rewritten. The Community page has a roadmap by release and explains how the project is run, all in English.View
    • ImprovedThe docs call the CLI by its real name, @yugen-ui/cli, and repeat themselves less. The footer links to GitHub, npm, Discussions and Report a bug. The table of contents no longer sits right against the untranslated-page notice.View
    • FixedAvatarGroup: the accessible name of the “+N” button starts with the number it shows (WCAG 2.5.3), and overflowLabel is read after the count.View
  10. v0.8.3

    Create-project commands work in PowerShell

    Commands copied from the docs run in Windows PowerShell. The npm package is unchanged.

    • FixedThe create-project command is now npx create-yugen-ui@latest my-app --template <name>. PowerShell dropped the -- in npm create … -- --template, so npm reported “Unknown cli config --template”.View
    • Fixedcd my-app and npm run dev are on separate lines instead of being joined with &&, which Windows PowerShell 5.1 does not accept.View
  11. v0.8.2

    The @yugen-ui/cli command line tool

    Create apps, set up projects and copy component source with one command line tool. Also a small AriaLive fix.

    • New@yugen-ui/cli: npm create yugen-ui@latest creates an app from a template; npx @yugen-ui/cli@latest init sets up an existing project (npm package or source code); add copies components with their dependencies; doctor checks your setup.View
    • ImprovedThe home page has a Start a new project section and a CLI tab in the install box; each component's Import section has a yugen CLI tab.View
    • ImprovedQuick start, Templates and the template READMEs show the CLI first; manual setup and the shadcn CLI are still there.View
    • FixedAriaLive: the fallback announcer (used when there is no AriaLiveAnnouncer) no longer throws “window is not defined” when its queue runs after window is gone, for example after a test environment is torn down.View
  12. v0.8.1

    Tidier docs on phones

    The top bar, example frames and home page are reworked for small screens. New logo. The npm package is unchanged.

    • ImprovedTop bar: one Appearance button for light, dark and high contrast modes, brand color and text direction. The language switch shows on every screen size.View
    • ImprovedExample frames: a one-row toolbar that shrinks to icons on small screens; the Code button moves up into that toolbar.View
    • ImprovedHome page: a new 幽玄 hero, npm and shadcn install commands with a copy button, and a component list with search and group chips. On phones, tap a name to open its demo.View
    • ImprovedNew logo: an ink enso circle with a cherry blossom. The favicon follows the browser's light or dark mode.
  13. v0.8.0

    Templates, one-command shadcn init and SEO

    A Templates page with three new templates (starter, SaaS and a Markdown blog), each created with one command. The shadcn CLI installs the theme, cn() and YugenProvider in one step. Quick start is down to one command, and the docs start to support SEO.

    • Breakingshadcn registry: components no longer install the theme on their own. Run init once per project, or add …/r/theme.json along with your components. The npm package is unchanged.View
    • NewTemplates page: live previews, and a new project in one command (npx giget … --install) or on StackBlitz.View
    • Newvite-starter: a blank start with a remembered theme, no flash on load, an @/ alias, basic SEO and a 幽玄 cherry blossom welcome page.View
    • Newvite-saas: an 8-page app with a sidebar, a Ctrl K command palette and notifications. vite-blog: a Markdown blog with an HTML file per post, sitemap.xml and rss.xml.View
    • Newshadcn CLI: npx shadcn@latest init …/r/init.json (Next.js: init-next.json) creates components.json, copies the theme, cn() and YugenProvider, and adds the @import to your CSS.View
    • ImprovedQuick start: one command from a template, or three steps for an existing project (install the package, add one line of CSS, add YugenProvider).View
    • ImprovedDocs: a title and description for each page, Open Graph with a link preview image, and JSON-LD. A new SEO roadmap is on the Community page.View
    • ImprovedThe Open in StackBlitz button shows on every component example.View
  14. v0.7.0

    Quote, Autocomplete and a clearer SearchBox

    Adds Quote for quotations with a source, and Autocomplete, a search box with suggestions and accent-insensitive filtering. The SearchBox list filtering example is redesigned.

    • NewQuote: quotations with an author and a source, in three styles (default, subtle, emphasis).View
    • NewAutocomplete: a search box with suggestions. Accent-insensitive filtering (typing “xoai” finds “Xoài”), highlighted matches, grouped suggestions and loading from a server.View
    • ImprovedSearchBox: the “Filter a list” example now shows results in a list panel with a count, avatars and an empty state.View
  15. v0.6.0

    DataGrid, an AI kit, a shadcn registry and automated tests

    Adds DataGrid, an AI component kit (StreamingMarkdown, Citation, Reasoning, PromptInput), Tour, NotificationCenter, FileUpload, Stepper, TimePicker, Overflow, and Scatter and Heatmap charts. Each component can be installed with the shadcn CLI. The docs load faster and come in English, and more than 800 automated tests now run.

    • NewDataGrid: sorting, row selection, resizable columns and virtualization for 10,000 rows.View
    • NewAI kit: a safe StreamingMarkdown, Citation, Reasoning, and PromptInput with attachments.View
    • NewTour, a guided tour with a spotlight, and NotificationCenter (popover or bottom sheet).View
    • NewFileUpload, Stepper / Wizard and a form pattern with react-hook-form + zod.View
    • NewTimePicker, presets for DateRangePicker, and Overflow, which hides items that don't fit.View
    • NewScatterChart, Heatmap, 100% stacked AreaChart, and zoom with a brush.View
    • NewInstall components as source code with the shadcn CLI: npx shadcn add …/r/<name>.json.View
    • NewTheme Designer exports JSON (W3C Design Tokens, Tokens Studio).View
    • ImprovedThe docs load each page lazily (first-load JS down from 970 kB to 108 kB), with an English version and a version menu.View
    • ImprovedA StackBlitz button on every example, and a versioning and deprecation policy.View
    • FixedAccessibility fixes (axe on 128 pages in light and dark), Resizable dragging the wrong way in RTL, hydration mismatches with SSR, and React 19 compatibility.
  16. v0.5.0

    Yugen Labs, the npm package and community

    Components that go beyond Fluent 2 (Trace, Questionnaire, Message Scroller, Code Block, Chart and an adaptive Sheet), plus a Wait UX layer, the npm build and a Community page.

    • NewTrace: shows each step of an AI agent, a CI run or a deployment.View
    • NewQuestionnaire: multi-step surveys with one question per screen.View
    • NewMessage Scroller, Message Bubble, Typing Indicator and Chat Composer for chat interfaces.View
    • NewCode Block with highlighting, line numbers, diffs, file tabs and package manager tabs.View
    • NewCharts (Bar, Line, Area, Donut, Sparkline, StatTile), built with a data visualization process and validated colors.View
    • NewSheet: a side panel on desktop, a draggable bottom sheet on mobile.View
    • NewWait UX: the Button loading state, useSpinDelay, PageProgress, AsyncContent, ErrorState and ready-made Skeletons.View
    • NewThe yugen-ui npm package with theme.css (Tailwind v4), styles.css (no Tailwind needed) and type declarations.View
    • NewCommunity and What's new pages.View
    • ImprovedCarousel gets looping, autoplay with progress, peek and thumbnails; Accordion adds separated and outline styles.View
    • ImprovedResizable gets collapsible panels and can save its layout.View
    • FixedAll Tailwind classes are in canonical form (checked by the lint:classes script), so the suggestCanonicalClasses warnings are gone.
  17. v0.4.0

    Concepts, RTL and high contrast

    In-depth docs in the style of Storybook, support for right-to-left text and a high contrast theme.

    • New16 Concepts pages: quick start, styling, theming, slots, positioning, RTL, SSR, accessibility and migration.View
    • NewA Theme toolbar (Yugen / Web / Teams × Light / Dark, High contrast) and an LTR / RTL switch.
    • NewYugenProvider: theme, brand and text direction that can be nested; portaled surfaces follow their provider.View
    • NewTheme Designer generates a 16-step brand ramp with contrast checks.View
    • NewMotion (Fade, Scale, Slide, Collapse, Stagger), AriaLive, focus management, CompoundButton, MenuButton, TeachingPopover and more.
    • FixedCommand no longer scrolls the whole page when it mounts; Field labels groups of controls correctly.
  18. v0.3.0

    Yugen UI is born: Sakura 桜

    Renamed to Yugen UI, with a cherry blossom brand, 47 new components and a Blocks page.

    • BreakingThe default brand changes from Communication Blue to Sakura #C2347A (blue is still available with data-brand="web").
    • New47 new components, following the Fluent 2 and shadcn/ui catalogs.View
    • NewBlocks: ready-made page sections that you copy as whole files.View
    • NewSakura, Dusk and Sunset gradients, and a cherry blossom enso logo.
  19. v0.2.0

    A design language based on Fluent 2

    Color, Typography, Spacing, Radius, Elevation and Motion pages, plus rules for color and gradients.

    • NewA Color page with a contrast table computed straight from the tokens.View
    • ImprovedThe docs site is redesigned after the layout of fluent2.microsoft.design.
  20. v0.1.0

    Groundwork

    Three-layer tokens based on Fluent 2, the first 11 components and Design.md.

    • NewGlobal → Alias → Utility tokens, Tailwind CSS v4 and 11 core components.

Upgrading to a new version

Using the npm package: update, then read the “Breaking” items above. Using copy-paste: re-copy the component folders you want to update, together with tokens.css.

npm install yugen-ui@0.16.0