Open Source Roadmap
This year, the React Native team has focused on a large scale re-architecture of React Native. As Sophie mentioned in her State of React Native post, we've sketched out a plan to better support the thriving population of React Native users and collaborators outside of Facebook. It's now time to share more details about what we've been working on. Before I do so, I'd like to lay out our long-term vision for React Native in open source.
Our vision for React Native is...
- A healthy GitHub repository. Issues and pull requests get handled within a reasonable period of time.
- Increased test coverage.
- Commits that sync out from the Facebook code repository should not break open source tests.
- A higher scale of meaningful community contributions.
- Stable APIs, making it easier to interface with open source dependencies.
- Facebook uses the same public API as open source
- React Native releases that follow semantic versioning.
- A vibrant eco-system. High quality ViewManagers, native modules, and multiple platform support maintained by the community.
- Excellent documentation. Focus on helping users create high quality experiences, and up-to-date API reference docs.
We have identified the following focus areas to help us achieve this vision.
✂️ Lean Core
Our goal is to reduce the surface area of React Native by removing non-core and unused components. We'll transfer non-core components to the community to allow it to move faster. The reduced surface area will make it easier to manage contributions to React Native.
WebView
is an example of a component that we transferred to the community. We are working on a workflow that will allow internal teams to continue using these components after we remove them from the repository. We have identified dozens more components that we'll give ownership of to the community.
🎁 Open Sourcing Internals and 🛠Updated Tooling
The React Native development experience for product teams at Facebook can be quite different from open source. Tools that may be popular in the open source community are not used at Facebook. There may be an internal tool that achieves the same purpose. In some cases, Facebook teams have become used to tools that do not exist outside of Facebook. These disparities can pose challenges when we open source our upcoming architecture work.
We'll work on releasing some of these internal tools. We'll also improve support for tools popular with the open source community. Here's a non-exhaustive list of projects we'll tackle:
- Open source JSI and enable the community to bring their own JavaScript VMs, replacing the existing JavaScriptCore from RN's initial release. We'll be covering what JSI is in a future post, in the meantime you can learn more about JSI from Parashuram's talk at React Conf.
- Support 64-bit libraries on Android.
- Enable debugging under the new architecture.
- Improve support for CocoaPods, Gradle, Maven, and new Xcode build system.