React Native v0.76 released

React Native 0.76.0 brings significant changes, including breaking updates to animation, devtools, and infrastructure. Key additions include official support for filter and boxShadow styles, improved DevTools capabilities, and enhanced Android and iOS-specific features. The release also addresses numerous bugs across various components and systems, improving stability and performance. Several security vulnerabilities were patched in dependencies.

This version introduces important changes for developers, particularly in Android and iOS-specific areas. It continues to refine the framework's capabilities while addressing existing issues and enhancing developer tools and experience.


v0.76 on GitHub (npm)


Release blog post


Changelog


v0.76.9

Changed

  • Deps: Bump folly to 2024.10.18. This allow to use Xcode 16.3 with React Native (73b41b5808 by @cipolleschi)
  • Deps: Bump fmt to 11.0.2. This allow to use Xcode 16.3 with React Native (73b41b5808 by @cipolleschi)
  • Deps: Add dependency to fast_float v6.1.4, as it is required by folly. This allow to use Xcode 16.3 with React Native (73b41b5808 by @cipolleschi)

Fixed

Android specific

iOS specific

v0.76.8

Fixed

  • FormData: Remove non compliant filename* attribute in a FormData content-disposition header (9e846b4d11 by @foyarash)
  • DevX: Disconnections of DevTools when the network is under significant strain. (08c04147ba by @vzaidman)
  • JS: Fix react-native-community/cli not being found in pnpm setups (9ba96ad79d6 by @tido64)
  • JS: Fix react-native-community/cli-platform-* packages not being found in monorepos (ffe7bd1471 by @tido64)

Android specific

  • popup-menu-android: Fix react-native/popup-menu-android not building for 3rd party developers (ac637ff44 by @cortinico)
  • DevTools: Pass the bundle URL protocol when setting up HMR client on Android (68055f2d8a by @byCedric)
  • CLI: Fix registering of start and bundle commands with community CLI and isolated node_modules. (b9c4095e40 by @robhogan)

iOS specific

  • layout: Layout direction changes are now honored on bundle reload. (23b888ff2d by @chrsmys)
  • TextInput: Fixes TextInput crashes when any text is entered while running as iOS app on apple silicon mac (e2b081e66f by @zhongwuzw)
  • Runtime: Convert to JSException only NSException from sync methods (8eec35f134 by @cipolleschi)

v0.76.7

Changed

iOS specific

Fixed

Android specific

