unstale

npm / react-native

react-native

What changed in react-native 0.79 to 0.88, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.

21 breaking7 deprecations29 new APIs and options2 performance16 behavior and defaults12 tooling135 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.1.1 on npm

react-native 0.88109 changes

Breaking changes 11

  • Recycled ScrollViews no longer retain automatic keyboard inset behavior.

    0.88.0release notes

  • Removed the experimental_ prefix from backgroundPosition.

    0.88.0release notes

  • Removed the experimental_ prefix from backgroundRepeat.

    0.88.0release notes

  • Removed the experimental_ prefix from backgroundSize.

    0.88.0release notes

  • Async CallInvoker work is buffered alongside callable module calls and no longer runs before the JS bundle finishes evaluating.

    0.88.0release notes

  • Codegen no longer crawls node_modules or follows symlinks when discovering components.

    0.88.0release notes

  • FileReader now fires loadstart, throws InvalidStateError on overlapping reads, and exposes error as a DOMException; aborting a read also leaves it in the correct state.

    0.88.0release notes

  • Platform.OS and Platform.select(...) inlining in react-native/babel-preset now requires inlinePlatform in addition to platform.

    0.88.0release notes

  • The minimum Metro version is now 0.87.1 so upgrading projects resolve the same Metro as freshly created ones.

    0.88.0release notes

  • Programmatic, non-user-initiated scrolls no longer cancel active touches in enclosing scroll views.

    0.88.0release notes

  • Text aligns right by default in RTL when textAlign is unset, matching Android.

    0.88.0release notes

Deprecations 6

  • Deprecated InputAccessoryView on Android.

    0.88.0release notes

  • Deprecated this import path; use react-native/setup-env instead.

    0.88.0release notes

  • Deprecated fabricEnabled on Android ReactFragment.

    0.88.0release notes

  • The String? overload is deprecated.

    0.88.0release notes

  • The String? overload is deprecated.

    0.88.0release notes

  • iOS prints warning advice when shadow styles are used without a solid background color.

    0.88.0release notes

New APIs and options 15

  • Added Java ArrayBuffer support for TurboModules with an explicit byte-ownership contract. Borrowed bytes are scoped to the synchronous call; copy them with arrayBufferWithCopiedBytes to retain them.

    0.88.0release notes

  • Copy borrowed ArrayBuffer bytes with this method to keep them beyond the synchronous call that received them.

    0.88.0release notes

  • Added a feature flag for image transparent tint color support.

    0.88.0release notes

  • When enabled, a top-level JS null TurboModule argument is passed to Objective-C as nil instead of NSNull.

    0.88.0release notes

  • Added an Android feature flag for the mounting coordinator pull model.

    0.88.0release notes

  • Added object syntax for fontVariationSettings.

    0.88.0release notes

  • Added fontVariationSettings support for Text and TextInput on Android and for Text on iOS.

    0.88.0release notes

  • Android exposes network event reporting to third-party networking stacks as an unstable API.

    0.88.0release notes

  • Users and agents can capture app screenshots with this command; performance screenshots support is also added to the experimental channel.

    0.88.0release notes

  • iOS consumers can opt into removing legacy component interop through CocoaPods and SwiftPM; the option defaults off and may become the default in a future release.

    0.88.0release notes

  • iOS consumers can opt into removing legacy module interop through CocoaPods and SwiftPM; the option defaults off and may become the default in a future release.

    0.88.0release notes

  • Added a C++ umbrella header as the public entry point for react/featureflags.

    0.88.0release notes

  • Added a C++ umbrella header as the public entry point for react/renderer/bridging.

    0.88.0release notes

  • Added a C++ umbrella header as the public entry point for react/timing.

    0.88.0release notes

  • Added iOS SceneDelegate lifecycle support.

    0.88.0release notes

Performance 1

  • The C++ method now takes moduleName and props by value.

    0.88.0release notes

