Changelog
Released changes to motif, from the first published tag through today. This page mirrors the
repository's CHANGELOG.md; every package in the workspace ships at a uniform version.
v1.0.1 — 2026-05-18
A patch release: eight fixes across the renderers, the token presets, the headless layer, and
the docs. Every package ships at 1.0.1.
Added
- RTL / bidirectional layout. A
<Direction>provider anduseDirection()hook on both renderers. New logical style props —ps/pe/ms/me, thestart/endinsets, and thepaddingInline*/marginInline*/insetInline*long forms.px/mxresolve to the logicalpaddingInline/marginInline, so they adapt to writing direction. useReducedMotion(). A cross-platform hook in@usemotif/headless—matchMediaon web,AccessibilityInfoon native. Headless components skip their enter/exit animation when the user prefers reduced motion.- Default
borderWidthsandletterSpacingstoken scales. The default light and dark themes ship both scales, so$borderWidths.*/$letterSpacings.*references resolve out of the box. @usemotif/react/svgentry. A dedicated, tree-shakeable export for theIconandSvgprimitives.
Changed
- Smaller icon imports.
@usemotif/iconsglyphs import through@usemotif/react/svg— a single-icon import drops from ~6.2 KB to ~0.6 KB gzip. No API change. @usemotif/compiler-swcpackage description. Corrected to describe the package as it is — a universalunpluginrunning the Babel-based transform, not an SWC plugin.
Fixed
- Invisible native
<Heading>/<Paragraph>text. A unitlesslineHeightwas read as absolute pixels by React Native and clipped glyphs to nothing; it is now resolved against the font size. - Next.js setup docs. The bundler guide now documents the
transpilePackagesconfiguration the official example app relies on.
v1.0.0 — 2026-05-15
The graduation release. motif spent its pre-1.0 life under the @motif-js/* scope — v0.1.0
through an unintended early 1.0.0, then two namespace renames the migration guides call v2 and
v3. 1.0.0 is the deliberate v1: the full library, consolidated under a single @usemotif/*
scope, with the meta package as the unscoped usemotif. The legacy @motif-js/* packages stay
on npm, frozen, carrying deprecation notices that point at the migration guides.
The runtime, the token model, and the component API are unchanged from the final @motif-js/*
releases — 1.0.0 is a packaging and stability milestone, not a behaviour change.
Added
- Styling core. Style-prop API and
styled()factory; two-layer token system — primitive palette plus semantic intent; nestable<Theme>sub-themes with name chaining. - Responsive system. Container and media queries through three syntaxes — object, positional array, and string DSL — with a native container-query polyfill.
- ~50 primitives. Layout, typography, media, forms, scroll, and a11y primitives, cross-platform.
- ~38 headless behaviour components. Dialog, Popover, Menu, Combobox, Tabs, Tooltip, ColorPicker, CommandPalette, MultiSelect, TreeView, and the rest — unstyled, WAI-ARIA correct, keyboard and screen-reader complete on both platforms.
- Animation. Mount and unmount transitions via
enterStyle,exitStyle, andtransition; a native timing driver and an optional Reanimated spring driver; named theme animation presets. - Progressive compiler.
@usemotif/compiler-core,-babel,-swc, and-metro— static extraction, wrapper stripping, pseudo-state extraction, nativeStyleSheethoisting. The runtime path works unchanged with no plugin installed. @usemotif/icons— generator-driven, lucide-backed, tree-shakes per import.@usemotif/reset— opt-in CSS reset that does not fight the runtime.@usemotif/test-utils— cross-renderer conformance suite and Vitest matchers.- SSR —
SSRStyleCollectorand a streaming style registry for the Next.js App Router.
Changed
- Namespace consolidated to
@usemotif/*. All thirteen scoped packages moved from@motif-js/*to@usemotif/*; the meta package stays unscoped asusemotif. Every package reset to a fresh1.0.0on the new scope.
Deprecated
- The
@motif-js/*scope. Existing installs keep working; new installs see npm deprecation notices pointing at the v2 → v3 migration guide. Runnpx @usemotif/migrate rename-v3for the mechanical rewrite.
Fixed
- SWC compiler CSS delivery. The SWC plugin emits its aggregated CSS through a virtual module — apps no longer wire the extracted stylesheet by hand.
- Workspace dependency publishing.
workspace:*ranges rewrite correctly on publish, so installed tarballs resolve cleanly.
v0.3.0 — 2026-04-28
Added
@motif-js/compiler-core— AST analysis and extraction for static style props.@motif-js/compiler-babel— the JSX-rewrite plugin.- Bundler shims — Vite, webpack, and Metro entry points.
- Box compile fast-path — a build-time rewrite measured at 1.73× over the runtime path.
v0.2.0 — 2026-04-28
Added
@motif-js/react-nativefoundation —ThemeandBoxon React Native.- Native primitives —
Stack,HStack,VStack,Text,Pressable,Image. - Viewport-driven responsive resolution on native, reading
Dimensions. - Native container-query polyfill —
@<bp>keys parse and apply as on web. - Conformance adapter — one snapshot suite run against both renderers.
v0.1.0 — 2026-04-27
First publish. Phase A and Phase B closed.
Added
@motif-js/core— token model, theme types, style-prop schema, runtime resolvers.@motif-js/react-web—Box,Theme,ThemeProvider, the style-prop runtime.@motif-js/tokens— default light and dark token presets.useThemeanduseThemeNamehooks.- CSS-variable emission and
SSRStyleCollectorfor server rendering.