npm tamagui 2.4.0
v2.4.0

4 hours ago

Bug Fixes

  • sheet: reduce js work during drag release (natew)
  • sheet: reduce locked scroll churn during gesture handoff (natew)
  • select: SelectViewportFrame extends ThemeableStack so elevate/bordered resolve (natew)
  • use-window-dimensions: lazy-subscribe to dodge hermes early-eval (natew)
  • core: type the "safe" first-class value for safe-area-aware style props (natew)
  • fix perf regression on parent theme matching (natew)
  • web: don't throw on transient missing parent theme state (natew)
  • core: enter animations stuck at opacity 0 on motion driver — hoisted base setStateShallow collided with the avoidReRenders emitter wrapper field, so the unmounted 'should-enter'→false transition never reached React (natew)
  • portal: repropagate theme across native gorhom portal boundary (natew)
  • sheet: let fit scroll views shrink-wrap (natew)
  • sheet: stabilize web scroll handoff (natew)
  • sheet: freeze native fit sheet viewport when keyboard opens #4052 (natew)

Styles

  • core/web: normalize component-state comments (natew)

Performance Improvements

  • core/web: stabilize useThemeState/useMedia closures, one Proxy per component (natew)
  • theme: drop useId in per-component theme path; counter-based ids instead (natew)
  • core: manual subscribe (useReducer+useEffect) for theme+media; merge keys/schemeKeys useRefs (natew)
  • theme: skip cascade-effect for leaf components (forThemeView flag) (natew)
  • media: swap Proxy for shared getter prototype (Hermes-fast) (natew)
  • core: lazy theme/media subscription — skip listener setup when no tracked keys read (natew)
  • native: skip dead hover work in getSplitStyles (natew)
  • native: extend dead-hover skip to group-hover media keys in getSplitStyles (natew)
  • native: trim leaf hook count — skip NativeMenuContext on iOS, collapse pointer refs 3→1, early-skip data-* in split loop (natew)
  • component-state: hoist setStateShallow onto stateRef; drop useCallback hook (natew)

Tests

  • core: guard theme/media granular re-render (catches over-render regression) (natew)
  • portal: pin native theme repropagation against DynamicColorIOS de-opt (natew)
  • portal: prove web .get() absorbs sub-theme name changes with no re-render (natew)

Continuous Integration

  • install applesimutils by full name for homebrew 6 tap trust (natew)

Chores

  • core/web: rebuild generated types for theme/media perf chain (natew)
  • select: rebuild generated types for ThemeableStack viewport (natew)
  • core/web: refresh useComponentState generated type (natew)

Commits

  • b0ea81d: canary2.3.3-1782462397214 (natew)
  • e3af8a3: canary2.3.3-1782465561627 (natew)
  • 507b696: canary2.3.3-1782495782270 (natew)
  • c8c7f13: canary2.3.3-1782530413169 (natew)
  • 6339cb6: v2.3.3-1782533722506 (natew)
  • b5c28d9: next.md (natew)
  • 4e83dda: v2.4.0 (natew)

Don't miss a new tamagui release

NewReleases is sending notifications on new releases.