Skip to content

Releases: react/react-native

0.89.0-rc.0

0.89.0-rc.0 Pre-release
Pre-release

Choose a tag to compare

@react-native-bot react-native-bot released this 04 Nov 13:13

Breaking

  • Accessibility: AccessibilityState::selected is now std::optional<bool> in C++ props, preserving an unset selected instead of coercing it to false (af4d8eb08a by Calvin Liu)
  • Assets: Remove react-native/assets-registry. Use AssetRegistry from react-native and react-native/asset-utils instead. (56c48ac0eb by @huntie)
  • Babel: Turn off babel/plugin-transform-destructuring plugin (73711b301e by @retyui)
  • C++: Remove deprecated react/renderer/graphics/Geometry.h and react/renderer/graphics/conversions.h; include <React/Graphics.h> or <React/RendererCore.h> instead (1449daad5e by @j-piasecki)
  • CLI: react-native/community-cli-plugin will no longer be auto-detected from react-native. It must now be specified in devDependencies. (b26baaeba0 by @huntie)
  • CLI: Platform registration config for the Community CLI is removed from the react-native package. No breaking change with react-native-community/cli 21.x (required). (be9fbdd0d5 by @huntie)
  • Image: Fix explicit fadeDuration being ignored on newly created Images (98d6795e6d by @bartlomiejbloniarz)
  • JavaScript API: Mark unstable_batchedUpdates as deprecated (f6fc189b8c by @retyui)
  • VirtualizedList: Fix SectionList and VirtualizedSectionList scrollToLocation to account for section headers and sticky headers correctly. (0c35f57447 by @amroaltah)

Android specific

  • C++: Remove deprecated rncore.h; include FBReactNativeSpec.h and call FBReactNativeSpec_ModuleProvider instead (d63648bac6 by @javache)
  • New Architecture: Remove DefaultNewArchitectureEntryPoint.bridgelessEnabled and the deprecated three-argument load(turboModulesEnabled, fabricEnabled, bridgelessEnabled) overload; bridgeless is always enabled in the New Architecture (9b18b951ea by @christophpurrer)
  • New Architecture: Remove DefaultNewArchitectureEntryPoint.fabricEnabled, turboModulesEnabled, concurrentReactEnabled and isConfigurationValid (ca2e11af51 by @christophpurrer)
  • Text: Add lineBreak and wordBreak props to Text (CSS line-break / word-break) for strict/loose line breaking and phrase-based breaking on Android 13+ (f736393946 by @iray-tno)

iOS specific

  • Animated: Delete legacy RCTNativeAnimatedModule from RN iOS (46662327fb by @christophpurrer)
  • CocoaPods: Install React-cxxreact headers under cxxreact/ inside its framework when USE_FRAMEWORKS is enabled. Pods that include <cxxreact/...> without calling install_modules_dependencies must add React_cxxreact.framework/Headers to HEADER_SEARCH_PATHS. (0a92baec87 by @j-piasecki)
  • New Architecture: Remove the deprecated bridgelessEnabled property and the deprecated initWithBundleURLBlock:newArchEnabled:turboModuleEnabled:bridgelessEnabled: / initWithBundleURL:newArchEnabled:turboModuleEnabled:bridgelessEnabled: initializers from RCTRootViewFactoryConfiguration; bridgeless is always enabled (2a9eca81b8 by @christophpurrer)
  • TurboModules: +moduleName is now optional on RCTBridgeModule instead of required, so a TurboModule resolved via a module provider need not declare it (373385efc9 by @christophpurrer)

