chore(deps): update React Native to v0.87.0 - #6587
Conversation
ab87449 to
af10bcc
Compare
Semver Impact of This PR⚪ None (no version bump detected) 📋 Changelog PreviewThis is how your changes will appear in the changelog.
🤖 This preview updates automatically when you update the PR. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 4 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit af10bcc. Configure here.
| "delay": "^6.0.0", | ||
| "react": "19.1.4", | ||
| "react-native": "0.81.6", | ||
| "react-native": "0.87.0", |
There was a problem hiding this comment.
macOS sample RN version mismatch
High Severity
Flagged per the dependency-update review guidelines: react-native was bumped to 0.87.0 while react-native-macos stays at 0.81.8. Those packages need matching minor versions, so the macOS sample is unlikely to install or build. The updater appears to have applied yarn up react-native across the monorepo, including this intentionally pinned older sample.
Triggered by project rule: PR Review Guidelines for Cursor Bot
Reviewed by Cursor Bugbot for commit af10bcc. Configure here.
| "delay": "^6.0.0", | ||
| "react": "19.2.3", | ||
| "react-native": "0.86.2", | ||
| "react-native": "0.87.0", |
There was a problem hiding this comment.
Reanimated peers reject RN 0.87
High Severity
Flagged per the dependency-update review guidelines: react-native is now 0.87.0, but react-native-reanimated@4.4.1 and react-native-worklets@0.9.2 declare peer ranges of react-native: 0.83 - 0.86. RN 0.87 needs Reanimated 4.6.x and Worklets 0.12.x, so the main sample is outside the supported matrix and may fail to build or run animations.
Triggered by project rule: PR Review Guidelines for Cursor Bot
Reviewed by Cursor Bugbot for commit af10bcc. Configure here.
| "react": "19.2.3", | ||
| "react-dom": "19.2.3", | ||
| "react-native": "0.86.2", | ||
| "react-native": "0.87.0", |
There was a problem hiding this comment.
Expo sample on unsupported RN
Medium Severity
Flagged per the dependency-update review guidelines: the Expo sample stays on Expo SDK ^57.0.0 (which targets React Native 0.86) while react-native was bumped to 0.87.0. That pairing is outside Expo’s supported matrix and can break prebuild, native modules, or Expo Go / dev-client workflows.
Triggered by project rule: PR Review Guidelines for Cursor Bot
Reviewed by Cursor Bugbot for commit af10bcc. Configure here.
| "react-native": "0.86.2" | ||
| "react-native": "0.87.0" | ||
| }, | ||
| "devDependencies": { |
There was a problem hiding this comment.
React Native companion packages remain at 0.86.2 after main package bumped to 0.87.0
react-native was bumped to 0.87.0 but @react-native/new-app-screen, @react-native/babel-preset, @react-native/metro-config, and @react-native/typescript-config stay at 0.86.2.
Evidence
performance-tests/TestAppSentry/package.jsonline 14 bumpedreact-nativeto0.87.0.- Lines 11 and 23–25 leave
@react-native/new-app-screen,@react-native/babel-preset,@react-native/metro-config, and@react-native/typescript-configat0.86.2. yarn.lockshowsreact-native@0.87.0depends on monorepo packages at0.87.0(e.g.,@react-native/codegen,@react-native/gradle-plugin,@react-native/virtualized-lists).- Unaligned toolchain packages frequently cause Metro bundling or Babel transform errors during builds.
Identified by Warden · find-bugs · 3BV-5VG
af10bcc to
5b9b3a9
Compare
| "@sentry/react-native": "8.23.0", | ||
| "delay": "^6.0.0", | ||
| "react": "19.1.4", | ||
| "react-native": "0.81.6", | ||
| "react-native": "0.87.0", | ||
| "react-native-gesture-handler": "2.14.0", | ||
| "react-native-macos": "0.81.8", | ||
| "react-native-reanimated": "3.19.5", |
There was a problem hiding this comment.
Bug: The react-native-macos version (0.81.8) is incompatible with the updated react-native version (0.87.0), which will cause the macOS sample app build to fail.
Severity: CRITICAL
Suggested Fix
Update the react-native-macos dependency in samples/react-native-macos/package.json to a version compatible with react-native@0.87.0, likely 0.87.0 or a corresponding minor version.
Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent. Verify if this is a real issue. If it is, propose a fix; if not, explain why it's
not valid.
Location: samples/react-native-macos/package.json#L21-L27
Potential issue: In the `react-native-macos` sample app, the `react-native` dependency
was updated to version `0.87.0`, but the `react-native-macos` dependency was left at
`0.81.8`. These two packages must have matching versions to be compatible. This mismatch
will cause the `build-macos` CI job to fail during either the `pod install` step due to
dependency resolution errors or the Xcode build step due to mismatched native APIs and
symbols. Even if a build were to succeed, the application would likely crash at runtime.
Also affects:
yarn.lock:28054~28060
Did we get this right? 👍 / 👎 to inform future reviews.
| "@shopify/flash-list": "^2.0.2", | ||
| "delay": "^6.0.0", | ||
| "react": "19.2.3", | ||
| "react-native": "0.86.2", | ||
| "react-native": "0.87.0", | ||
| "react-native-build-config": "^0.3.2", | ||
| "react-native-gesture-handler": "^3.0.1", | ||
| "react-native-image-picker": "^8.2.1", |
There was a problem hiding this comment.
Bug: Sample apps have a version mismatch between react-native (0.87.0) and pinned dev dependencies like @react-native/metro-config (0.86.2), which may cause Metro bundler failures.
Severity: HIGH
Suggested Fix
Update the versions of @react-native/metro-config, @react-native/babel-preset, and other related @react-native/* dev dependencies in the package.json files of the sample apps to match the react-native version (0.87.0).
Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent. Verify if this is a real issue. If it is, propose a fix; if not, explain why it's
not valid.
Location: samples/react-native/package.json#L53-L59
Potential issue: In multiple sample applications, the `react-native` dependency was
updated to `0.87.0`, but related development dependencies like
`@react-native/metro-config` and `@react-native/babel-preset` were left pinned to older
versions (e.g., `0.86.2`). While the package manager will successfully install these due
to an optional peer dependency, a version mismatch will exist at runtime. When the Metro
bundler is started, it will use the mismatched configuration, which is likely to cause
build or runtime failures if there are breaking API changes between versions.
Also affects:
performance-tests/TestAppSentry/package.json:11~17
Did we get this right? 👍 / 👎 to inform future reviews.


Bumps scripts/update-rn.sh from v0.86.2 to v0.87.0.
Auto-generated by a dependency updater.
Changelog
v0.86.0
Added
global.__BUNDLE_LOADER_REPORTER__, if given, during dev-mode bundler loads from Metro (1e0c1f886b by robhogan)Emulation.setEmulatedMedia(11a5432cb2 by huntie)unstable_getViewTransitionInstanceto UIManagerBinding (d8820a403b by zeyap)LayoutContext(d38c756529 by paradowstack)boxShadowand textWithLinkRole (b172f46f0d by NickGerleman)mixBlendModeplus-lighter (aaa0684045 by bigcupcoffee)Android specific
BackHandlerhardwareBackPressevents to access timeStamp from native event. (bf277cb6d4 by rubennorte)android_ripplenow acceptsPlatformColor(60d8b282ea by adrcotfas)ExtraWindowEventListenerinterface to allow native modules to react to window creation / destruction (e.g. Modal dialogs) (58fec1fa8d by zoontek)TextInputautoCompleteautofill hint support and bumpandroidx.autofillto1.3.0. (ac598aff2b by radko93)iOS specific
mach_absolute_time()API in the React-timing module (2ae6c8940d by rubennorte)isPackagerRunningAsyncthat does not block the UI thread waiting on the request to DevServer ("Packager") validating that it is running (dd056d9b4c by vzaidman)RCTSetCustomMultipartDataTaskRequestInterceptorAPI to allow custom modification of multipart data task requests before they are sent (59b8886bb8 by cipolleschi)Changed
LogBoxDatatests to Jest modern timers (dea2136a49 by chicio)applyViewTransitionName(d17ecca3c9 by zeyap)reportErrorsAsExceptionsto anything other thanfalseno longer does anything. (Previously, setting it to a falsey value would be similar to setting it tofalse.) (f0748a6387 by yungsters)getNullableViewStateinSurfaceMountingManager::updatePropsand log a soft exception instead (bbf7004935 by Bartlomiej Bloniarz)DefaultTurboModules::getto end ofTurboModuleManager(6b32971f46 by zeyap)Android specific
AnimationBackendChoreographerdoesn't guard theReactChoreographerpost/remove withsynchronized(paused)(22d327595d by Bartlomiej Bloniarz)enforceNavigationBarContrastattribute (dfddcc9796 by zoontek)iOS specific
RCTHTTPRequestInterceptorfor selective HTTP request modification (0c7d780aa0 by cipolleschi)SRWebSocketProviderfor selective WebSocket header injection (f3aa8c21d1 by cipolleschi)Deprecated
AppRegistry.setComponentProviderInstrumentationHookas it's not usable by apps. Passed stub that warns when used. (64116117c0 by rubennorte)Fixed
AccessibilityInfo.isDarkerSystemColorsEnabledunresolved (never ending) promise (8fbf2fab47 by chicio)AccessibilityInfo.isHighTextContrastEnabledunresolved (never ending) promise (5c9a5717c1 by chicio)AccessibilityInfo.prefersCrossFadeTransitionsunresolved (never ending) promise (57c073f0d7 by chicio)NativeAnimatedNodesManagerfor event-driven animations by processing the animation graph synchronously on every scroll event, matching the Java implementation behavior (0517fb552d by Mark Verlingieri)AnimatedInterpolationerror messages (a8b39a237c by Nedunchezhiyan-M)scripts/js-api/README.md(d823f5b1cc by Nedunchezhiyan-M)StyleSheet.absoluteFillObject. (fdbe0d0b63 by jingjing2222)styleprop to Modal's inner container View with correct precedence so consumer styles are applied without overridingtransparentorbackdropColor(f8fa76f94c by AnuMessi10)InspectorPackagerConnectionreconnect loop to prevent heap fragmentation crashes (32d3eafdc4 by shubhamksavita)VIEW_EVENT_CASEentries inBaseViewProps::setPropfor Click, PointerDown, PointerUp, GotPointerCapture, LostPointerCapture and their Capture variants (offsets 30-37) (8d5482dd94 by Harini Malothu)PerformanceObserver:observe({type: 'event'})now correctly defaultsdurationThresholdto 104ms per the W3C Event Timing spec instead of reporting all events. (65c561e195 by rubennorte)scaleX: 0orscaleY: 0) no longer receive touches on Android or iOS. (1e8e182410 by qflen)display: contentsis used in absolutely positioned subtrees (f2f92098dd by j-piasecki)Android specific
ReactViewGroup.addChildrenForAccessibilityagainst transient non-descendant accessibility traversal crashes. (e681736e18 by erickreutz)rootProject.file(8a8f1b801c by etodanik)HermesSamplingProfiler.disable()JNI registration callingenable()instead ofdisable()(7f2a58e46c by elirangoshen)Image.getSizeandImage.getSizeWithHeadersnow return the true source dimensions instead of Fresco's downsampled values (8823a8009b by zoontek)createBitmap()(c20a58ab6b by zeyap)onHostPausecrash inReactInstanceManagerwithout feature flag (3aa8a043de by shubhamksavita)LogBoxDialogSurfaceDelegatewhen using bridgeless mode (f10cded1f8 by Ilya Kovalyov)OutOfMemoryErrorinNetworkingModuleresponse processing to prevent app crashes (0c153e2971 by shubhamksavita)Cookieheader passed via the WebSocket constructor'sheadersoption (24b51db75b by psjostrom)Dimensionswindowvalues on Android < 15 when edge-to-edge is enabled (44a4b1ba5d by zoontek)KeyboardAvoidingViewon Android 15+ / withedgeToEdgeEnabled(4a6c933cce by zoontek)measureInWindowreturning incorrect coordinates when edge-to-edge is enabled (9d183675e9 by zoontek)printMountItemcalls inMountItemDispatchererror handlers behindenableFabricLogs()to prevent OOM crash (7a546f98a7 by JakobFelixJulius)edgeToEdgeEnabledgradle property but enforced by the OS (Android 15+) (c2280e3201 by zoontek)HeadlessJsTaskSupportModuleinCoreReactPackage(2d78a39b3e by 贾太滨)DISPATCH_UIchoreographer queue, before dispatching events (b63efbfc6b by j-piasecki)isBoring()returns negative width (d527f2d663 by NickGerleman)setAutoCapitalizestripping numericTextInputflags (TYPE_NUMBER_FLAG_SIGNED/DECIMAL), affecting minus sign input on Samsung keyboards (863f76bd49 by lukeharvey)zIndexwith props 2.0 enabled (93b37350af by hannojg)borderStyletoundefined(9e058db4c8 by hannojg)iOS specific
ReactInternalcompatible with Swift (fc5cc2821f by rmaz)PODFILE_DIRas$(SRCROOT)-relative soproject.pbxprojis portable across machines (44bb83bd84 by zoontek)REACT_NATIVE_PATHresolution whenPods/is a symlink (ea383822b7 by huntie)use_frameworks!due to missing React-featureflags header path (fb0d28c6fd by radko93)RCTDefines.hfirst in the prebuilt React umbrella and drop themodule *submodule wildcard so RCT_* macros propagate to consumer pods underuse_frameworks!. (90c303fafb by wneel)React-use-frameworks.modulemapacrossreplace-rncore-version.jsruns (ada39220a0 by Insik-Han)createJSRuntimeFactoryand skip Hermes pods whenUSE_THIRD_PARTY_JSCis enabled (2d8143794d by tux2nicolae)RCTWebSocketModulewhen delegate callbacks fire after module invalidation (587ef059a2 by lukeharvey)NSRangeExceptioncrash inRCTBackedTextInputDelegateAdapterwhen text range is out of bounds (19350b1c8c by lukeharvey)removeClippedSubviews(91e3f773b7 by javache)Security
fast-xml-parserfrom 4.5.0 to 4.5.4 to fix CVE-2026-25896 (56908a74c7 by balajacatherin)minimatchto fix CVE-2026-27903, CVE-2026-27904 (c019a50a4c by balajacatherin)v0.85.3
Changed
Fixed
iOS specific
Build: Fix silent tar extraction failure on EdenFS in replace-rncore-version.js by extracting to a temp directory first (9bc7d38be0 by motiz88)
Build: Skip prebuilds for DynamicFrameworks CI jobs (753c19bea4 by motiz88)
Animated: Add pushAnimationMutations to AnimationBackend for targeted event-driven animation updates (e4f0509973 by Bartlomiej Bloniarz)
Animated: Fix potential data corruption in animation backend when ShadowTree commits are retried by copying RawProps instead of moving them (77d3df8cab by Bartlomiej Bloniarz)
Dev Server: Fix "Loading from Metro..." banner getting stuck after reloads in quick succession (e122c24c27 by alanjhughes)
Animated: Share animation backend enabled as experimental(401b1620dc by cortinico)
Networking: FormData uploads broken in debug builds (0d1b70ee22 by riteshshukla04)
Animated: Fix unsafe rawPointer access in cloneMultiple. (1d47693230 by coado)
Build: Drop support for EOL Node.js lines and old minors. (c9c601d61a by robhogan)
Jest: Move Jest preset to new
react-native/jest-presetpackage (c4ae05534a by kitten)StyleSheet: Remove deprecated
StyleSheet.absoluteFillObjectAPI (5681db09b8 by huntie)TypeScript: Removing deprecated type aliases. Use the type directly. (1813df743d by sammy-SC)
TypeScript: Removing deprecated type aliases. Use the type directly. (796a9a8922 by sammy-SC)
Events: Re-added
receiveTouchestoRCTEventEmitterwith a default no-op implementation to avoid breaking ecosystem libraries (67db89d08a by javache)Legacy Architecture: Deprecated UIManagerHelper.getEventDispatcherForReactTag and UIManagerHelper.getEventDispatcher(ReactContext, UIManagerType Int), use getEventDispatcher (4e5d45f4db by javache)
Legacy Architecture: Stub UIImplementation class, this class is unused in the new architecture (fbe15f6605 by mdvacca)
Text: Make ReactTextUpdate internal (faebee4338 by NickGerleman)
Animated:
RCTAnimationChoreographertoRCTScheduler(019c9a7d8f by Bartlomiej Bloniarz)Animated:
std::mutextoAnimationBackendto protectstart,stopandcallbacks. (4064b89867 by Bartlomiej Bloniarz)Animated: Add c++ AnimatedModule to DefaultTurboModules (15e52e3f71 by zeyap)
Animated: Added support for transform operations. (58b7b052c0 by coado)
Animated: Animated calls
AnimationBackend::triggerto push updates from. events to the mounting layer (ac06f3bdc7 by Bartlomiej Bloniarz)Animated: Animated can now prompt the backend to push changes to the shadowTree on the JS thread, making RSNRU update the ShadowNode references held by the react renderer. (f9e94c0502 by Bartlomiej Bloniarz)
Animated: Animation Backend examples in RNTester (149a4b8dcd by Bartlomiej Bloniarz)
Animated: AnimationBackend docs (f3678f51d9 by Bartlomiej Bloniarz)
Animated: AnimationBackend now cleans-up the AnimatedPropsRegistry after the js sync when
updateRuntimeShadowNodeReferencesOnCommitThreadis enabled (b38428c9bc by Bartlomiej Bloniarz)Animated: Moved
shadowNodeFamily_from a map inNativeAnimatedNodesManagertoPropsAnimatedNode(af96497b54 by Bartlomiej Bloniarz)Animated: Updated
AnimationBackendusages to useAnimationTimestamp(2a4a54ae6c by Bartlomiej Bloniarz)Animated: Upstream useAnimatedColor and useAnimatedValueXY (b92d37879e by zeyap)
Dev Server: Make metro accept tls server config (8915d81a5b by vzaidman)
Feature Flags: Create featureflag viewTransitionEnabled (d7a1d080c2 by zeyap)
JavaScript API: Added
EventEmittertoreact-nativeexports. (f7cd8c4c1c by yungsters)Pressable: Added tests for
PressabilityonHoverOutproperty (de5994817d by chicio)React Native DevTools: Added missing tests for Standalone fusebox shell (e5d720d98d by chicio)
React Native DevTools: Support multiple CDP connections to one React Native Host (diff 1 of 2) (534c06f3c8 by motiz88)
React Native DevTools: Support multiple CDP connections to one React Native Host (diff 2 of 2) (f04659972c by motiz88)
Runtime: Added a synchronization mechanism for the layout information between the React branch and the main branch of the ShadowTree (c8d498d62d by j-piasecki)
TextInput: TextInput onChange event now includes selection data (cursor location) on iOS and Android (162627af7c by alanleedev)
TextInput: TextInput onChange event types now include optional selection data (c1f5445f4a by alanleedev)
TypeScript: Add missing
onPressMoveprop to<Pressable />(d07318226d by retyui)Animated: Decouple ReactScrollViewHelper from kt NativeAnimated (0cde8ed0bb by zeyap)
Build: Allow specifying dev server ip via gradle property (6f54846a08 by amartinz)
Build: Re-added prefabPublishing=true to make Android build from source work again (e8eb37414e by chrfalch)
Dev Server: Make DevSupportHttpClient public for custom dev-support HTTP header registration (58d94863f8 by cortinico)
Dev Server: Public DevSupportRequestHeaders API for registering custom dev-support HTTP headers (e0d34b254a by cortinico)
React Native DevTools: Restore request payload previews on Android (cc44e96e0b by huntie)
Runtime: Add
StateWrapperto C++ fbjni types (99b328bffa by mrousavy)ScrollView: Add
scrollsChildToFocusprop to ScrollView to control automatic scrolling when a child receives focus (d9ee4bb0aa by johankasperi)Text:
ReactFontManager.customFontFamiliesproperty to query registered custom font family names (c3acbc424d by vonovak)Text: Add Unstable DrawCommandSpan Usable with PreparedLayoutTextView (ad8ac5e176 by NickGerleman)
Build: Added support for clang virtual file system in React.XCFramework (f0422abd23 by chrfalch)
Animated:
AnimationChoreographerinterface with an implementation for fantom tests (f8564b47fd by Bartlomiej Bloniarz)Animated: Enable -DRN_USE_ANIMATION_BACKEND by default (4cfb2ee468 by zeyap)
Build: Metro bump to ^0.84.0 (58ed78fec1 by robhogan)
Dev Server:
createDevMiddlewarenow acceptsstring | URLforserverBaseUrl(10709f427d by emily8rown)Dev Server: Remove "JavaScript logs have moved!" notice from dev server CLI (4bd62a1d41 by huntie)
Hermes: Bump hermes version (4379f21bd7 by alanleedev)
Hermes: Do not use hermesNightly on the release branch (c35a22db2b by cortinico)
Hermes: Introduce 'Determine Hermes build flag' step (111bd59db5 by fabriziocucci)
JavaScript API: Changed Flow type for
URLconstructor to acceptURLas first argument, matching the second argument type (678f7a9cfb by emily8rown)Pressable:
Pressableno longer unmounts event listeners in a hiddenActivity. (c295ec2261 by yungsters)Pressable: Migrated
Pressabilitytests to Jest modern timers (7dd2d255de by chicio)React Native DevTools: Changed debugger proxy to only permit connections from localhost. (f34b8702db by yungsters)
React Native DevTools: Enable native macOS window merging (34b3c108bc by huntie)
React Native DevTools: Extracting shared logic for fuseboxSessionObserver into reusable components (b0013ea22a by emily8rown)
React Native DevTools: Page targets returned from
/json/listwill no longer setprefersFuseboxFrontend(421de23470 by huntie)React Native DevTools: Suppress LogBox warnings and errors during CDP performance tracing (a308014d87 by emily8rown)
React: Make React Native consume 250829098.0.6 (4fb33022bc by cipolleschi)
Runtime:
cancelAnimationFrame,clearImmediate,clearTimeoutandclearIntervaldo nothing If there is no callback associated the given handle (9d3cc383ba by retyui)Runtime: Changed how React changes are commited to the Shadow Tree (behind a feature flag) (45b4817414 by j-piasecki)
Runtime: Importing
hairlineWidthno longer eagerly initializes thePixelRatioTurboModule. (e11a2f07e8 by yungsters)Runtime: Logs created by
console.errorthat begin with "Warning: " will no longer be treated as warnings. These call sites should migrate to usingconsole.warninstead. (5ab418460b by yungsters)Runtime: Refactor how shadow tree revisions are promoted as latest for JS consistency (4a7bc4c0e7 by j-piasecki)
Runtime: The JS revision merge now is scheduled on the main thread (47e5e6c394 by j-piasecki)
Text: Text Can Conditionally Use "RCTSelectableText" Native Component (a175bff10a by NickGerleman)
Text: Text outside the bounds of a borderRadius is now hidden by default (2111bec8d5 by NickGerleman)
TypeScript: Transform
$ValuestoValues(94383613d8 by marcoww6)TypeScript: Transform
mixedtounknownin xplat/js (625d702fec by marcoww6)TypeScript: Transform $ReadOnly to Readonly 38/n (41efc3b588 by marcoww6)
TypeScript: Transform $ReadOnlyArray to ReadonlyArray 17/n (7051a07c63 by marcoww6)
TypeScript: Transform $ReadOnlyArray to ReadonlyArray 18/n (92c32780f1 by marcoww6)
TypeScript: Transform all remaining utility types (cd3a9c55c1 by marcoww6)
TypeScript: Transform mixed to unknown (60f9bfd546 by marcoww6)
Yoga: Migrate
YogaNodeto Kotlin (cd27b7e1a8 by mateoguzmana)Animated: Log error when unsupported type is passed to interpolation outputRange (30fd0c4ac8 by zeyap)
Build: Add Sonatype Central repository for users of nightly builds only (47c3ebe23f by sergeich)
Build: Gradle to 9.3.1 (319e589d3d by cortinico)