HaloMenuProvidermotion.activationFailOffsetconfigures how far a finger may drift before long-press activation fails, replacing the previous hardcoded pre-activation8pxdrift threshold.
useHaloMenu().liftProgressanduseHaloMenuPreviewProgress()expose the normalized 0→1 lift driver (SharedValue) for animating custom preview decorations from insiderenderPreview.HaloMenuProviderrenderButtonSurfaceprop renders a custom animated button surface, receiving the per-buttonselectionProgressSharedValue(plus resolvedcolors,size,borderRadius). Replaces the default background + shadow; the icon still renders on top. Enables fully consumer-owned, animated button styling (e.g. claymorphism) without exposing the internal SharedValue graph.
- Hover labels that wrap to multiple lines now align to the edge opposite the touch (previously pinned left regardless of side).
- Security policy (
SECURITY.md) with private vulnerability reporting - CI: pack-contents check tolerates npm 10 prepare log noise
- First version published via GitHub Actions trusted publishing with npm provenance
Initial release, extracted from the Pinio app where the interaction shipped in production.
HaloMenuProvider,HaloMenuTrigger,useHaloMenuTrigger,HaloMenuPreviewFrame,useHaloMenu- Radial drag-to-select with lifted preview, hover label, origin dot, and dimmed backdrop
- Injection points: colors, color scheme, motion, haptics, backdrop, label style, activation gating, warn channel
- Layout configuration for button size, icon size, radius, hit radius, arc spacing, edge margin, top flip zone, selected push, action limit, and label offset
- Appearance configuration for button/preview styling, default shadow strength, and touch-origin indicator styling
- Optional
react-native-halo-menu/exposubpath withHaloBlurBackdropfor Expo Blur apps - Native accessibility actions on
HaloMenuTriggerfor screen-reader action fallback, honoringinterceptAction;getHaloMenuAccessibilityPropsexport foruseHaloMenuTriggerusers renderPreviewoptional onHaloMenuTrigger(defaults to children in aHaloMenuPreviewFrame); all standard ViewProps forward to the measured wrapperuseHaloMenu().hide()performs a full close: animates the preview home and clears it, safe without an active gesture (also used byhideOnUnmount)- Failed gestures (taps, scroll-pasts) no longer arm the re-open cooldown or disturb an already-open menu; a second trigger cannot hijack an open session
- Works without
SafeAreaProvider(hover label falls back to zero insets) - Overlay is hidden from the accessibility tree; selection happens under the finger
- OS Reduce Motion support on every animation
- Guard for RNGH #2620 (iOS double
onStartafteractivateAfterLongPress) - Jest mock at
react-native-halo-menu/mockwith working accessibility actions, parity-tested against the real exports