The React Native CLI Has a New Home
In short
In this article we announce that CLI has been extracted from the core repository. The changes include adopting semantic versioning, significantly reducing command execution time, improving logging, resolving long-standing issues, and deprecating certain commands. The CLI is set to play a crucial role in React Native's future, with even more exciting updates on the horizon.
CLI changes
If you keep your eyes close on what’s going on in React Native (and there’s so much going on!), you may have noticed that around two months ago the CLI (command line interface) has been extracted from the core repository into the separate GitHub module. The change should be completely transparent to the end users of React Native. You’ll likely never have to use this module manually — running yarn react-native will proxy directly to this module.
Extracting CLI out of core repo is a part of “Lean Core” effort and the reason we did it is simple: to move fast. As a part of this effort, we believe that CLI should be treated as a first-class citizen in the community and have a dedicated place.
Quickly after Mike Grabowski created a new community module out of it, a team of first contributors formed, including Ferran Negre, Michał Pierzchała and Kacper Wiszczuk. We would like to thank all of our contributors for submitting significant PRs and helping us make the release on time! ❤️
In the first release, we focused on quick-wins: fixing small, but bothersome bugs. At the same time, we are continuously working hard to improve the overall developer experience, working with native modules and to introduce an interface for bundlers.
We are extremely thrilled to release the results of our work under React Native 0.59, along with such important features like Hooks, Android 64-bit support and new JSC engine.
Highlights
We’ve accumulated quite a bunch of changes since the extraction. Here are the ones that stand out:
- The project now follows semver;
- Time to run a command dropped significantly — from 2.5s to 0.2s;
- Logging is now prettier and unified (it’s an ongoing effort to improve it further though);
- Fixed a dreaded CFBundleIdentifier issue (open for 2 years);
- Fixed link command resulting in duplicate entries on Android;
- Running react-native link without package name is now deprecated and will be removed in v2.0;
- react-native dependencies command was moved to metro and is now deprecated;
You can see the full changelog here.
We’re thankful to Expo for helping us out in this effort — we appreciate the high quality of their tooling and cooperate together to apply the learnings to all React Native projects.
The future of React Native seems bright like never before and CLI is no exception to that. We hope you’ll join us on this journey.
Update:
New version of the React Native CLI is out with a lot of new features and fixes! Read more about what's new in React Native CLI 3.1.0 and 4.0.0 version!
As you can see, if you’re looking for a tech partner who not only uses technology, but actually creates it, you’ve come to the right place. We offer a variety of React Native development services to help you build the best digital product out there – check them out and give us a shout!