React Native is an open-source UI software framework for developing cross-platform native mobile applications for iOS and Android using JavaScript and React. It enables developers to write code once and deploy it to multiple platforms, leveraging native UI components for optimal performance and user experience. The current stable version is 0.85.1, with new minor versions typically released every two months and frequent patch releases, indicating an active and rapidly evolving development cycle. Key differentiators include its declarative component-based UI paradigm inherited from React, direct access to native device features through JavaScript Interface (JSI), and a vast ecosystem of third-party libraries. Unlike hybrid webview solutions, React Native renders actual native UI elements, which contributes to a more authentic native look and feel, and starting from 0.82, it exclusively uses the New Architecture, removing the legacy bridge for improved performance and concurrency.
npm install react-nativeVerified import paths — ran on the pinned version, not inferred.
Basic React Native component demonstrating UI elements, styling, and platform-specific adjustments for a 'Hello World' style application.
Migrate your project to the New Architecture. Follow the official React Native upgrade guide, use `npx react-native upgrade`, and update all custom native modules to use TurboModules and JSI. Ensure all third-party libraries are compatible with the New Architecture, checking the React Native Directory.
Install `@react-native/jest-preset` as a dev dependency (`npm install --save-dev @react-native/jest-preset`) and update `jest.config.js` to use `preset: '@react-native/jest-preset'`.
Upgrade your Node.js installation to a supported version (e.g., using `nvm`). The specified `engines.node` is `^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0`.
Review your `Animated` code, particularly interactions with `useNativeDriver`, and test thoroughly. Adopt the new capabilities where applicable for improved performance. The changelog for 0.85.0-rc.1 mentions a fix for 'unsafe rawPointer access in cloneMultiple' in Animated, indicating internal breaking changes.
Update your codebase to remove calls to `StyleSheet.absoluteFillObject` and other removed APIs. Consult the release notes and migration guides for suitable modern replacements.
Use the `npx react-native upgrade` command and carefully review the diffs for native project files. It is recommended to back up your `ios/` and `android/` directories before upgrading. Manual merging is frequently required.
Ensure that your main `App` component is exported as default and registered in your `index.js` (or similar entry file) using `AppRegistry.registerComponent('AppName', () => App);` where 'AppName' matches the name specified in your `app.json`.Try deleting `node_modules`, `yarn.lock`/`package-lock.json`, and Metro cache (`npm start --reset-cache` or `yarn start --reset-cache`). Then reinstall dependencies (`npm install` or `yarn install`) and run `cd ios && pod install && cd ..` for iOS projects.
Clean the build folder in Xcode (`Product > Clean Build Folder`), then `cd ios && rm -rf build && pod install && cd ..`. Check Xcode logs for specific error messages (e.g., missing headers, linker errors). Update CocoaPods and native dependencies.
Run `sdkmanager --licenses` in your Android SDK tools directory (or equivalent for your OS) and accept all licenses. Ensure your `ANDROID_HOME` environment variable is correctly set.
Run `watchman watch-del-all` and then `watchman shutdown-server` in your terminal. For persistent issues, consider increasing your system's file watch limits or optimizing your project structure to reduce the number of watched files.