Added

  • AppState: Add useAppState() hook for subscribing to app foreground/background state changes (7104c5ef36 by @Nedunchezhiyan-M)
  • Babel: react-native/metro-babel-transformer passes Metro's own babel/runtime and its version to react-native/babel-preset, when Metro provides them (89db5ce049 by @robhogan)
  • Babel: Allow react-native/babel-preset to read enableBabelRuntime and babelRuntimeModuleName from Babel caller data (168a0d7b53 by @cortinico)
  • C++: Add <React/ComponentRegistry.h> umbrella header as the public entry point for react/renderer/componentregistry (2975534d8b by @j-piasecki)
  • C++: Added ReactNativeVersion.h to public react/utils module. (a35313a184 by @j-piasecki)
  • C++: Added an umbrella header for the react/renderer/core module (dcc872ae01 by @j-piasecki)
  • C++: Added umbrella header for the react/renderer/components/image module (a9203b8fdd by @j-piasecki)
  • C++: Added umbrella header for the react/renderer/imagemanager module (be53e3a9a1 by @j-piasecki)
  • Renderer: Allow C++ shadow node traits to be evaluated at compile time (73e3aeca88 by @javache)
  • Runtime: Polyfill Array.prototype.toSorted and Array.prototype.toReversed when the JavaScript runtime does not provide them (3ff956a2a2 by @javache)
  • Text: Add experimental longest-line width sizing for wrapped Text (03ed284a2c by @Abbondanzo)
  • View: Add an experimental_onSafeAreaInsetsChange view prop, reporting the part of a view that is covered by the system UI, with a development warning for views that report their insets in a loop (8d658f4101 by @janicduplessis)
  • VirtualizedList: Export the ViewabilityConfig and ViewabilityConfigCallbackPair types from the package root (932b34a51c by @rubennorte)
  • Web APIs: Add ArrayBuffer, DataView, typed array, boxed BigInt, and Error subclass support to structuredClone (14de25bb2d by @rubennorte)
  • Web APIs: Expose structuredClone and DOMException as global Web APIs (245bbfaf0a by @rubennorte)

Android specific

Read more

0.88.1

Choose a tag to compare

@react-native-bot react-native-bot released this 27 Oct 17:39

Added

iOS specific

  • SwiftPM: the build stops with a clear error when precompiled plugin frameworks and the Xcode project disagree, and the error says what to run. (a920e5db46 by @chrfalch)

Changed

iOS specific

  • Build: Compile React Native's C/C++/Objective-C code with -O2 instead of -Os in Release, and Yoga and glog with -O2 in all builds, to match Android (60c817e925 by @chrfalch)
  • SwiftPM: spm add and spm update write React Native's build settings to ReactNativeSPM/ReactNativeSPM.xcconfig and its build scripts to ReactNativeSPM/Scripts/, so a version bump no longer changes project.pbxproj. A configuration that uses its own xcconfig must now #include the generated file, and a target setting that hides React Native's value must add $(inherited). spm prints the exact fix in both cases. (cd89e98949 by @chrfalch)
  • Text: Text without a background color no longer draws a transparent background (0bd33261d1 by @hryhoriiK97)

Fixed

Android specific

  • Text: Fix text measured with the wrong width when fontVariationSettings are re-applied to a reused Paint (96518a8fb9 by @jkadamczyk)
  • Text: Skip empty and fully hidden text decoration ranges (dbd5b3b770 by @Abbondanzo)
  • Text: Fix crash drawing text decoration (underline/strikethrough) when a nested Text's span extends past a numberOfLines-truncated layout (ca8504b1ca by @lazerg)

iOS specific

  • Image: Image no longer shows the image of a previous source after its native view is recycled (53bf98bf40 by @mattijsf)
  • SafeArea: Fix views with a filter having their content offset by the safe area insets (fea820fa9b by @intergalacticspacehighway)
  • StatusBar: StatusBar style and visibility work on iOS 27 for apps built with the iOS 27 SDK when UIViewControllerBasedStatusBarAppearance is YES. Custom root view controllers must return the RCTStatusBarAppearance values. (bd08dafc98 by @alanjhughes)
  • SwiftPM: a project set up with skipped codegen no longer fails package resolution on ReactAppHeaders (e3aa9a1e19 by @chrfalch)
  • SwiftPM: the build-time sync now runs again when a watched path that did not exist at the last sync appears. (c89f4120ac by @chrfalch)
  • SwiftPM: keep line breaks in the scheme pre-action script so that the "Sync SPM Autolinking" pre-action runs. Run npx react-native spm update once to rewrite an existing scheme. (b8df948fd4 by @chrfalch)

Hermes V1 dSYMS:

ReactNativeDependencies dSYMs:

ReactNative Core dSYMs:


You can file issues or pick requests against this release here.


To help you upgrade to this version, you can use the Upgrade Helper ⚛️.


View the whole changelog in the CHANGELOG.md file.

0.88.0

Choose a tag to compare

@react-native-bot react-native-bot released this 15 Oct 22:37