Behavior and default changes 11

  • The imperative addEventListener, removeEventListener, and dispatchEvent API is enabled on native view refs in canary.

    0.88.0release notes

  • Views with the listed checkbox, radio, combobox, dropdownlist, menuitem, spinbutton, tab, option, searchbox, slider, and treeitem roles are reachable via Full Keyboard Access.

    0.88.0release notes

  • The app pbxproj no longer embeds an absolute, machine-specific HERMES_CLI_PATH; hermesc is resolved at build time instead.

    0.88.0release notes

  • Generated SwiftPM manifests derive their iOS platform floor from the app deployment target, allowing dependencies with a higher minimum to be autolinked.

    0.88.0release notes

  • Missing native component registrations are logged on iOS and Android.

    0.88.0release notes

  • Supports a lazy raw color fallback when native tokens fail to resolve.

    0.88.0release notes

  • Pull model mounting is deferred until the root attaches.

    0.88.0release notes

  • If the desktop app fails to launch, the fallback opens DevTools as a standard window in the default browser without attempting Microsoft Edge.

    0.88.0release notes

  • Long single-line TextInput placeholders are ellipsized to match iOS.

    0.88.0release notes

  • The C++ method now takes moduleName and props by value.

    0.88.0release notes

  • Android network requests now default to an app name and version User-Agent header, matching iOS.

    0.88.0release notes

Tooling 8

  • Codegen discovers third-party component libraries that do not have an iOS configuration.

    0.88.0release notes

  • Added the clearAllLogs() method to LogBox TypeScript declarations.

    0.88.0release notes

  • Added the isInstalled() method to LogBox TypeScript declarations.

    0.88.0release notes

  • TypeScript module augmentation can now extend generated props and style types.

    0.88.0release notes

  • The Babel preset now inlines Platform.OS and Platform.select(...) for React Native Platform imports in additional cases.

    0.88.0release notes

  • Added TypeScript declarations for requestIdleCallback and cancelIdleCallback.

    0.88.0release notes

  • Scaffolding reads the SwiftPM name from the podspec and stores it in package.json.

    0.88.0release notes

  • React Native DevTools adds inspection of WebSocket events in the Network panel to the canary channel.

    0.88.0release notes

