Features
- add onAnimationComplete callback to Sheet and Dialog (Hirvesh)
- core: support opacity modifier on color tokens ($token/50 syntax) (natew)
Bug Fixes
- site: fix Discord modal focus loss, 401 errors, and stale access cleanup (natew)
- core: alert parent component child is focused (Drew Miller)
- core: check focusWithinStyle exists on pseudos (Drew Miller)
- core: fix focusWithinStyle and add comprehensive tests (natew)
- avatar: replace fullscreen prop on Image with explicit position styles (Dan Kanefsky)
- core: allow fallback radius and zIndex tokens in config-less type resolution (Tharaka De Silva)
- animations-css: fire useAnimatedNumber onFinish after transition duration instead of immediately (natew)
- tie sheet close opacity to animation completion instead of setTimeout(400) (Hirvesh)
- animations-css: fix typecheck errors in useAnimatedNumber onFinish timer ref (natew)
- test: skip focusWithinStyle animated tests on native driver, increase timeout for reanimated (natew)
- kitchen-sink: re-export from index.native in fallback index.ts for Detox resolution (natew)
- ci: revert unit test concurrency to 1, expo export times out with parallel builds (natew)
- ci: increase Detox navigation timeout to 15s for grid render/settle time (natew)
- kitchen-sink: remove web-only test cases from index.native.ts to fix Detox (natew)
- core: avoid css transitions while switching from ssr to system theme (natew)
- sheet: fix scroll drift during fast upward drag from non-top position (natew)
- build: use package.json sideEffects field instead of custom removeSideEffects (natew)
- ios: workaround expo-modules-core 55.x Swift 6 strict concurrency in Podfile (natew)
- ios: add expo config plugin to workaround expo-modules-core 55.x Swift 6 concurrency (natew)
- ios: use Swift 6 + minimal concurrency instead of Swift 5.10 for expo-modules-core (natew)
- ios: add IsolatedConformances feature flag for expo-modules-core Swift 6.1 syntax (natew)
- ci: pass IsolatedConformances and SWIFT_STRICT_CONCURRENCY via xcodebuild command line (natew)
- ci: include package.json in build cache fingerprint to bust stale builds on dep upgrades (natew)
- ci: use --no-dev Metro flag to prevent HMR crash on RN 0.83 (natew)
- ci: disable HMR via Metro rewriteRequestUrl to fix RN 0.83 crash (natew)
- align expo-router starter to SDK 55 / RN 0.83 and fix HMR crash (natew)
- ensure tamagui config loads before any component imports (natew)
- fallback to light theme when useColorScheme returns null on RN 0.83 (natew)
- core: handle null defaultTheme in TamaguiProvider, enable prebuilt binaries (natew)
- ci: fix Detox test failures on RN 0.83 — force light mode, fix noRngh reload (natew)
- kitchen-sink: sync NavigationContainer theme with ThemeContext to fix dark/light mismatch on RN 0.83 (natew)
- core: harden opacity modifier parsing and TamaguiProvider theme fallback (natew)
- ci: fix typecheck, expo-router SDK 55 alignment, and native test setup (natew)
- restore kitchen-sink-go Podfile, auto-boot simulator in native-ci (natew)
- auto-install app on simulator for maestro tests (Expo Go + dev client) (natew)
- set RCT_jsLocation in detox config so app finds metro (natew)
- fix expo go download (extract into .app bundle), cache downloads, improve app detection (natew)
- simplify app detection, add maestro debug output (natew)
- use explicit simulator UDID throughout native-ci (fixes multi-simulator) (natew)
- guard Platform.OS with optional chaining for node.js compat in babel extractor (natew)
- e2e: increase timeout for second select visibility after sheet close animation (natew)
- make check less strict, only validate actual duplications on non-leaf packages in lockfiles (natew)
- split out spinner package as it says in docs (natew)
- image: omit undefined width/height from style on native #3966 (Daniel Dimitrov)
- image: merge incoming style prop instead of discarding it #3966 (Daniel Dimitrov)
- core: Theme name changing to undefined stays stuck on previous theme (natew)
- animations-motion: make useAnimate SSR-safe for Vite SSR bundling (natew)
- ci: fix integration + sandbox tests, vite plugin improvements (natew)
- menu: avoid warning/attempting to load zeego when not actively used (natew)
- select: unused disablePreventBodyScroll prop #3965 (Thilo)
- media-style: event styles in $platform #3959 (Quan Nguyen)
- animations-react-native: only use native driver on Fabric, accept useNativeDriver option (natew)
- revert peerDeps back to deps, use skipPublishIfUnchanged for release optimization (natew)
- sheet: add 1s safety fallback for close opacity when animation callback fails (natew)
- useAnimatedNumber uses isFabric directly, sheet fallback checks openRef (natew)
Documentation
- add tracking links for expo-modules-core Swift 6 workaround (expo/expo#42525) (natew)
- replace maxMd with max-md #3963 (Ilya Amursky)
Performance Improvements
- tests: bump Playwright CI workers from 2 to 4 (natew)
- ci: cache Playwright browsers and bump unit test concurrency to 2 (natew)
- ci: shard integration tests across 3 parallel machines (natew)
- tests: replace hardcoded sleep in setupPage with readiness poll (natew)
- tests: replace waitForTimeout with polling in AnimationBehavior tests (natew)
- tests: reuse single webpack server across all animation driver runs (natew)
- animations-motion: remove useless useMemo and styleVersion tracking (natew)
- animations-react-native: fabric can animate all style keys now so avoid fallback (natew)
- add avoidReRenders to react-native animation driver (natew)
Tests
- core: add test cases for focusWithinStyle (Drew Miller)
- add DOM Node API integration tests for RN 0.82 compatibility (natew)
- add theme conditional name test (natew)
Continuous Integration
- skip integration tests for unrelated package changes (Geoffrey Sechter)
- enable test workflows on rn82 branch (natew)
- upgrade to macos-15 + Xcode 16.3 for Swift 6.1 support (expo-modules-core 55.x) (natew)
- use Xcode 26.0.1 (Swift 6.2) for expo-modules-core 55.x SE-0434 support (natew)
- fix WorkletJSCallInvoker and ContextMenuAuxiliaryPreview build errors on Xcode 26 (natew)
- upgrade expo SDK 54 → 55 in kitchen-sink to fix expo-modules-core 55 ABI (natew)
- update simulator device from iPhone 15 to iPhone 16 for macOS 15 / Xcode 26 runners (natew)
- increase MAESTRO_DRIVER_STARTUP_TIMEOUT to 300s for Xcode 26 / iOS 26 simulators (natew)
- speed up Maestro tests — upgrade to 2.3.0, skip clearState, parallelize boot+metro (natew)
- enable Android Detox tests on rn82 branch (natew)
- always reset metro cache in maestro tests (natew)
Chores
- improve local testing setup for Playwright and Detox (Geoffrey Sechter)
- move PLATFORM before check_prerequisites for readability (natew)
- upgrade one, vxrn packages to canary 1.10.6-1773669958164 (natew)
- upgrade one, vxrn packages to canary 1.10.6-1773682031882 (natew)
- update bun.lock for vite resolution (natew)
- fix formatting (natew)
- fix formatting (natew)
- fix formatting (natew)
- upgrade react-native-reanimated to ~4.2.2 for expo SDK 55 compatibility (natew)
- upgrade tamagui.dev expo packages to SDK 55 to fix hoisting conflict (natew)
- upgrade to expo SDK 55, react-native 0.83.2, and align all RN ecosystem deps (natew)
- simplify review — rename swift5→swift6 plugin, sync kitchen-sink-go, hoist hot-path lookups (natew)
- note rn animation improvements (natew)
- add unpublish-old-canaries script, fix native-ci build (natew)
- allow leaf packages to avoid publish (natew)
Commits
- f879c52: upgrade one, fix imports (natew)
- b7c33be: canary2.0.0-rc.26-1773452370596 (natew)
- 6e2e2bd: feat(sheet,dialog): add onAnimationComplete tests, fix CSS driver onFinish timing (natew)
- b18244f: Revert "perf(tests): replace waitForTimeout with polling in AnimationBehavior tests" (natew)
- 5b15dd6: fix ci (natew)
- 80ba983: Merge branch 'main' of github.com:tamagui/tamagui (natew)
- fae3f24: canary2.0.0-rc.26-1773683384816 (natew)
- 8a9953e: Revert "fix(ios): workaround expo-modules-core 55.x Swift 6 strict concurrency in Podfile" (natew)
- add bento source repo access to emails, docs, and purchase UI (natew)
- 883266e: fix kitchen sink tsconfig (natew)
- 4c3956e: upgrade one for perf (natew)
- d92fc0c: fix lints (natew)
- d3bd700: add dev (natew)
- 299130b: cleanups and export comapt for pressability (natew)
- f1e38e8: fix rnwlite resolution (natew)
- 8b62050: fix missing types (natew)
- bacb4cb: fix types in kitchen sink (natew)
- ee1902b: up one canary for 83 compat (natew)
- 22f19eb: canary2.0.0-rc.26-1773870098410 (natew)
- 59a4755: improve canary skip publish detection (natew)
- c454b24: improve canary skip publish detection (natew)
- 029d432: preserve the entry .js in cjs mode for compat with node test runners and other environments that dont look for cjs (natew)
- 19df9a8: canary2.0.0-rc.26-1773871134131 (natew)
- 4262fed: skip flaky expo router test (natew)
- 4358819: remove zx, fix tests (natew)
- 807b965: canary2.0.0-rc.26-1773877899807 (natew)
- 4491aed: remove zx (natew)
- 7c02c2f: fix integration for new rn (natew)
- 2d31916: fix types for vite 8 (natew)
- ae1ea72: add stronger warning (natew)
- e15a55f: restore missing package.json (natew)
- 4f45fcf: fix check uses tamagui.build config (natew)
- 7afdd9b: fix for vite 8 symlink issue (natew)
- 35df9cc: fix sandbox and web (natew)
- 31322e0: simplify and fix upstream in one (natew)
- 45f3e40: fix tests (natew)
- 11f8cdc: canary2.0.0-rc.26-1773894550979 (natew)
- f7bfa1c: fix for rolldown in static tests (natew)
- cfc7419: fix simple integration test (natew)
- 8424817: up one, fix detox/ssr navigation (natew)
- dc93849: lint (natew)
- bf25e9a: v2.0.0-rc.27 (natew)