Added

  • C++: Add <React/FeatureFlags.h> umbrella header as the public entry point for react/featureflags (f970054a8a by @j-piasecki)
  • C++: Add <React/RendererBridging.h> umbrella header as the public entry point for react/renderer/bridging (5b680c5f9f by @j-piasecki)
  • C++: Add <React/Timing.h> umbrella header as the public entry point for react/timing (70f172d29f by @j-piasecki)
  • C++: Added missing mutex include in HostTarget.h (3f8f5c216a by @etodanik)
  • EventTarget: Enable the imperative EventTarget API (addEventListener, removeEventListener, dispatchEvent) on native view refs in canary (8480b86820 by @rubennorte)
  • Feature Flags: Add enableImageTransparentTintColor feature flag (c5bd054983 by @coado)
  • JavaScript API: Deprecate 'react-native/Libraries/Core/InitializeCore'. Use 'react-native/setup-env' instead. (554baba159 by @huntie)
  • PlatformColor: Support a lazy raw color fallback for PlatformColor when native tokens fail to resolve (65008fcdd0 by @Abbondanzo)
  • React Native DevTools: Experimental performance screenshots support and Page.captureScreenshot is added to the EXPERIMENTAL channel (4be68ef785 by @huntie)
  • React Native DevTools: Support for inspecting WebSocket events in the Network panel is added to the CANARY channel (713ae6b1b9 by @huntie)
  • React Native DevTools: Users and agents can now capture app screenshots via the Page.captureScreenshot command (00efc0a440 by @huntie)
  • Text: Add object syntax for fontVariationSettings (376b99ff14 by @evankatz14)
  • TypeScript: Add isInstalled() and clearAllLogs() to the LogBox TypeScript declarations (a69badd468 by @Abbondanzo)
  • TypeScript: Add missing strictMode prop to FlatList TypeScript types (3e2403327c by @drhops)
  • TypeScript: Add TypeScript declarations for requestIdleCallback and cancelIdleCallback (c086431a4b by @Critteros)
  • VirtualizedList: Add missing ListItemComponent type to VirtualizedList props (5306e9229c by @aravi365)

Android specific

  • Feature Flags: Add enableMountingCoordinatorPullModelAndroid feature flag (ece0efe837 by @coado)
  • Network Inspection: Expose network event reporting to third-party networking stacks as an unstable API (83d0be8958 by @huntie)
  • Networking: Send app name and version as the default User-Agent header for network requests, matching iOS (04e50d540d by Calvin Liu)
  • Renderer: Add inert Java plumbing (PullTransactionMountItem, FabricUIManager.onTransactionAvailable) for the pull model (6515647d94 by @coado)
  • Renderer: Wire the pull-model mounting path in C++ behind enableMountingCoordinatorPullModelAndroid (9da1a01153 by @coado)
  • Text: Add fontVariationSettings support for <Text> (19f7d144b9 by @evankatz14)
  • TextInput: Add fontVariationSettings support for TextInput (a688608090 by @evankatz14)
  • TurboModules: Add ArrayBuffer, the Java representation of a JS ArrayBuffer for TurboModules, with an explicit byte-ownership contract (5bb9639594 by Kamil Paradowski)
  • TurboModules: Add ArrayBuffer support to Java TurboModules (5fb3ebce1a by Kamil Paradowski)
  • TurboModules: Borrowed ArrayBuffer bytes are scoped to the synchronous call that received them. ArrayBuffer.bytes and ArrayBuffer.size throw IllegalStateException afterwards, and a ByteBuffer already obtained from bytes is unchecked and reads freed memory, so copy with ArrayBuffer.arrayBufferWithCopiedBytes to keep them (d84c13d511 by @christophpurrer)

iOS specific

  • Text: Add fontVariationSettings support on iOS (8415753e21 by @evankatz14)
  • Assets: Use asset catalog for ios images (26769a00b2 by @janicduplessis)
  • CocoaPods: Add a React-cxxstableapi dependency to third-party New Architecture pods so they can resolve React Native's C++ API guard headers (d3daf111e0 by @coado)
  • Legacy Architecture: Allow consumers to opt into RCT_REMOVE_LEGACY_MODULE_INTEROP and RCT_REMOVE_LEGACY_COMPONENT_INTEROP from CocoaPods and SwiftPM. Both default to off and will become the default in a future release (b933d18177 by @christophpurrer)
  • SceneDelegate: Add SceneDelegate lifecycle support (7bfe32fd33 by @artus9033)
  • Styles: Print warning advice when using shadow* styles without providing a solid background color (eb4d3892ab by @hannojg)

