v1.0.9
Font weights resolve through Uniwind font-* utilities, SearchField pads Input only for composed slots, Toast duration 0 auto-hides, Select dialog swipe-to-dismiss on RNGH 3 Android
HeroUI Native v1.0.9 reworks how font weights resolve in component styles, fixes SearchField padding when optional slots are omitted, corrects Toast auto-dismiss for zero-duration toasts, and restores Select/Dialog swipe-to-dismiss on Android under react-native-gesture-handler 3.
Installation
Update to the latest version:
npm i heroui-nativepnpm add heroui-nativeyarn add heroui-nativebun add heroui-nativeUsing AI assistants? Simply prompt "Hey Cursor, update HeroUI Native to the latest version" and your AI assistant will automatically compare versions and apply the necessary changes. Learn more about the HeroUI Native MCP Server.
Try It on Your Device
⚠️ Breaking Changes
Toast duration: 0 Now Auto-Hides
duration is typed number | 'persistent', but 0 was silently treated as persistent because the auto-dismiss guard required duration > 0. Zero-duration toasts now go through the same setTimeout path as every other numeric duration and dismiss on the next tick.
Before:
toast.show({ label: 'Quick flash', duration: 0 });
// Toast stayed on screen indefinitely — same as 'persistent'After:
toast.show({ label: 'Quick flash', duration: 0 });
// Toast auto-hides on the next tick
// To keep a toast on screen indefinitely, use 'persistent':
toast.show({ label: 'Sticky', duration: 'persistent' });Migration: Replace duration: 0 with duration: 'persistent' if you relied on the old behavior.
Related PR: #471
Custom Font Apps Must Define --font-bold
Component styles now apply font weight through Uniwind font-normal, font-medium, font-semibold, and font-bold utilities. When --font-* variables are defined, each utility selects the matching family instead of a numeric font-weight. This fixes iOS picking the heaviest face in a custom family, but it means all four variables must be defined if any are defined.
Before:
@theme {
--font-normal: 'YourFont-400Regular';
--font-medium: 'YourFont-500Medium';
--font-semibold: 'YourFont-600SemiBold';
}After:
@theme {
--font-normal: 'YourFont-400Regular';
--font-medium: 'YourFont-500Medium';
--font-semibold: 'YourFont-600SemiBold';
--font-bold: 'YourFont-700Bold';
}Migration: Add the missing --font-bold variable pointing at the bold face of your font family. System-font apps require no changes — numeric weights are restored automatically when no --font-* variables are defined.
Related PR: #473
Bug Fixes
This release includes fixes for the following issues:
- Issue #465: SearchField.Input reserved leading and trailing padding for SearchIcon and ClearButton even when those parts were omitted. Padding is now applied only when the matching compound part is composed.
- Issue #444: Opening a Select or Dialog with swipe-to-dismiss on Android under react-native-gesture-handler 3 threw because the portal content had no gesture root in its native ancestor chain. An internal
PortalGestureRootnow wraps portal dialog content so swipe-to-dismiss works on RNGH 3 Android. - LinkButton no longer applies a default border radius (
rounded-none), which previously clipped text at the edges. - Issue #476:
RadioGroup.Itemwith a nestedRadioexposed tworole="radio"nodes to assistive technology. The nested trigger is now hidden from AT when inside a group item, so each option presents a single radio node. - Issue #467: Select trigger and item labels collapsed when using
content-fitor compact sizing. Default flex styles are replaced withflex-shrink: 1so labels contribute intrinsic width while still shrinking when constrained. - Issue #461: System-font apps lost numeric font weights after the custom-font resolution rework. Weights now fall back to numeric
font-weightvalues when no--font-*variables are defined.
Related PRs:
Updated Documentation
The following documentation pages have been updated to reflect the changes in this release:
- Theming — Documents the
--font-boldvariable requirement and explains how font weights resolve with and without custom fonts - Typography — Notes that custom
--font-*families change weight resolution and links to the theming guide - SearchField — Clarifies that SearchIcon and ClearButton are optional and documents the Without Search Icon composition
- Toast — Clarifies
duration: 0behavior versus'persistent'
Links
Contributors
Thanks to everyone who contributed to this release!