Fixes and other changes 57

  • Using accessibilityRole="tabbar" no longer crashes on Android.

    0.88.0release notes

  • A view is properly re-enabled when disabled resets from true, so Pressable no longer remains partly untappable.

    0.88.0release notes

  • addListener fires again for natively driven Animated values derived with add, subtract, multiply, divide, modulo, diffClamp, or interpolate.

    0.88.0release notes

  • Text is no longer clipped when its container height decreases dynamically.

    0.88.0release notes

  • aria-* state props are no longer ignored when accessibilityState is also present.

    0.88.0release notes

  • Added missing TypeScript types for the public AssetRegistry API.

    0.88.0release notes

  • Imagesets no longer pair the wrong files for assets with non-standard scales.

    0.88.0release notes

  • Resetting border widths no longer clips children in rounded overflow-hidden views.

    0.88.0release notes

  • Setting a percentage borderRadius on Image no longer crashes.

    0.88.0release notes

  • Debug server host changes made through Change Bundle Location are persisted.

    0.88.0release notes

  • Incremental iOS builds no longer encounter a ReactCodegen dependency-cycle error when this directory contains no Native* or *NativeComponent spec files.

    0.88.0release notes

  • WebSockets no longer throttle bundle downloads or other dev server requests.

    0.88.0release notes

  • DeviceInfo constants refresh after interface dimension changes.

    0.88.0release notes

  • A ViewManager DimensionValue prop annotated with ReactProp no longer fails with an unrecognized YogaValue type.

    0.88.0release notes

  • Reverted codegen rejection of ArrayBuffer TurboModule EventEmitter payloads so declarations that worked in 0.87 continue to build.

    0.88.0release notes

  • A fatal JS error is reported instead of aborting the process if reading the error's extra data fails.

    0.88.0release notes

  • Added the missing strictMode prop to FlatList TypeScript types.

    0.88.0release notes

  • RCTReactNativeFactory forwards the callback to the user delegate.

    0.88.0release notes

  • Image source headers are preserved when using crossOrigin or referrerPolicy.

    0.88.0release notes

  • Image.getSize no longer rejects data: URIs.

    0.88.0release notes

  • Image.getSizeWithHeaders no longer rejects data: URIs.

    0.88.0release notes

  • Android represents tintColor as std::optional to support transparent (0) with props 2.0.

    0.88.0release notes

  • Inline views inside Text no longer shrink with Android system font scale.

    0.88.0release notes

  • The reactnative prefab exports jserrorhandler headers so external consumers of cxxreact/ErrorUtils.h can build.

    0.88.0release notes

  • Changing keyboardType while a TextInput is focused updates the keyboard, matching legacy architecture behavior.

    0.88.0release notes

  • Cell metrics are cleared on orientation change, and divide-by-zero is guarded against.

    0.88.0release notes

  • Providing outlineColor as a numeric color value no longer crashes.

    0.88.0release notes

  • The dotted and dashed outline styles render on views without border radii.

    0.88.0release notes

  • The RCTSwitch paperComponentName is restored, fixing testing-library/react-native queries.

    0.88.0release notes

  • The method no longer causes a main-thread watchdog hang.

    0.88.0release notes

  • Calling RCTAppearance.setColorScheme() no longer crashes CarPlay apps when connectedScenes contains a non-UIWindowScene.

    0.88.0release notes

  • Reverted the codegen change, restoring NSMutableData * for Objective-C TurboModule methods that take or return an ArrayBuffer, preserving compatibility with modules adopted in 0.87.

    0.88.0release notes

  • Deriving blob names for network responses no longer intermittently causes a CoreServices/UTType XPC native crash.

    0.88.0release notes

  • A debug-only crash from UITextView text-selection gestures on iOS 17 and later is fixed.

    0.88.0release notes

  • A child-index mismatch is reported instead of raising NSRangeException while formatting the assert message.

    0.88.0release notes

  • Resetting EmptyLayoutMetrics during recycling clears UIView.hidden on recycled views.

    0.88.0release notes

  • Third-party New Architecture CocoaPods gain a React-cxxstableapi dependency to resolve React Native C++ API guard headers.

    0.88.0release notes

  • Restored the .js fallback for legacy deep imports of untyped modules under the react-native-legacy-deep-imports condition.

    0.88.0release notes

  • Bridgeless on-demand JS segment loading no longer causes an unhandled exception when the segment file is missing from cache.

    0.88.0release notes

  • RedBox auto-retry no longer reloads while the app is backgrounded.

    0.88.0release notes

  • Fixed the timeout option being ignored.

    0.88.0release notes

  • Changing returnKeyType while a TextInput is focused updates the keyboard, matching legacy architecture behavior.

    0.88.0release notes

  • RTL is detected from the active locale rather than an arbitrary installed locale.

    0.88.0release notes

  • Pending tasks and rendering updates are now cleared when a task throws.

    0.88.0release notes

  • Fixed behavior with rapid data updates.

    0.88.0release notes

  • Autolinking no longer recreates library package roots on every sync, avoiding Xcode build failures for libraries that ship their own Package.swift.

    0.88.0release notes

  • The final text line or trailing glyph is no longer clipped due to pixel-grid rounding precision loss.

    0.88.0release notes

  • TextInput preserves its selection color when multiline changes.

    0.88.0release notes

  • The soft keyboard appears when a long-press starts text selection in TextInput.

    0.88.0release notes

  • Event emitters no longer throw when an event is emitted before the emitter callback is installed.

    0.88.0release notes

  • Exceptions rethrown from async and void TurboModule calls include the module and method name.

    0.88.0release notes

  • Extralight fonts are correctly classified as UIFontWeightUltraLight in RCTGetFontWeight.

    0.88.0release notes

  • Added the missing ListItemComponent type to VirtualizedList props.

    0.88.0release notes

  • VoiceOver text readout works when elements change asynchronously.

    0.88.0release notes

  • Startup no longer crashes when the WindowMetrics API is missing on an inconsistent Android runtime.

    0.88.0release notes

  • A nullable float ViewManager prop annotated with ReactProp no longer fails with an unrecognized Float type.

    0.88.0release notes

  • Duplicate request headers are now appended according to the specification.

    0.88.0release notes

react-native 0.8711 changes