Changed

  • Babel: Platform.OS and Platform.select(...) inlining in react-native/babel-preset now requires the inlinePlatform option in addition to platform (f63b2a1cb5 by @robhogan)
  • Babel: Inline Platform.OS and Platform.select(...) for React Native Platform imports during the Babel preset, covering some cases that were previously left un-inlined. (40c06121a1 by @robhogan)
  • Build: Add React Native Maven pull-through cache fallback for prebuilt artifacts. (3bfb277fec by @coado)
  • Events: Enabled Web-based event dispatching refactor (31d33ce91b by @rubennorte)
  • Hermes: Bump Hermes to 260318099.0.3 (79024f7c59 by @fabriziocucci)
  • Hermes: Bump Hermes to 260318099.0.4 (993be7d6c6 by @fabriziocucci)
  • Hermes: Bump hermes-v1 to 260318099.0.1 (b113cf5864 by @fabriziocucci)
    ...
Read more

0.88.0-rc.6

0.88.0-rc.6 Pre-release
Pre-release

Choose a tag to compare

@react-native-bot react-native-bot released this 27 Oct 17:42

Hermes V1 dSYMS:

ReactNativeDependencies dSYMs:

ReactNative Core dSYMs:


You can file issues or pick requests against this release here.


To help you upgrade to this version, you can use the Upgrade Helper ⚛️.


View the whole changelog in the CHANGELOG.md file.

0.88.0-rc.5

0.88.0-rc.5 Pre-release
Pre-release

Choose a tag to compare

@react-native-bot react-native-bot released this 12 Oct 23:40

This release contains no changes over 0.88.0-rc.4.


Hermes V1 dSYMS:

ReactNativeDependencies dSYMs:

ReactNative Core dSYMs:


You can file issues or pick requests against this release here.


To help you upgrade to this version, you can use the Upgrade Helper ⚛️.


View the whole changelog in the CHANGELOG.md file.

0.88.0-rc.4

0.88.0-rc.4 Pre-release
Pre-release

Choose a tag to compare

@react-native-bot react-native-bot released this 07 Oct 08:09

Changed

  • TypeScript: Allow module augmentation to extend generated props and style types (447ccd1ddb by @zoontek)

Fixed

Android specific

  • Accessibility: Properly re-enable a view after accessibilityState.disabled resets from true, which left Pressable partly untappable (357b6998c4 by @bigcupcoffee)

Hermes V1 dSYMS:

ReactNativeDependencies dSYMs:

ReactNative Core dSYMs:


You can file issues or pick requests against this release here.


To help you upgrade to this version, you can use the Upgrade Helper ⚛️.


View the whole changelog in the CHANGELOG.md file.

0.88.0-rc.3

0.88.0-rc.3 Pre-release
Pre-release

Choose a tag to compare

@react-native-bot react-native-bot released this 28 Sep 13:34

Changed

  • Hermes: Bump to 260318099.0.4, which avoids a quadratic reserve() in ConsecutiveStringStorage during lazy compilation (993be7d6c6 by @fabriziocucci)

Fixed

  • Metro: Fix the package-exports warning caused by react-native/virtualized-lists importing an unexported React Native subpath (a506ed66cc by @giaBaoJS)

Android specific

  • SurfaceMountingManager: Bump androidx.collection to 1.4.4 to fix view registry entries getting lost (d6a5f159c6 by @pawicao)

iOS specific

  • SwiftPM: Stop autolinking from recreating library package roots on every sync, which broke Xcode builds of apps using libraries that ship their own Package.swift (97cc934dc7 by @chrfalch)

Hermes V1 dSYMS:

ReactNativeDependencies dSYMs:

ReactNative Core dSYMs:


You can file issues or pick requests against this release here.


To help you upgrade to this version, you can use the Upgrade Helper ⚛️.


View the whole changelog in the CHANGELOG.md file.

0.88.0-rc.2

