react-brain
Browse decisions
React & language foundations 3App architecture 9UI 12Platform & native 9Build, test, observe, secure 6AI in React apps 3stack composerdecision recordscensusstaleness bencharchitecturechangelogmethodologyroadmap

entriesui · verified 2026-07-09 · react-native

UX polish primitives — toasts, haptics, splash screens, image viewers (React Native)

draftedconfidence: lowearly: 1/12 of this tier graded so far (0 overturned) — the public scorecard →

re-verified 2× — 2026-07-13 · 2026-07-09 · changelog

recommendation

Toasts → sonner-native (or burnt for platform-native elements). Haptics → expo-haptics. Splash → react-native-bootsplash on bare RN, expo-splash-screen on Expo (switch to bootsplash when you need its generator/branding control). Image lightbox → galeria. Each sub-domain is small — pick once, move on; the polish is in the details, not the library hunt. Lightly vetted (confidence: low).

  • toast stack with real motion design → sonner-native; platform-authentic system toasts → burnt
  • haptic feedback → expo-haptics (bare RN included); already on react-native-haptic-feedback → fine, don't churn
  • splash/branding control or bare RN → react-native-bootsplash; stock Expo template → expo-splash-screen is already there
  • tap-to-zoom image lightbox → galeria (native transitions); avoid starting new work on react-native-image-viewing (dormant since 2022)

Low confidence — fast-moving or lightly-vetted domain: treat the pick as a vetted lead and prototype before committing.

Options & tradeoffs

the field considered — and why each one isn’t the default here

optiontradeoffevidence
toasts — sonner-nativeport of Emil Kowalski's sonner (stacking, swipe, promise toasts); active (0.26.x, 2026-06); the design-led pick449k/wk · ships in 2/14
toasts — react-native-toast-messagethe JS incumbent (v2.4, still active 2026); simple, widely deployed, less polished motion528k/wk
toasts — burntNATIVE toast/alert elements (SPIndicator on iOS, ToastAndroid); platform-authentic but less customizable; slower release cadence (0.13, 2025-03)346k/wk
haptics — expo-hapticsthe default — system haptics engine on iOS, vibration effects on Android; works in bare RN via Expo Modules3.4M/wk · ships in 5/14
haptics — react-native-haptic-feedbackthe bare-RN incumbent (v3.0, 2026-03); slightly lower-level trigger set476k/wk · ships in 6/14
splash — react-native-bootsplashthe de-facto splash tool (v7.3) — asset generator CLI, edge-to-edge by default, works with Expo prebuild; imperative hide() when app is ready206k/wk · ships in 5/14
splash — expo-splash-screenthe Expo default, ships with the template; config-plugin driven; fine unless you need bootsplash's generator/branding control4.2M/wk · ships in 4/14
image viewer — galeria (@nandorojo/galeria)native shared-element lightbox (v3, 2026-05; iOS 16+) — fluid pinch/dismiss transitions the JS viewers can't match33k/wk
image viewer — react-native-image-viewingthe JS incumbent — unmaintained since 2022; works, but no native transitions and aging75k/wk

evidence: npm weekly downloads (signals snapshot) · “ships in n/D” = adoption across the production-app census, honest denominators

npm weekly downloads (from the corpus's last signals run): sonner-native 449k · react-native-toast-message 528k · burnt 346k · expo-haptics 3.4M · react-native-haptic-feedback 476k · react-native-bootsplash 206k · expo-splash-screen 4.2M · @nandorojo/galeria 33k · react-native-image-viewing 75k

Verified notes

NEW entry (2026-07-09): four recurring micro-domains that had no home — each surfaced by Native Weekly's 2026 run (sonner-native, bootsplash 7, galeria, react-native-tickle) and promoted on the user's call. All versions/dates verified vs npm 2026-07-09. Deliberately ONE entry, not four: none of these carries enough selection weight alone, but together they are the 'app feels finished' checklist. Skipped as too-early: react-native-tickle (Nitro haptics w/ AHAP patterns — not yet on npm). expo-haptics/expo-splash-screen versions track the SDK.

Canonical reading

Editorial annotations on why each piece matters — the articles themselves are the originals; read them there.

Building a toast componentEmil Kowalski (sonner author)

The design rationale under sonner (and thus sonner-native): interruptible transitions over keyframes, index-scaled stacking, pause-on-hidden, momentum swiping, gap-filling hover pseudo-elements. Web-authored, but it is the canonical 'why good toasts feel good' — the taste this entry's toast pick imports.

Sources

Depth (in-domain rules) is owned by the react-native-best-practices skill — this entry is selection breadth.

Related in ui: styling · component-libs · animation · lists · a11y · i18n · charts · editors · svg · maps · calendars