React and React Native Weekly: Reanimated Swaps Its Layout Engine (Sep 21, 2026)

Reanimated 4.7 makes the new layout engine default, Gesture Handler 2.x ends at RN 0.87, six EAS CLI releases, RN 0.88 rc.1 and Skia on SwiftPM.

React and React Native Weekly: Reanimated Swaps Its Layout Engine (Sep 21, 2026)

Two of the libraries sitting under almost every React Native app changed underneath you this week, and neither one made a headline. Reanimated switched its layout animation engine to a new implementation by default. Gesture Handler announced that React Native 0.87 is the last version its 2.x line will support. Both landed as ordinary minor releases. Both are the kind of thing you find out about during a release week rather than during an upgrade week, if you are unlucky.

Here is what mattered in React and React Native for September 14 to 20, 2026.

News

Gesture Handler 2.x has reached its last React Native version

Gesture Handler 2.33.0 shipped on September 14 and opens with a line worth reading before the changelog: React Native 0.87 is the last React Native version supported by the 2.x line, and support for newer releases continues in Gesture Handler 3. So 2.33.0 is a courtesy release. It backports RN 0.87 support, adopts AGP 9, and fixes a fatal Cannot read property 'translationX' of undefined crash when a touch event serialises without allTouches.

The rest of the bug list reads like a tour of every Android gesture ticket you have ever filed: text getting selected during gestures, a ConcurrentModificationException in the orchestrator, mouse interactions, a crash when a mount listener fires after GestureDetector unmounts, minVelocity behaving wrong, tap cancellation in iOS modals.

My take: this is a well-run deprecation and it still costs you something. If you are on 0.87 and pinned to 2.x, you now have a hard ceiling. The upgrade to 3.x is not a lockfile bump, it is an API review, so put it on the board before the 0.88 upgrade rather than during it. Doing both in the same week is how a two-day upgrade becomes a two-week one.

EAS CLI shipped six releases in five days, one of them breaking

Expo pushed 24.4.0 through 24.7.0 between Monday and Wednesday. 24.4.0 raises the Node floor to ^20.18.3 || >=22.0.0, which will fail your CI image before it fails anything else, so check the Node version in your build container today. The same release injects a guard into every iOS Simulator process during --egress local sessions that refuses connections bypassing the system proxy and logs the calling frameworks, plus proxy environment variables so gRPC and libcurl clients route through the egress client too. If you have ever had to prove to a compliance reviewer where simulator traffic goes, that is a real answer instead of a shrug.

24.5.0 is the one I keep thinking about: connected sandboxes can now run shell commands through the Expo MCP server. That is an agent with a shell inside your build environment. 24.6.0 streams logs during eas build --wait and stops fetching the primary account at login, so scoped access tokens work. 24.7.0 streams iOS Simulator previews over H.264 and reports the expo.dev preview page instead of a raw tunnel URL, in the printed instructions and in --json. Anything parsing that JSON needs a look.

Releases

Reanimated 4.7.0 makes the new layout animations engine the default

4.7.0 landed September 18 and flipped the light-tree based layout animations proxy on for everyone. Underneath it is a serious rewrite: one proxy instance per surface, centralised animation lifecycle and UI operations, explicit shared container ownership, config updates serialised with the pull transaction, Android view hierarchy updates only during JS pulls, and a stack of fixes for reparented views and views landing on the wrong final layout after config or order changes.

There is an escape hatch. Set the USE_LEGACY_LAYOUT_ANIMATIONS_PROXY feature flag and you get the old engine back, with one catch: the old engine has no shared element transitions, so you cannot combine that flag with ENABLE_SHARED_ELEMENT_TRANSITIONS. Note the peer range while you are in there, react-native: 0.86 - 0.88.

If your app leans on Layout, entering and exiting in lists, smoke test list mutations after this upgrade rather than assuming a minor is a minor. The changelog is full of fixes for exactly the cases that look fine in a demo and look wrong in a 400 item feed.

React Native 0.88 reaches rc.1

0.88.0-rc.1 arrived September 16. Stable is still 0.87.1. The interesting entry is the imperative EventTarget API on native view refs in canary, so addEventListener, removeEventListener and dispatchEvent on a ref, alongside a web-based event dispatching refactor that is now enabled. React Native has been converging on web semantics for years and this is one of the load bearing pieces. Hermes moved to 260318099.0.3. Library authors, build against the RC this week rather than in December.

Skia 2.12.0 adds Swift Package Manager support

2.12.0 shipped September 16, the first feature release since Shopify announced it is stepping back from React Native. SwiftPM support for iOS is the headline, which matters now that RN 0.87 made SwiftPM a first class option. Also fixed: losing the canvas WebGL context on layout effect cleanup, dropped ImageSVG offsets when x or y is zero, invalid SVG parse results, and default Graphite texture usage. Maintenance is clearly continuing, which is what we said to expect in our Skia guide on Wednesday.

Navigation, screens and maps

React Navigation shipped 7.4.0 on September 15 with a render callback for custom navigators, patch releases on the 17th, and two more rounds of the v8 alpha train on the 14th and 19th. react-native-screens 4.28.0 is a small Android fix release, mostly Tabs and Stack v4 layout issues, with 5.0.0-alpha.3 following on the 17th. We went through what that library actually does on Friday.

And react-native-maps had a week: 1.29.3 through 1.29.8, five of them on September 19 alone. Nil checks on Apple Maps subview insertion, a guard on GoogleMap access when mapPadding is set before onMapReady, custom marker views clipped by an undersized bitmap on Android, iOS polygon paths not updating when a coordinate value changes rather than the count, and a native flat prop on the marker component. Upgrade if you ship maps. We have a full guide on that landing Wednesday.

Around the wider stack

react-router 8.4.0 and 7.18.4 both landed September 15. Node 26.9.0 (September 16) adds a generic MAC API and lets crypto discover ciphers and hashes from OpenSSL providers, which is genuinely useful if you run anything with a hardware or FIPS provider behind it. Expo published 58.0.0-preview.3 with 57.0.24 on the stable line. Next.js stayed on 16.4 canaries all week. Storybook opened its 11.0 alpha. TanStack Query moved to 5.103.1 across every adapter.

Worth reading

The Shopify question, asked by regular people

Last week Shopify said it was moving off React Native. This week r/reactnative did the useful part: a thread titled roughly “would you still choose React Native for this, or go fully native now” that is full of people describing their actual app and asking for a straight answer. Read it for the shape of the answers, which cluster on team size and how much of the app is platform specific surface, not on framework quality. That is the right axis. We argued the same thing from a different angle in React Native vs Swift.

A QA approach that cost a team $38k

Also on r/reactnative, a write up of a mobile QA setup that burned 38 thousand dollars before anyone questioned it. The details are specific enough to be useful and the lesson is the boring one: device farm minutes and manual regression passes both scale with release frequency, and nobody notices until the invoice does. Worth ten minutes if you are about to sign a testing contract.

Both blogs were quiet this week. No react.dev post, no reactnative.dev post, which is usually what a release candidate week looks like. The work moved in the dependency graph instead, which is exactly where nobody is watching. If I missed something you shipped, say so in the comments and it goes in next Monday.

Leave a Reply 0

Your email address will not be published. Required fields are marked *