0.88.0-rc.2 Pre-release
Pre-release

Choose a tag to compare

@react-native-bot react-native-bot released this 22 Sep 08:52

Changed

  • Metro: Bump the minimum Metro version to 0.87.1, so upgrading projects resolve the same Metro as freshly created ones (f2439a83cf by @robhogan)

Fixed

  • TurboModules: Revert the RCTArrayBuffer codegen change, restoring NSMutableData * for ObjC TurboModule methods that take or return an ArrayBuffer. 0.88 is a non-breaking release, and the change stopped modules that adopted ObjC ArrayBuffer support in 0.87 from compiling (639cdedb50, 19a3184981 by @fabriziocucci)
  • TurboModules: Revert the rejection of ArrayBuffer as a TurboModule EventEmitter payload. C++ TurboModules could declare EventEmitter<ArrayBuffer> in 0.87 and it generated working code, so rejecting it at codegen time broke those builds (070af03ab3 by @fabriziocucci)
  • TypeScript: Restore the .js fallback for legacy deep imports of untyped modules, so react-native/Libraries/* specifiers resolve again under the react-native-legacy-deep-imports condition (579212e15c by @fabriziocucci)

Hermes V1 dSYMS:

ReactNativeDependencies dSYMs:

ReactNative Core dSYMs:


You can file issues or pick requests against this release here.


To help you upgrade to this version, you can use the Upgrade Helper ⚛️.


View the whole changelog in the CHANGELOG.md file.

0.88.0-rc.1

0.88.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@react-native-bot react-native-bot released this 16 Sep 09:35

Added

  • EventTarget: Enable the imperative EventTarget API (addEventListener, removeEventListener, dispatchEvent) on native view refs in canary (8480b86820 by @rubennorte)

Changed

Fixed

iOS specific

  • Codegen: No longer crawls node_modules or follows symlinks when discovering components (39751d864d by @gabrieldonadel)
  • SwiftPM: Generated manifests derive their iOS platform floor from the app's IPHONEOS_DEPLOYMENT_TARGET instead of hardcoding iOS 15, so dependencies with a higher minimum (e.g. Expo, 16.4) can be autolinked (92564f33fd by @chrfalch)
  • SwiftPM: Read the SwiftPM name from the podspec and store it in package.json when scaffolding (1cfc5f29a0 by @chrfalch)
  • SwiftPM: Run generated build scripts under bash instead of /bin/sh, so they don't break on a host where /bin/sh isn't bash (25f48bd72f by @lazerg)

Hermes V1 dSYMS:

ReactNativeDependencies dSYMs:

ReactNative Core dSYMs:


You can file issues or pick requests against this release here.


To help you upgrade to this version, you can use the Upgrade Helper ⚛️.


View the whole changelog in the CHANGELOG.md file.

0.88.0-rc.0

0.88.0-rc.0 Pre-release
Pre-release

Choose a tag to compare

@react-native-bot react-native-bot released this 08 Sep 17:26

Breaking

  • Touchable: The Touchable root export (undocumented) is removed. If you are extending Touchable as a type, please use ViewProps instead. (0015d1e4f9 by @huntie)

iOS specific

  • TurboModules: Add RCTArrayBuffer, the ObjC representation of a JS ArrayBuffer for TurboModules, with an explicit byte-ownership contract (11f9a7f449 by Kamil Paradowski)

Added

  • C++: Add <React/FeatureFlags.h> umbrella header as the public entry point for react/featureflags (f970054a8a by @j-piasecki)
  • C++: Add <React/RendererBridging.h> umbrella header as the public entry point for react/renderer/bridging (5b680c5f9f by @j-piasecki)
  • C++: Add <React/Timing.h> umbrella header as the public entry point for react/timing (70f172d29f by @j-piasecki)
  • C++: Added missing mutex include in HostTarget.h (3f8f5c216a by @etodanik)
  • Feature Flags: Add enableImageTransparentTintColor feature flag (c5bd054983 by @coado)
  • JavaScript API: Deprecate 'react-native/Libraries/Core/InitializeCore'. Use 'react-native/setup-env' instead. (554baba159 by @huntie)
  • PlatformColor: Support a lazy raw color fallback for PlatformColor when native tokens fail to resolve (65008fcdd0 by @Abbondanzo)
  • React Native DevTools: Experimental performance screenshots support and Page.captureScreenshot is added to the EXPERIMENTAL channel (4be68ef785 by @huntie)
  • React Native DevTools: Support for inspecting WebSocket events in the Network panel is added to the CANARY channel (713ae6b1b9 by @huntie)
  • React Native DevTools: Users and agents can now capture app screenshots via the Page.captureScreenshot command (00efc0a440 by @huntie)
  • Text: Add object syntax for fontVariationSettings (376b99ff14 by @evankatz14)
  • TypeScript: Add isInstalled() and clearAllLogs() to the LogBox TypeScript declarations (a69badd468 by @Abbondanzo)
  • TypeScript: Add missing strictMode prop to FlatList TypeScript types (3e2403327c by @drhops)
  • TypeScript: Add TypeScript declarations for requestIdleCallback and cancelIdleCallback (c086431a4b by @Critteros)
  • VirtualizedList: Add missing ListItemComponent type to VirtualizedList props (5306e9229c by @aravi365)

Android specific

  • Feature Flags: Add enableMountingCoordinatorPullModelAndroid feature flag (ece0efe837 by @coado)
  • Network Inspection: Expose network event reporting to third-party networking stacks as an unstable API (83d0be8958 by @huntie)
  • Networking: Send app name and version as the default User-Agent header for network requests, matching iOS (04e50d540d by Calvin Liu)
  • Renderer: Add inert Java plumbing (PullTransactionMountItem, FabricUIManager.onTransactionAvailable) for the pull model (6515647d94 by @coado)
  • Renderer: Wire the pull-model mounting path in C++ behind enableMountingCoordinatorPullModelAndroid (9da1a01153 by @coado)
  • Text: Add fontVariationSettings support for <Text> (19f7d144b9 by @evankatz14)
  • TextInput: Add fontVariationSettings support for TextInput (a688608090 by @evankatz14)
  • TurboModules: Add ArrayBuffer, the Java representation of a JS ArrayBuffer for TurboModules, with an explicit byte-ownership contract (5bb9639594 by Kamil Paradowski)
  • TurboModules: Add ArrayBuffer support to Java TurboModules (5fb3ebce1a by Kamil Paradowski)

iOS specific

  • Assets: Use asset catalog for ios images (26769a00b2 by @janicduplessis)
  • CocoaPods: Add a React-cxxstableapi dependency to third-party New Architecture pods so they can resolve React Native's C++ API guard headers (d3daf111e0 by @coado)
  • Legacy Architecture: Allow consumers to opt into RCT_REMOVE_LEGACY_MODULE_INTEROP and RCT_REMOVE_LEGACY_COMPONENT_INTEROP from CocoaPods and SwiftPM. Both default to off and will become the default in a future release (b933d18177 by @christophpurrer)
  • SceneDelegate: Add SceneDelegate lifecycle support (7bfe32fd33 by @artus9033)
  • Styles: Print warning advice when using shadow* styles without providing a solid background color (eb4d3892ab by @hannojg)
  • SwiftPM: npx react-native spm command + SwiftPM package-generation tooling (opt-in; CocoaPods stays supported) (47fad096a4 by @chrfalch)
  • TurboModules: Reject ArrayBuffer as a TurboModule EventEmitter payload on all platforms (ab2ea649e6 by @christophpurrer)

Changed

  • Accessibility: Automatically set accessible prop when role prop is set (except none/presentation) (4043e818f1 by @mdjastrzebski)
  • Babel: Platform.OS and Platform.select(...) inlining in react-native/babel-preset now requires the inlinePlatform option in addition to platform (f63b2a1cb5 by @robhogan)
  • Babel: Inline Platform.OS and Platform.select(...) for React Native Platform imports during the Babel preset, covering some cases that were previously left un-inlined. (40c06121a1 by @robhogan)
  • Build: Add React Native Maven pull-through cache fallback for prebuilt artifacts. (3bfb277fec by @coado)
  • Hermes: Bump hermes-v1 to 260318099.0.1 (b113cf5864 by @fabriziocucci)
  • Legacy Architecture: Core components (ActivityIndicatorView, ModalHostView, PullToRefreshView, SafeAreaView, Switch) no longer report legacy RCT-prefixed names in their view configs ([9048120]...
Read more