Breaking changes 3

  • SwiftPM rejects colliding or invalid module names instead of silently dropping a module from the build.

    0.87.1release notes

  • The unused spm.modules.publicHeaderFiles field was removed from the spm section of react-native.config.js.

    0.87.1release notes

  • SwiftPM now hard-fails with a clear error when an autolinking plugin host is referenced as a dependency.

    0.87.1release notes

Tooling 1

  • SwiftPM injection sets SWIFT_ACTIVE_COMPILATION_CONDITIONS to DEBUG.

    0.87.1release notes

Fixes and other changes 7

  • Header search paths containing spaces keep their quotes, preventing paths from being split incorrectly.

    0.87.1release notes

  • The API is typed as an event handler rather than any.

    0.87.1release notes

  • The callback payload is typed as {value: number} rather than any.

    0.87.1release notes

  • Fixes a Hermes runtime/compiler version mismatch that caused “Wrong bytecode version” crashes in SwiftPM Release builds.

    0.87.1release notes

  • The SwiftPM pipeline now reads the configuration file correctly when it uses default exports.

    0.87.1release notes

  • Scaffolding the Swift manifest now reads spm.name from react-native.config.js.

    0.87.1release notes

  • SwiftPM resolves naming collisions in generated manifests.

    0.87.1release notes

react-native 0.8666 changes

Breaking changes 6

  • Custom fonts with an explicit fontWeight no longer render at the heaviest weight on the New Architecture.

    0.86.3release notes

  • Returns true source dimensions rather than Fresco's downsampled values.

    0.86.0release notes

  • Returns true source dimensions rather than Fresco's downsampled values.

    0.86.0release notes

  • observe({type: 'event'}) now defaults durationThreshold to 104ms per the W3C Event Timing spec instead of reporting all events.

    0.86.0release notes

  • Values other than false no longer affect behavior; previously, any falsey value behaved like false.

    0.86.0release notes

  • Views with non-invertible transforms, such as scaleX: 0 or scaleY: 0, no longer receive touches on Android or iOS.

    0.86.0release notes

Deprecations 1

  • The hook function's second argument is deprecated because it is not usable by apps; a stub that warns when used is passed instead.

    0.86.0release notes

New APIs and options 12

  • Adds an Android interface that lets native modules react to window creation and destruction, such as for Modal dialogs.

    0.86.0release notes

  • Dev-mode Metro bundle loads call methods on this global when it is provided, allowing integrations to receive bundle-load reports.

    0.86.0release notes

  • Android channels hardware play and pause events.

    0.86.0release notes

  • Adds an asynchronous iOS check for whether the DevServer Packager is running, without blocking the UI thread while waiting for the request.

    0.86.0release notes

  • Adds plus-lighter as a supported mixBlendMode value.

    0.86.0release notes

  • Adds an iOS API for selectively modifying HTTP requests.

    0.86.0release notes

  • Adds an iOS API for modifying multipart data task requests before they are sent.

    0.86.0release notes

  • Dispatches FPS performance events for mouse-wheel and trackpad scroll interactions on Android.

    0.86.0release notes

  • Adds an iOS provider for selectively injecting WebSocket headers.

    0.86.0release notes

  • Android TextInput gains support for additional autoComplete autofill hints.

    0.86.0release notes

  • Adds this method to UIManagerBinding for accessing a View Transition instance.

    0.86.0release notes

  • Adds a UIManagerViewTransitionDelegate interface and APIs for React Native View Transitions.

    0.86.0release notes

Behavior and default changes 4

  • The Android ripple option now accepts PlatformColor.

    0.86.0release notes

  • Android hardwareBackPress events now pass the event object, making the native event timestamp accessible.

    0.86.0release notes

  • Android NavigationBar now respects the theme's enforceNavigationBarContrast attribute.

    0.86.0release notes

  • On Android, the back button can dismiss LogBox notification toasts and the inspector overlay.

    0.86.0release notes

Tooling 2

  • React Native DevTools supports light and dark mode emulation through this method.

    0.86.0release notes

  • React Native DevTools performance traces include a custom track for React Native Renderer operations.

    0.86.0release notes

