From 1db32a8e2ba5e8e64f544715a494ee9c39c2dd4a Mon Sep 17 00:00:00 2001 From: Alex Hunt Date: Tue, 4 Feb 2025 18:12:37 +0000 Subject: [PATCH 1/2] [draft][blog] Moving Towards a Stable JavaScript API --- ...-moving-towards-a-stable-javascript-api.md | 320 ++++++++++++++++++ website/blog/authors.yml | 23 ++ .../blog/assets/0.80-js-stable-api-appjs.jpg | Bin 0 -> 58860 bytes 3 files changed, 343 insertions(+) create mode 100644 website/blog/2025-06-09-moving-towards-a-stable-javascript-api.md create mode 100644 website/static/blog/assets/0.80-js-stable-api-appjs.jpg diff --git a/website/blog/2025-06-09-moving-towards-a-stable-javascript-api.md b/website/blog/2025-06-09-moving-towards-a-stable-javascript-api.md new file mode 100644 index 00000000000..5bd9e1e2bb8 --- /dev/null +++ b/website/blog/2025-06-09-moving-towards-a-stable-javascript-api.md @@ -0,0 +1,320 @@ +--- +title: 'Moving Towards a Stable JavaScript API (New Changes in 0.80)' +authors: [huntie, iwoplaza, jpiasecki, coado] +tags: [announcement] +date: 2025-06-09 +--- + +In React Native 0.80, we're introducing two significant changes to React Native's JavaScript API — the deprecation of deep imports, and our new Strict TypeScript API. These are part of an ongoing effort to accurately define our API and offer dependable type safety to users and frameworks. + +**Quick takeaways:** + +- **Deep imports deprecation**: From 0.80, we're introducing deprecation warnings for deep imports from the `react-native` package. +- **Opt-in Strict TypeScript API**: We are moving to from-source TypeScript types and a new public API baseline under TypeScript. These enable stronger and more futureproof type accuracy, and will be a one-time breaking change. [Opt in](/blog/2025/06/09/moving-towards-a-stable-javascript-api#strict-typescript-api) via `compilerOptions` in your project's `tsconfig.json`. +- We'll work with the community over time to ensure that these changes work for everyone, before enabling the Strict TypeScript API by default in a future React Native release. + + + +## What's changing and why + +We are moving to improve and stabilise React Native's public JavaScript API — i.e. what you get when you import `'react-native'`. + +Historically, we've approximated this. React Native is authored in [Flow](https://flow.org/), but the community has long since moved to TypeScript in open source, which is how the public API is consumed and validated for compatibility. Our types have been (lovingly) [community-contributed](https://www.npmjs.com/package/@types/react-native), and since merged and aligned in our codebase. However, these have relied on manual maintenance and no automated tooling, introducing correctness gaps. + +Additionally, our public JS API has been poorly defined in terms of module boundaries — e.g. internal `'react-native/Libraries/'` deep imports were reachable by app code, but could frequently change as we updated these internals. + +In 0.80, we're addressing these issues by deprecating deep imports, and introducing a user opt-in to a new, generated API baseline in TypeScript. We're calling this our **Strict TypeScript API**. Ultimately, this is the groundwork to offer a stable React Native API in future. + +## Deprecating deep imports from `react-native` + +The main change we're making to our API today is deprecating the use of deep imports ([RFC](https://github.com/react-native-community/discussions-and-proposals/pull/894)), with warnings in ESLint and the JS console. Deep imports of values and types should be updated to `react-native`'s root import. + +```js title="" +// Before - import from subpath +import {Alert} from 'react-native/Libraries/Alert/Alert'; + +// After - import from `react-native` +import {Alert} from 'react-native'; +``` + +This change reduces the total surface area of our JavaScript API into a fixed set of exports which we can control and make stable in a future release. We're targeting a removal of these import paths in 0.82. + +:::info API feedback + +Some APIs are not exported at root, and will become unavailable without deep imports. We have an **[open feedback thread](https://github.com/react-native-community/discussions-and-proposals/discussions/893)** and will be working with the community to finalize the exports in our public API. Please share your feedback! + +::: + +**Opting out** + +Please bear in mind that we aim to remove deep imports from React Native's API in a future release, and these should instead be updated to the root import. + +
+**Opting out of warnings** + +#### ESLint + +Disable the `no-deep-imports` rule using `overrides`. + + +```js title=".eslintrc.js" + overrides: [ + { + files: ['*.js', '*.jsx', '*.ts', '*.tsx'], + rules: { + '@react-native/no-deep-imports': 0, + }, + }, + ] +``` + +#### Console warnings + +Pass the `disableDeepImportWarnings` option to `@react-native/babel-preset`. + + +```js title="babel.config.js" +module.exports = { + presets: [ + ['module:@react-native/babel-preset', {disableDeepImportWarnings: true}] + ], +}; +``` + +Restart your app with `--reset-cache` to clear the Metro cache. + +```sh title="" +npx @react-native-community/cli start --reset-cache +``` + +
+
+**Opting out of warnings (Expo)** + +#### ESLint + +Disable the `no-deep-imports` rule using `overrides`. + + +```js title=".eslintrc.js" +overrides: [ + { + files: ['*.js', '*.jsx', '*.ts', '*.tsx'], + rules: { + '@react-native/no-deep-imports': 0, + }, + }, +]; +``` + +#### Console warnings + +Pass the `disableDeepImportWarnings` option to `babel-preset-expo`. + + +```js title="babel.config.js" +module.exports = function (api) { + api.cache(true); + return { + presets: [['babel-preset-expo', {disableDeepImportWarnings: true}]], + }; +}; +``` + +Restart your app with `--clear` to clear the Metro cache. + +```sh name="" +npx expo start --clear +``` + +
+ +## Strict TypeScript API (opt-in) + +The Strict TypeScript API is a new set of TypeScript types in the `react-native` package, which can be opted into via your `tsconfig.json`. We're shipping these alongside our existing TS types, meaning you can choose to migrate when ready. + +The new types are: + +1. **Generated directly from our source code** — improving coverage and correctness, so you can expect stronger compatibility guarantees. +2. **Restricted to `react-native`'s index file** — more tightly defining our public API, and meaning we won't break the API when making internal file changes. + +When the community is ready, the Strict TypeScript API will become our default API in future — synchronized with deep imports removal. This means it's a **good idea** to begin opting in, as you'll be ready for React Native's future stable JS API. + +```json title="tsconfig.json" +{ + "extends": "@react-native/typescript-config", + "compilerOptions": { + ... + "customConditions": ["react-native-strict-api"] + } +} +``` + +:::note Under the hood + +This will instruct TypeScript to resolve `react-native` types from our new [`types_generated/`](https://www.npmjs.com/package/react-native?activeTab=code) dir, instead of the previous [`types/`](https://www.npmjs.com/package/react-native?activeTab=code) dir (manually maintained). No restart of TypeScript or your text editor is required. + +::: + +### Breaking: Deep imports are disallowed + +As above, types under the Strict TypeScript API are now only resolvable from the main `'react-native'` import path, enforcing [package encapsulation](/blog/2023/06/21/package-exports-support), per our above deprecation. + +```tsx +// Before - import from subpath +import {Alert} from 'react-native/Libraries/Alert/Alert'; + +// After - MUST import from `react-native` +import {Alert} from 'react-native'; +``` + +:::tip Key win + +We've scoped our public API to the exports of React Native's `index.js` file, which we carefully maintain. This means that file changes elsewhere in our codebase will no longer be breaking changes. + +::: + +### Breaking: Some type names / shapes have changed + +Types are now generated from source, rather than manually maintained. In doing this: + +- We've aligned differences that had built up from the community contributed types — and also increased the type coverage of our source code. +- We've intentionally updated some type names and type shapes, where there was scope to simplify or reduce ambiguity. + +:::tip Key win + +Because types are now generated from React Native's source code, you can be confident that the typechecker is **always accurate** for a given version of `react-native`. + +::: + +#### Example: Stricter exported symbols + +The `Linking` API is now a single `interface`, rather than two exports. This follows for a number of other APIs ([see docs](/docs/strict-typescript-api)). + +```tsx +// Before +import {Linking, LinkingStatic} from 'react-native'; + +function foo(linking: LinkingStatic) {} +foo(Linking); + +// After +import {Linking} from 'react-native'; + +function foo(linking: Linking) {} +foo(Linking); +``` + +#### Example: Fixed / more complete types + +Previous manual type definitions left the opportunity for type gaps. Under generated Flow → TypeScript, these are no longer present (and at source, benefit from Flow's additional type validation for multi-platform code). + +```tsx +import {Dimensions} from 'react-native'; + +// Before - Type error +// After - number | undefined +const {densityDpi} = Dimensions.get(); +``` + +### Other breaking changes + +Please refer to our [dedicated guide](/docs/strict-typescript-api) in the docs which details all breaking types changes and how to update your code. + +## Rollout + +We appreciate that any breaking change to React Native will take time for developers to update to in their apps. + +#### Now — Opt-in launch (0.80) + +The `"react-native-strict-api"` opt-in is stable in the 0.80 release. + +- This is a one-time migration. We aim for apps and libraries to opt in at their own pace over the next couple of releases. +- Under either mode, nothing will change for your app at runtime — this affects TypeScript analysis only. +- **And**, we will take feedback on missing APIs, via our [dedicated feedback thread](https://github.com/react-native-community/discussions-and-proposals/discussions/893). + +:::tip Recommended + +The Strict TypeScript API will become our default API in future. + +If you have time, it's worth testing the opt-in now in your `tsconfig.json`, to futureproof your app or library. This will immediately evaluate if there are any type errors introduced in your app under the Strict API. **There may be none(!)** — in which case, you're good to go. + +::: + +#### Future — Strict TypeScript API by default + +In the future, we will require all codebases to use our Strict API, and will remove the legacy types. + +The timeline for this will be based on community feedback. For at least the next two React Native releases, the Strict API will remain an opt-in. + +## FAQs + +
+ +**I'm using subpath imports today. What should I do?** + + +Please migrate to the root `'react-native'` import path. + +- Subpath imports (e.g. `'react-native/Libraries/Alert/Alert'`) are becoming private APIs. Without preventing access to implementation files inside React Native, we can’t offer a stable JavaScript API. +- We want our deprecation warnings to motivate community feedback, which can be raised via our [centralized discussion thread](https://github.com/react-native-community/discussions-and-proposals/discussions/893), if you believe we are not exposing code paths that are crucial for your app. Where justified, we may promote APIs to the index export. + +
+ +
+ +**I'm a library maintainer. How does this change impact me?** + + +Both apps and libraries can opt in at their own pace, since `tsconfig.json` will only affect the immediate codebase. + +- Typically, `node_modules` is excluded from validation by the TypeScript server in a React Native project. Therefore, your package's exported type definitions are the source of truth. + +**💡 We want feedback!** As with changed subpath imports, if you encounter any integration issues with the Strict API, please let us know [on GitHub](https://github.com/react-native-community/discussions-and-proposals/discussions/893). + +
+ +
+ +**Does this guarantee a final API for React Native yet?** + + +Sadly, not yet. In 0.80, we've made a tooling investment so that React Native's existing JS API baseline can be accurately consumed via TypeScript — enabling future stable changes. We're formalizing the existing API you know and love. + +Later in 2025 (and beyond), we may take more action to finalise the APIs we currently offer in core — across each language surface. API changes will be communicated via RFCs/announcements, and typically a deprecation cycle. + +
+ +
+ +**Why isn't React Native written in TypeScript?** + + +React Native is core infrastructure at Meta. We test every merged change across our Family of Apps, before they hit general open source availability. + +At this scale and sensitivity, correctness matters. The bottom line is that Flow offers us greater performance and greater strictness than TypeScript, including specific [multi-platform support for React Native](https://flow.org/en/docs/react/multiplatform/). + +
+ +## Thanks + +These changes were made possible by [Iwo Plaza](https://x.com/iwoplaza), [Jakub Piasecki](https://x.com/breskin67), [Dawid Małecki](https://github.com/coado), [Alex Hunt](https://x.com/huntie), and [Riccardo Cipolleschi](https://x.com/CipolleschiR). + +Thanks also to [Pieter Vanderwerff](https://github.com/pieterv), [Rubén Norte](https://github.com/rubennorte), and [Rob Hogan](https://x.com/robjhogan) for their additional help and input. + +:::note Learn more + +
+

+Watch the talk! +We shared a deep dive into our motivations and the work behind the Strict TypeScript API at App.js 2025. +**[View on YouTube](https://www.youtube.com/live/UTaJlqhTk2g?si=SDRmj80kss7hXuGG&t=6520)** +

+App.js 2025 Talk +
+ +::: diff --git a/website/blog/authors.yml b/website/blog/authors.yml index 0c67a804a5c..ac4de208b6f 100644 --- a/website/blog/authors.yml +++ b/website/blog/authors.yml @@ -324,3 +324,26 @@ chrfalch: x: https://x.com/chrfalch github: https://github.com/chrfalch image_url: https://github.com/chrfalch.png + +iwoplaza: + name: Iwo Plaza + title: Software Engineer @ Software Mansion + socials: + x: iwoplaza + github: iwoplaza + image_url: https://github.com/iwoplaza.png + +jpiasecki: + name: Jakub Piasecki + title: Software Engineer @ Software Mansion + socials: + x: https://x.com/breskin67 + github: https://github.com/j-piasecki + image_url: https://github.com/j-piasecki.png + +coado: + name: Dawid Małecki + title: Software Engineer @ Software Mansion + socials: + github: coado + image_url: https://github.com/coado.png diff --git a/website/static/blog/assets/0.80-js-stable-api-appjs.jpg b/website/static/blog/assets/0.80-js-stable-api-appjs.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ae7f3b45435803874f04df5352a1a567946d7a2d GIT binary patch literal 58860 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.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 U6n>Ma-`*!$Rp%6AE^ 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𝔳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 literal 0 HcmV?d00001 From 9917282270d2c87cc6d3cad14bccaf5ef22eb66f Mon Sep 17 00:00:00 2001 From: Nicola Corti Date: Thu, 12 Jun 2025 12:14:15 +0100 Subject: [PATCH 2/2] Update website/blog/2025-06-09-moving-towards-a-stable-javascript-api.md --- .../blog/2025-06-09-moving-towards-a-stable-javascript-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-06-09-moving-towards-a-stable-javascript-api.md b/website/blog/2025-06-09-moving-towards-a-stable-javascript-api.md index 5bd9e1e2bb8..e5fac933860 100644 --- a/website/blog/2025-06-09-moving-towards-a-stable-javascript-api.md +++ b/website/blog/2025-06-09-moving-towards-a-stable-javascript-api.md @@ -281,7 +281,7 @@ Both apps and libraries can opt in at their own pace, since `tsconfig.json` will Sadly, not yet. In 0.80, we've made a tooling investment so that React Native's existing JS API baseline can be accurately consumed via TypeScript — enabling future stable changes. We're formalizing the existing API you know and love. -Later in 2025 (and beyond), we may take more action to finalise the APIs we currently offer in core — across each language surface. API changes will be communicated via RFCs/announcements, and typically a deprecation cycle. +In the future, we will take action to finalise the APIs we currently offer in core — across each language surface. API changes will be communicated via RFCs/announcements, and typically a deprecation cycle.