React Native Windows Moving to Microsoft GitHub Organization

logo.png

Microsoft has been contributing to react-native-windows for a little over a year. I’m happy to announce that the project has moved to the Microsoft GitHub organization. This change of ownership on GitHub can only benefit the open source project and its users, bringing more visibility and authority to the effort. All other aspects of the project will be business-as-usual.

When we kicked-off the effort to bring React Native to UWP, our aim was to push the contribution back to facebook/react-native. We created the ReactWindows GitHub organization as a temporary home for the project until the upstream contribution could be made. When we officially announced the react-native-windows effort last April, a few other platforms for React Native were in development, including an implementation for Tizen and MacOS. Given the growing interest in bringing new platforms to React Native, we worked together with React Native core contributors to land on a strategy that would scale to many new platforms.

Having all new React Native platform efforts land in one repository would have evolved into a maintainability nightmare. Open source contributors would find it more difficult to craft bug fixes and new features, as they would have to consider their impact across all platforms. Likewise, additional CI mechanisms for each new platform would be even more likely to turn out build and test failures due to environmental issues and non-determinism in tests (hey, we can’t always be perfect). This would lead to decreased confidence in pull requests and increased delays in merging.

Furthermore, React Native currently has a monthly release cadence. About a year ago, releases were at least semi-monthly. Combined with intermittent publishing of patches, React Native users were saturated with releases to keep up with. Additional platforms would have only increased the frequency of releases, with even more patches needed. New platforms also would not have the opportunity to control their own release cadence.

We decided that the healthiest strategy for React Native and emerging platform implementations was a plugin approach. This would make adding platforms to existing React Native projects “opt-in”, similar to the way Cordova manages platforms (e.g., cordova platform add android --save). Implementations of native bridges and any overrides of core JavaScript modules for each platform would exist as separate open source projects and NPM packages.

Only a few minor fixes to the packager were required to support new platforms coming in with this plugin approach. The larger issue was making plugin platforms feel like an integrated experience. Luckily, the community had already produced RNPM, a tool for automatically integrating native modules into React Native projects. RNPM has a nice architectural component that supports command line plugins.

We built an RNPM plugin to generate and run react-native-windows projects, similar to the existing react-native init and react-native run-[ios|android] commands. This strategy paid off when RNPM was integrated into React Native, and now instead of commands like rnpm windows and rnpm run-windows, we can use react-native windows and react-native run-windows from the existing React Native CLI.

Many other positive things have happened with the project over the past year. We continue to see increasing activity in the open source community, with more users filing issues and submitting pull requests each week.  We’ve been fortunate to have great partners using and contributing to the framework like BlueJeans and Axsy. BlueJeans’ efforts have expanded React Native on Windows to WPF, enabling apps on Windows 7, Windows 8, and potentially Windows Phone 8.  We’ve also recently integrated Yoga, a cross-platform layout library, finally bringing full parity to the layout style props supported across iOS, Android, and Windows.

It’s a great time to transition the project from its temporary home in ReactWindows to the Microsoft GitHub organization. We look forward to continued contributions from the React Native community and hope this news will bring even more energy to the React Native for UWP effort. Get started today at github.com/Microsoft/react-native-windows!

 

 

 

React Native Windows Moving to Microsoft GitHub Organization