Fixes and other changes 41

  • Fixes a ConcurrentModificationException when getInitialURL re-enters during onHostResume.

    0.86.3release notes

  • For <Modal> and other nested root host views, parentNode and parentElement now return the containing element instead of the document, preserving capture and bubble event propagation to ancestors.

    0.86.3release notes

  • Fixed nodes with display: contents having hasNewLayout set incorrectly.

    0.83.10, 0.86.2release notesrelease notes

  • Fixes a promise that could remain unresolved indefinitely.

    0.86.0release notes

  • Fixes a promise that could remain unresolved indefinitely.

    0.86.0release notes

  • Fixes a promise that could remain unresolved indefinitely.

    0.86.0release notes

  • Prevents a crash caused by an unsupported background size value.

    0.86.0release notes

  • Fixes the blob content provider not working in the new architecture.

    0.86.0release notes

  • Fixes a crash when props 2.0 is enabled and borderStyle is set to undefined.

    0.86.0release notes

  • Fixes window values on Android versions below 15 when edge-to-edge is enabled.

    0.86.0release notes

  • Handles edge-to-edge when enforced by Android 15 or later, even if the edgeToEdgeEnabled Gradle property does not enable it.

    0.86.0release notes

  • C++ NativeAnimatedNodesManager processes the animation graph synchronously on every scroll event, fixing one-frame latency and matching Java behavior.

    0.86.0release notes

  • Fixes timestamp injection overriding native timestamps and corrects propagation of event timestamps from host platforms to JavaScript.

    0.86.0release notes

  • Uses the stable Hermes V1 release instead of the legacy nightly to fix a startup crash caused by a JSI ABI mismatch.

    0.86.0release notes

  • Fixes Android JNI registration so calling disable no longer invokes enable.

    0.86.0release notes

  • Fixes image content disappearing on Android API 24 when antialiased border-radius clipping is applied.

    0.86.0release notes

  • Fixes IPv6 handling for packager and inspector connections.

    0.86.0release notes

  • Fixes behavior on Android 15 and later, and when edgeToEdgeEnabled is enabled.

    0.86.0release notes

  • Fixes failure to respond to IME height changes, such as toggling the emoji panel or predictive bar.

    0.86.0release notes

  • Fixes an activity context memory leak when using bridgeless mode.

    0.86.0release notes

  • Fixes incorrect coordinates when edge-to-edge is enabled.

    0.86.0release notes

  • Forwards style to Modal's inner container View with precedence that applies consumer styles without overriding transparent or backdropColor.

    0.86.0release notes

  • Catches OutOfMemoryError during response processing to prevent app crashes.

    0.86.0release notes

  • Persists PODFILE_DIR relative to SRCROOT so project.pbxproj is portable across machines.

    0.86.0release notes

  • Fixes an NSRangeException crash when the text range is out of bounds.

    0.86.0release notes

  • Prevents a crash when delegate callbacks fire after module invalidation.

    0.86.0release notes

  • WebSocket scheme and port are derived from the dev server URL, supporting HTTPS dev servers.

    0.86.0release notes

  • Fixes inspector server host resolution for HTTPS bundle URLs by omitting the default port.

    0.86.0release notes

  • Fixes path resolution when Pods/ is a symlink.

    0.86.0release notes

  • Fixes an onHostPause crash in the legacy architecture when no feature flag is set.

    0.86.0release notes

  • Guards against transient non-descendant accessibility traversal crashes on Android.

    0.86.0release notes

  • Fixes an iOS crash when changing the value of removeClippedSubviews.

    0.83.10, 0.86.0release notesrelease notes

  • Prevents the FPS performance listener from being cleared when a ScrollView is recycled.

    0.86.0release notes

  • Applies StatusBar configuration to Modal windows, fixing visual inconsistencies.

    0.86.0release notes

  • Fixes auto-scroll failing to respond to IME height changes, such as toggling the emoji panel or predictive bar.

    0.86.0release notes

  • Fixes setAutoCapitalize stripping numeric input flags, which affected minus-sign input on Samsung keyboards.

    0.86.0release notes

  • Fixes React-CoreModules compilation by providing the missing React-featureflags header path.

    0.86.0release notes

  • Loads RCTDefines.h first in the prebuilt React umbrella and drops the module wildcard so RCT_* macros propagate to consumer pods.

    0.86.0release notes

  • Skips Hermes pods when USE_THIRD_PARTY_JSC is enabled and fixes a compilation error in createJSRuntimeFactory.

    0.86.0release notes

  • Preserves a Cookie header passed through the WebSocket constructor's headers option.

    0.86.0release notes

  • Fixes a crash when clearing zIndex with props 2.0 enabled.

    0.86.0release notes

