The React Native CLI Has a New Home

Kacper Wiszczuk
Callstack Engineers
2 min readFeb 13, 2019
The React Native CLI Has a New Home

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 2 months ago the CLI (command line interface) has been extracted from the core repository into @react-native-community/cli. 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 find 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.

This article was originally published at callstack.com on February 13, 2019.

--

--