iOS specific

  • runtime: RCTSurfaceHostingProxyRootView no longer has different behavior (whether it calls start on the provided surface) depending on which initializer is used. Call start yourself on the surface instead. (13b93cfdda by Nolan O'Brien)
  • Be less strict with method parsing of TurboModule Interop Layer
  • Turbomodule: Avoid crashing the app when the InteropLayer can't find some methods in the native implementation. (3bd3f101b9 by @cipolleschi)
  • Runtime: Fix applicationDidEnterBackground not being called (adaceba546 by @alextoudic)

v0.76.6

Fixed

Android specific

  • layout: Restore layout/invalidate during ReactViewClippingManager.removeViewAt() (0683206927 by Thomas Nardone)
  • Native Modules: Prioritise local OnLoad.cpp, falling back to default-app-setup (8b1f049879 by @timbocole)
  • runtime: Remove feature flag for allowRecursiveCommitsWithSynchronousMountOnAndroid (fb7f87ecb2 by @cipolleschi)

iOS specific

v0.76.5

Fixed

Android specific

v0.76.4

Added

Android specific

v0.76.3

Fixed

Android specific

v0.76.2

Added

Changed

iOS specific

Fixed

Android specific

iOS specific

  • Codegen Properly stop generating component registration for components defined in app. (97a4234b6e by @cipolleschi)
  • infra Give apps access to Yoga headers (e851e73c18 by @cipolleschi)
  • TextInput Fix missing emitter attributes on iOS TextInput when controlled component value specified using value instead of children (52cdedb40e by @NickGerleman)
  • TextInput Fix cursor moving in iOS controlled single line TextInput on Autocorrection (New Arch) (36fd5533f6 by @NickGerleman)

v0.76.1

Fixed

Android specific

  • runtime Made AppRegistry callable from Native code in Bridgeless (fixes headless tasks) (f3fee67c54 by @robik)
  • runtime Add jsBundleFile to DefaultReactNativeHost.kt (e56bd89ef)

iOS specific

  • codegen Do not generate the ComponentCls function in the RCTThirdPartyFabricComponentsProvider for components deined in the app. (dc7e9e2d83 by @cipolleschi)
  • infra Generated NODE_BINARY in .xcode.env.local now supports paths with a space (eeaa3ff458 by @blakef)
  • infra Pin Xcodeproj to < 1.26.0 (e8776240b41)
  • runtime Fixed bug where background colors would sometimes animate when changing on Views (1d6ac09530 by @joevilches)
  • runtime Fixes regression of RCTWindowFrameDidChangeNotification not fired (e271b23fad by @zhongwuzw)

v0.76.0

Breaking

  • Animation Stop sending state updates to React in looping animation (8af5e893c8 by @dmytrorykun)
  • devtools: Remove Inspector Panel perf + network tabs under New Arch (see https://github.com/react-native-community/discussions-and-proposals/pull/777) (f220bde4d7 by @huntie)
  • flow: Eliminate a few React.Element type that will be synced to react-native (39c338ff8d by @SamChou19815)
  • infra Projects that intend to use the community CLI will now have to declare that dependency instead of transitively having the react-native package include it. (bd3a3e3de0 by @blakef)
  • infra Remove react-native-community dependencies from react-native (9269429bb9 by @blakef)
  • infra: TurboModules will be looked up as TurboModules first, and fallback to legacy modules after. (5a62606ab3 by @javache)
  • text engine Always use AttributedStringBox instead of AttributedString in TextLayoutManager (ee597bfe2bf) by @NickGerleman)

Android specific

  • bridging: Deleted LongArray (471445eb17 by Thomas Nardone)
  • Flipper: Update ReactNativeFlipper deprecation to ERROR (531657b394 by @cortinico)
  • infra Remove several libs from default App CMake setup (52de8c70f2 by @cortinico)
  • infra: Merge all the remaining .so libraries into libreactnative.so (db80d78d7a by @cortinico)
  • infra: Remove several unnecessary android prefab targets. Use ReactAndroid::reactnative instead (6e5227bd83 by @cortinico)
  • infra: Do not depend on OSS SoLoader anymore and do not expose Fresco api dependency. (6dc01dad09 by @cortinico)
  • infra: Updating minSdkVersion to API 24 (Android 7) (270951a212 by @alanleedev)
  • initialization: ReactNativeHost invalidates the instance manager on clear(), rather than merely destroying the instance. (986cf18dd2 by @motiz88)
  • layout engine: Do not implicitly convert parsed LengthPercentage to pixels (9e48976bc2 by @NickGerleman)
  • rendering: Set "enableBackgroundStyleApplicator" by default (5f14963da0 by @NickGerleman)

iOS specific

  • initialization: Add ability to control bundle loading on the new architecture similar to loadSourceForBridge. Removed some properties from the RCTRootViewFactory. (7487a2c277 by @alanjhughes)
  • turbomodule [iOS] Remove Macro for autolinking pure Cxx module(184646e491 by @philIip)

Added

Android specific

  • devtools: Enable React Native DevTools in OSS debug builds (143f1ad298 by @robhogan)
  • codegen Add support for handling com.facebook.react.bridge.Dynamic as parameter type in TurboModules (d01f1b3214 by @cortinico)
  • error handling: Provide default implementation for ReactHostDelegate.handleInstanceException() (34e3a6cc88 by @alanleedev)
  • Image Added support for rendering XML assets provided to Image (aad9240fd4 by Peter Abbondanzo)
  • Runtime Allow DefaultReactHost to load the js bundle via regular file urls (7522336412 by @RSNara)
  • runtime Make ReactInstanceEventListener available on ReactHost (80e1dd70b0 by @RSNara)
  • runtime Add invalidate() method to ReactHost and ReactInstanceManager that destroys the ReactHost, including the ReactInstance. (a3db352e25 by @motiz88)
  • runtime: Added onUserLeaveHint support into ReactActivityDelegate (27ba369f23 by @behenate)
  • runtime: Added a conditional check in the resolveThemeAttribute function to reattempt resource resolution with the "android" package name if the resource ID is 0. (6365df54db by @shubhamguptadream11)
  • style Add BackgroundStyleApplicator for managing view backgrounds (1a78477ce5 by @NickGerleman)
  • style: Linear gradient (bd0aedc8c3 by @intergalacticspacehighway)
  • style: Support simple opacity in nested text (a2d53d5ea0 by @NickGerleman)

iOS specific

Changed

  • Animated: Improved runtime performance of Animated (d1ebe02c19 by @yungsters)
  • Animated: Changed Animated props validation to soft errors instead of thrown errors (0a1ba02273 by @yungsters)
  • Appearance: Improved Appearance.getColorScheme performance (8f0f50f7a1 by @yungsters)
  • c++: Removed using namespace std::placeholders (194b642633 by @r-barnes)
  • devtools: Remove --experimental-debugger option from start command (94e7a87f23 by @huntie)
  • devtools: Inspector: Enforce device and appId filters if both are given to /open-debugger (c7970379a1 by @robhogan)
  • devtools: Debugger: j opens most recent (not first) target. (2a6a895b17 by @robhogan)
  • devtools: Debugger: Make /json/list return connection-addition-ordered targets. (53951d7fec by @robhogan)
  • devtools Add Fusebox support for saving traces to disk (1bd4a11736 by Benoit Girard)
  • devtools: Simplify key handling in start command (5a0df6d0bf by @huntie)
  • error handling: Improved error message for invalid filter values (4094ce0718 by @yungsters)
  • error handling: Improve LogBox safe area insets styling (18302831c4 by @yungsters)
  • infra: Update all babel packages and fix tests accordingly (b37101486b by @vzaidman)
  • infra: Upgrade pretty-format to 29.7.0 (7bc9244d0c by @dprevost-LMI)
  • infra: Move init deprecation notice 30 Sept → 31 Dec, to give users more time to update their infrastructure (014370d825 by @blakef)
  • infra: Drop node-fetch in favor of Node's built-in fetch from undici in react-native/dev-middleware (30a3e6e8df by @byCedric)
  • infra: Allow use without @react-native-community/cli-server-api (24997dc5ae by @blakef)
  • infra: Add CLI selection of multiple debug targets (6a24df7eaa by @huntie)
  • infra Update Metro to "^0.81.0" (3f8d1fa286 by @robhogan)
  • initialization: Improve Appearance performance overhead by lazily initializing the NativeModule (b86e8ef95f by @yungsters)
  • metro: Changed Metro default config to use Hermes parser, enabling the use of advanced Flow syntax in React Native. (320963c7cb by @yungsters)
  • metro: Use Metro terminal reporter for dev-middleware logs (2f04dfe795 by @huntie)
  • metro: Fix server.end() usage following Metro bump (02b879b1e2 by @huntie)
  • runtime: Timer functions timeout argument is now coerced to a number (af04eb773c by @robik)
  • turbomodules: Replace TurboReactPackage with BaseReactPackage (e881a1184c by @philIip)
  • yoga Replace YogaConstants.UNDEFINED with Float.NaN (8bd9952eaf by Jingbo Yang)

Android specific

iOS specific

Deprecated

Android specific

  • bridging: Deprecate MapBuilder (a696d2ed6b by Thomas Nardone)

iOS specific

  • initialization: Deprecate turboModuleEnabled, fabricEnabled and bridgelessEnabled for the new newArchEnabled property. (3621606c44 by @okwasniewski)
  • runtime Deprecated StatusBar.setNetworkActivityIndicatorVisible (8a390ba9b8 by Ingrid Wang)

Removed

Android specific

  • components CoreComponentsRegistry is now fully replaced by DefaultComponentRegistry. (de7976c69d by @javache)
  • error handling Removed HasJavascriptExceptionMetadata as a marker interface. Use JavascriptExecption directly (cb00ca954d by @javache)
  • initialization Unused jsEngineResolutionAlgorithm from ReactHost (f1b6218608 by @javache)
  • infra React_newarchdefaults is no longer a prefab, instead use fabricjni (c68f35d444 by @javache)

iOS specific

Fixed

  • Animated: Fixed undefined behavior in certain scenarios when ReactElement objects are supplied to Animated components (56937d646c by @yungsters)
  • Animated: Realign the shadow tree and the native tree when the user finishes interacting with the app. (a8786fc1df by @cipolleschi)
  • codegen: Fix codegen failing in a pnpm monorepo because of missing yargs (3e084bc159 by @tido64)
  • c++: Upstream fixes for build errors in React Native Windows (c722ec7c37 by @chiaramooney)
  • c++: Undefined behavior fix in MethodInvoker (09e88448ce by Riley Berton)
  • c++: Fix "C4715 not all control paths return a value" warning in MSVC when building ReactCommon (c30e35fb44 by @jonthysell)
  • c++: Updated comments for ~ShadowNodeWrapper() and ~ShadowNodeListWrapper() (778fcecf35 by @tomekzaw)
  • c++: Change RawPropsParser logs from ERROR level to WARNING (68c0720e34 by Bowen Xie)
  • devtools: Reconnecting to an unknown inspector page no longer results in a zombie connection (a7adfef0bb by @motiz88)
  • devtools: Avoid a zombie state when opening a second debugger frontend concurrently. (e55ea2daf1 by @motiz88)
  • devtools: Inspector-proxy no longer accidentally detaches connected devices. (4c6bff01b3 by @motiz88)
  • devtools: Throttle reload command (42bad68220 by @coado)
  • devtools Respond with status code 200 when successfully launching RNDT (eeb6122f39 by @byCedric)
  • error reporting: Fix logbox reporting React errors as Warnings (cbb313253f by @rickhanlonii)
  • error reporting Restore Metro log forwarding, change notice to signal future removal (6047f9cc09 by @huntie)
  • flow: Fix parsing of modern Flow syntax when transformer.hermesParser = false is configured in Metro config (1387f521fd by @huntie)
  • infra: Removed noisy ENOENT error message upon launching the debugger (5bbf5a4878 by @EdmondChuiHW)
  • infra: Ensure --build-output destination exists (396bdd87d8 by @szymonrybczak)
  • infra: Fix Platform.constants.reactNativeVersion type (95d9cdf228 by @NickGerleman)
  • js: Fixes findNodeAtPoint when views were inverted (1d1646afd1 by @zhongwuzw)
  • layout: Fix handling 'auto' checks in absolute layout (3596019489 by @coado)
  • runtime Add missing methods to the WithRuntimeDecorator class. (993f9fd8db by @neildhar)
  • runtime: Undo breaking change on ViewManagerDelegate.kt String params (ce1620616c by @cortinico)
  • runtime: Undo breaking change on UIManager eventDispatcher accessor (55671c00e5 by @cortinico)
  • Scrollview: Properly make ScrollView compatible with React 19 (b395208303 by @cipolleschi)
  • Scrollview: Make ScrollView compatible with React 19 (8041e410e3 by @cipolleschi)
  • SectionList: Loosen SectionList renderItem required return type (12b64b7824 by @NickGerleman)
  • style: Fixed alignItems: 'baseline' not working correctly on the new architecture (2932c0f71f by @j-piasecki)
  • style: Linear gradient color stop spec. (1a49892d57 by @intergalacticspacehighway)
  • TextInput: Fixed fontWeight number value error for text optimized (2a230694c4 by @meetdhanani17)
  • typescript: Allow read only array type for transform property (c16defaff2 by @tjzel)
  • typescript: Add missing submitBehavior prop and mark blurOnSubmit prop as deprecated in Typescript declaration file of TextInput (1dcbf41725 by @thisisgit)

Android specific

iOS specific

Security