npm tamagui 2.0.0
v2.0.0

9 hours ago

Features

  • sheet: preserve fit scroll viewport on keyboard #4009 (natew)

Bug Fixes

  • core: avoid stop propagation if ONLY pressStyle (natew)
  • toast: strip react-native from web bundle via TAMAGUI_TARGET guard (natew)
  • core: isBrowser checks document instead of window so it's false on native (natew)
  • use-event: always use useInsertionEffect, drop broken SSR fallback (natew)
  • core: restore Android RNGH press handling semantics (natew)
  • core: preserve rngh nested press ownership by pointer (natew)
  • core: remove responder claims from RNGH press path to fix startup freeze (natew)
  • core: hoist rngh responder claim to outer display:contents wrapper (natew)
  • core: fire orphan pressOut when rngh gesture loses ownership mid-drag (natew)
  • core: move gestureState into objects to avoid workletization causing stale references (natew)
  • core: stop clearing nextState before React commits so press-out in same JS task isn't bailed (natew)
  • site: recover from stuck OAuth popup instead of alert+stranding #3994 (natew)
  • site: bypass navigator.lock on /auth so OAuth never hangs on tab contention (natew)
  • vite-plugin: auto-dedupe tamagui packages to prevent duplicate instances from split sub-entry bundles (natew)
  • starters/expo-router: align deps with SDK 55 to fix "Couldn't find a LinkingContext" (#3991) (natew)
  • plugin: cjs resolve #4009 (Henry Hobhouse)
  • core: freeze native gesture mode after first render (natew)
  • site: drop /auth timeout to 3s with auto-redirect, prevent popup login loop (natew)
  • adapt: keep teleported subtree mounted across parent re-renders #3997 (Hirvesh)
  • compiler: match monorepo disk paths and pass through whitelisted package internals in dynamic eval (natew)
  • kitchen-sink: don't rewrite lineHeight on non-tamagui styles #4009 (natew)
  • compiler: drive web/native resolution from platform arg, inline TAMAGUI_TARGET/EXPO_OS in bundled config #4009 (natew)
  • compiler: drive web/native resolution from platform arg, inline TAMAGUI_TARGET/EXPO_OS in bundled config (natew)
  • static: emit non-style props once and rename dynamic ones #4009 (Janic Duplessis)
  • core: avoid display:contents wrapper on Fabric to prevent crash in mount transactions (natew)
  • core: only attach RNGH press gesture for real user handlers, not synthesized pressStyle events (natew)
  • core: use non-arbitrating Manual gesture for pressStyle-only components (natew)
  • list-item: fix regression making spacing much smaller after icon (in february) (natew)
  • popper: avoid hooks error when changing animatePosition value (natew)
  • core: skip pressStyle Manual observer on Android to avoid JS freeze (natew)
  • sheet: render Sheet.ScrollView with snapPointsMode="fit" (natew)
  • core: lazy Platform.OS read in eventHandling.native so static extraction can load native bundle (natew)
  • input: namespace placeholder/selection CSS vars to avoid self-reference with theme tokens (natew)
  • core: release responder on termination + add Tap maxDistance so scrolling cancels press (natew)
  • menu: only dismiss on scroll when the scroll moves the menu's anchor (natew)
  • core: improve isBrowser check #4009 (natew)
  • sheet: restore android gestures in portaled sheets #4009 (natew)
  • vite-plugin: remove vite peer dependency #4009 (natew)
  • static: rewrite dynamic testID props #4009 (natew)
  • core: resolve media props in functional variants #4009 (natew)
  • button: pass native text props safely #4009 (natew)
  • select: hide closed native viewport contents #4009 (natew)
  • adapt: preserve teleport subtree rerenders #4009 (natew)
  • animations-reanimated: avoid fabric animated style guard crash #4009 (natew)
  • core: avoid readonly prop overlay crash #4009 (natew)
  • vite-plugin: keep rnw-lite aliases on esm #4009 (natew)
  • vite-plugin: remove vite peer dependency #4009 (natew)
  • site: use numeric line heights #4009 (natew)
  • static: preserve imported component config during extraction #4009 (natew)
  • site: update vitest tsconfig paths config #4009 (natew)
  • site: avoid vitest plugin type mismatch #4009 (natew)
  • vite-plugin: pre-bundle memoize-one with rnw-lite to avoid dev re-optimize reload #4009 (natew)
  • animations-motion: render at resting position on first activation instead of springing from 0 Fixes #4011 (natew)
  • core: preserve onPress/children types on user styled() components Fixes #4010 (natew)
  • compiler: fix ternary inside pseudo style + regular style overlapping (natew)

Documentation

Performance Improvements

  • core: replace O(categories) for-in scan in hot path for token resolution (natew)

Tests

  • stabilize NestedPressExclusive, TabsOnInteraction, PressStyleScrollStuck for iOS Detox CI (natew)
  • drop invalid justifyContent='stretch' from GroupPressTransitionMatrix (natew)
  • dedupe react-native-web in kitchen-sink webpack so Sheet PanResponder fires on macOS (natew)
  • format webpack alias addition with oxfmt (natew)
  • sheet: add Sheet.ScrollView + snapPointsMode=fit usecase and playwright tests (natew)
  • kitchen-sink: stabilize native detox coverage #4009 (natew)

Continuous Integration

  • harden simulator app install with FrontBoard verification and retry (natew)
  • bump Maestro driver timeout to 360s, fail fast on WarmUp failure (natew)
  • fix maestro retry path doubling working directory (natew)
  • format fix for vite-plugin plugin.ts #4009 (Henry Hobhouse)
  • detox: default-disable KeyboardProvider in tests to fix sync hangs (natew)
  • detox: add settle delays to avoid reload-after-launch hang (natew)
  • detox: move metro to port 9034 to avoid foreign dev server collisions (natew)
  • detox: drop android full-suite retry, fix detox NPE in 2 tests #4009 (natew)
  • fix android detox launch hang and ios shard 3 hook timeouts #4002 (natew)
  • detox: skip Expo SplashScreen registration under Detox to fix Android launch hang #4002 (natew)
  • detox: retry safeLaunchApp on transient FBSOpenApplicationService errors #4003 (natew)
  • detox: bump compiler-test hook timeouts and home-title wait for slow CI runners #4004 (natew)
  • include new sheet detox tests in iOS shards #4009 (natew)
  • split overloaded iOS Detox shard #4009 (natew)
  • detox: scope jest haste to e2e, rebalance to 6 shards, add startup timing probe (natew)
  • detox: transpile e2e via dedicated tsconfig (no type-check), revert to 4 shards (natew)
  • detox: bump detox process timeout to 60min for margin, remove startup probe (natew)

Chores

  • remove old v2 toast experiment (natew)
  • remove all react-native peer dependencies from tamagui as pnpm is a massive headache (natew)
  • remove more peerdeps, because pnpm is a bad bundler (natew)
  • starters/expo-router: revert version range deviations to match monorepo common ranges, bump kitchen-sink expo-splash-screen to match (natew)
  • oxfmt formatting (natew)
  • update one and vite (natew)
  • kitchen-sink: format merged main changes #4009 (natew)
  • add otp entry to releases #4009 (natew)
  • oxfmt styledNonStyleProps.test-d.ts (natew)

Commits

  • 5273965: v2.0.0-rc.39 (natew)
  • d76f350: v2.0.0-rc.40 (natew)
  • 92700ea: canary2.0.0-rc.40-1776053246040 (natew)
  • 15b12fa: canary2.0.0-rc.40-1776058939761 (natew)
  • purge Cloudflare cache on server boot to fix stale HTML after deploy (natew)
  • 40e5d35: improve skew protection (natew)
  • 3005d6c: Add native menu radio group Detox coverage (natew)
  • 4f684f4: canary2.0.0-rc.40-1776290502350 (natew)
  • 6f91607: v2.0.0-rc.41 (natew)
  • 4bf7515: canary2.0.0-rc.41-1776298929157 (natew)
  • 3090bb3: canary2.0.0-rc.41-1776470906478 (natew)
  • bc1f8bc: canary2.0.0-rc.41-1776501875026 (natew)
  • bf683e1: canary2.0.0-rc.41-1776626066745 (natew)
  • 31a88a0: canary2.0.0-rc.41-1776717758781 (natew)
  • 9872e62: canary2.0.0-rc.41-1776739748773 (natew)
  • 9881182: canary2.0.0-rc.41-1776811998898 (natew)
  • 58be682: canary2.0.0-rc.41-1776813063972 (natew)
  • 8cc8304: fix(button, input): add unstyled: true styling that resets browser default styles for button and input (natew)
  • 2f6b5e6: improve detox shard (natew)
  • 569a03a: update one (natew)
  • d72304a: Implement v2 style compatibility modes (natew) #4009
  • b5cc5e8: canary2.0.0-rc.41-1777345848979 (natew) #4009
  • 9c86bcb: up one again (natew)
  • 7a1ea4a: canary2.0.0-rc.41-1777420450440 (natew)
  • f8e3353: canary2.0.0-rc.41-1778092764335 (natew)
  • cb6fd05: canary2.0.0-rc.41-1778104426158 (natew)
  • 4c48c33: upgrade one (natew)
  • fe6f9ad: give detox more headroom (natew)
  • 5eefe49: remove old main (natew)
  • 3df55a9: v2.0.0-rc.42 (natew)
  • 69f77cd: auto-cancel v1 on v2 purchase (natew)
  • 5be132f: bump one (natew)
  • cf617cf: canary2.0.0-rc.42-1778558431016 (natew)
  • 87b8f62: canary2.0.0-rc.42-1778700387685 (natew)
  • 19327fc: canary2.0.0-rc.42-1778704157866 (natew)
  • regenerate css with namespaced input vars (natew)
  • 9bed85c: canary2.0.0-rc.42-1778799071943 (natew)
  • d61edfa: Merge remote-tracking branch 'refs/remotes/pr/4001' into review/pr-4001-3997-3995-issues (natew) #4009
  • 1c32208: Merge remote-tracking branch 'refs/remotes/pr/3997' into review/pr-4001-3997-3995-issues (natew) #4009
  • 8cfd298: Merge remote-tracking branch 'refs/remotes/pr/3995' into review/pr-4001-3997-3995-issues (natew) #3995
  • 8cb1c60: merge main into issue integration branch (natew) #4009
  • 645aea8: Merge branch 'v2-style-compat' (without lineHeight changes) (natew) #4009
  • 9779677: canary2.0.0-rc.41-1779406554468 (natew) #4009
  • 982e200: canary2.0.0-rc.41-1779421707144 (natew)
  • 6d85991: v2.0.0 (natew)

Don't miss a new tamagui release

NewReleases is sending notifications on new releases.