react-native 0.851 changes

Fixes and other changes 1

  • The build now uses the pinned Hermes version when version.properties is not 1000.0.0, preventing it from selecting the wrong Hermes version.

    0.85.3release notes

react-native 0.843 changes

Fixes and other changes 3

  • Included builds in monorepos now resolve gradle.properties from parent Gradle start parameters before falling back to ../../android/gradle.properties, allowing hermesV1Enabled to be inherited correctly.

    0.83.3, 0.84.1release notesrelease notes

  • ReactPlugin.kt no longer always sets hermesV1Enabled to true.

    0.84.1release notes

  • Symbol fallbacks are provided for inspector-modern/chrome/Registration.h when HermesV1 is disabled.

    0.84.1release notes

react-native 0.8315 changes

New APIs and options 1

  • Android devsupport now supports a custom header.

    0.83.3release notes

Performance 1

  • Prebuilt iOS binaries are cached across clean installs and projects, avoiding repeated downloads from Maven.

    0.83.10release notes

Tooling 1

  • Adds RCTDevSupportHeaders to the React Umbrella for iOS precompiled binaries.

    0.83.4release notes

Fixes and other changes 12

  • Fixes Yoga node ownership for display: contents in absolutely positioned subtrees.

    0.83.10release notes

  • The response URL is correct after an Android redirect.

    0.83.10release notes

  • Apps using additional Hermes runtimes, such as Reanimated, are no longer incorrectly flagged as multi-host.

    0.83.10release notes

  • The queue size is limited to prevent the Android inspector from being force-disconnected by large payloads.

    0.83.10release notes

  • Provides symbol fallbacks for inspector-modern/chrome/Registration.h when HERMES_V1_ENABLED is set.

    0.83.6release notes

  • Fixes the iOS banner getting stuck after reloads in quick succession.

    0.83.6release notes

  • The color scheme in appearance state is now fixed after setting it to unspecified.

    0.83.5release notes

  • On Android, file:// URIs passed to fetch no longer fail.

    0.83.5release notes

  • Fixes a Hermes crash when an async void TurboModule method throws NSException by re-throwing instead of converting it to JSError on the wrong thread.

    0.83.5release notes

  • On Android, file:// URIs passed to XMLHttpRequest no longer fail.

    0.83.5release notes

  • Fixed rncore tarball extraction for EdenFS compatibility.

    0.83.3release notes

  • Fixes a Network error that could occur on Android when uploading binary data with FormData.

    0.83.1release notes

react-native 0.822 changes

Fixes and other changes 2

react-native 0.814 changes

New APIs and options 1

Fixes and other changes 3

react-native 0.809 changes

Behavior and default changes 1

  • Stabilizes custom accessibility action IDs for TalkBack.

    0.80.3release notes

Fixes and other changes 8

  • Fixes a race condition that could leave codegen libraries missing sources.

    0.80.3release notes

  • Fixes missing dependencies in Codegen, preventing dependency-related build issues.

    0.80.3release notes

  • Updates font scale on Android when RootView is recreated.

    0.80.3release notes

  • Accessors inside HeadlessJsTaskService are open again, allowing subclasses to override them.

    0.80.3release notes

  • Fixes an Android freeze in the legacy architecture when Metro refreshes.

    0.80.3release notes

  • Fixes RefreshControl recycling on iOS.

    0.80.3release notes

  • Fixes RefreshControl not refreshing on initial mount on iOS.

    0.80.3release notes

  • Setting maxLength to 0 now prevents typing on iOS.

    0.80.3release notes

react-native 0.792 changes

Breaking changes 1

  • React Native 0.79.7 is out of support, which may affect decisions about continuing to use this release.

    0.79.7release notes

Fixes and other changes 1

  • On Android, missing parent view state in updateLayout is now treated as a soft error.

    0.79.7release notes