Releases
What has landed in @delacour/native-ui, newest first.
Pre-1.0
@delacour/native-ui is at 0.1.0. The API is still moving — component surfaces, prop names and
token names can all change between versions. Pin an exact version.
Unreleased
Added
- Tabs — a row of tabs and the panels they switch between. One shared value drives the pager's translation, the measured indicator's frame and every separator's opacity, with a swipeable pager that gives up the vertical axis so it works inside a scroll view.
- BottomSheet — a sheet on
@gorhom/bottom-sheet, with the scrim rebuilt so aTextInputinside one still receives its taps. - Accordion — sections animated from a measured height, with
singleandmultipleselection as a discriminated union. - Slider — a value or a range picked by dragging. The package's first
Gesture.Pan(). - Switch — an on/off control with a thumb you can drag as well as tap.
- Checkbox — a box that is ticked or not, with
Checkbox.LabelandCheckbox.Group. Six colours, three sizes, two alignments, an indeterminate state, and a three-part animation driven off one shared value. - Radio — one choice from a set, with
Radio.Label,Radio.IndicatorandRadio.Group. The indicator trails the label rather than leading it.Radio.Indicatoraccepts custom children in place of the default dot. - Field — the form layout and its state cascade.
Field.Set,.Legend,.Group,.Label,.Description,.Error,.Contentand.Separator. The whole row drives the control once one registers a press. - Input — a text field plus
Input.GroupwithPrefixandSuffixdecorators. One box slot with two homes, so a grouped field is the same box rather than a similar one. - Badge — a compact label for status, category or count. Four surface variants × six semantic
colours, plus
Badge.CloseButtonfor a dismissible tag. - Text — the type scale and the inheritance cascade, with twelve presets. Every
Textpublishes its resolved class to its subtree and merges the one it inherited. - Screen — the screen frame. Self-measuring navbar and footer, four scrollables, two
whole-screen states, and a
debugmode that paints every layer. - DelacourProvider — the four root providers in one component.
- ListGroup and Separator — a row surface with dividers inserted for you, and the rule it inserts.
- Spinner — an angle-compensated gradient arc that shares the icon scale, wired into
Button'sisLoading. - Expo entry point —
@delacour/native-ui/expo/navigation-theme, plususeNavigationTheme()for apps on a different navigator. DelacourUI.*display names on every component, enforced by a test that reads the source as text.elevated/elevated-foregroundtokens, minted for a surface that has to sit abovemutedin both themes.- Per-component
AGENTS.md, withsrc/docs.test.tsfailing the build on a component that is undocumented or missing from the package doc's index. - Tokenised sizes —
--spacing-button-*,--spacing-icon-*,--spacing-input-*,--text-button-*,--text-input-*,--spacing-navbar-row,--spacing-screen-gutter.IconandSpinnershare one scale. scale-fadepress feedback, composed fromscaleandfaderather than spelled out.
Changed
- Compound components moved to one file per part, with the surface assembled by a closing
Object.assign. Button,ListGroupandScreenmigrated ontoTextrather than carrying their own type scales.- Worklets cross back to JS with
scheduleOnRNfromreact-native-worklets, not Reanimated's deprecatedrunOnJSshim. A Biome rule fails the build on the old names. ButtonandListGroup.IteminheritfeedbackfromPressableinstead of restating it.Separator'stv()moved intoseparator.tsx— the pattern C carve-out for a single styled element with no pure resolvers.
Fixed
Buttonkeeps its footprint when the spinner replaces a composed icon, so the label no longer shifts when work begins.- Literal colours are no longer looked up as CSS variables.
- The spinner arc's joint no longer composites into a bright dot opposite the head.
- An inline padding no longer erases a caller's
className. - Pressables are exposed to assistive technology.
Full history lives in the repository. Every commit is scoped and prefixed —
git log --oneline -- packages/native-ui.