Rock is a modular toolkit for teams building React Native apps at scale. It includes a CLI and a Remote Build Cache to speed up builds, adopt React Native incrementally, and keep your stack flexible.
If you want to try it in an existing Community CLI project, head over to Quick start.
Rock is built for two kinds of teams:
For new projects that aren't brownfield, consider starting with Expo for the best developer experience and similar remote caching capabilities. We recommend using this template for sensible defaults. Rock is designed for teams who have outgrown the Community CLI or need advanced features like microfrontends and custom build pipelines.
Both types of teams will benefit from Rock's cross‑platform reach: iOS and Android by default, with a flexible architecture that extends to TVs, macOS, Windows, and HarmonyOS (coming soon).
On a daily basis at Callstack, we're serving clients that usually have large teams, building complex apps for years, accumulating tech debt, becoming slower and slower to iterate, where time is wasted on waiting for builds and onboarding web engineers into intricacies of mobile platforms. According to the React Native Framework RFC, almost all of these companies are building their own frameworks based on the Community CLI—they just don't open source them to make them available for everyone, and for good reasons.
As maintainers of the Community CLI, we have quite the exposure to how this tool is used (and misused) in various projects. When we evaluated how our clients use it and what our developers are challenged with, we noticed that these companies encounter similar challenges that they address uniquely:
We also have clients who:
Using anything other than the Community CLI is not an option for them currently.
We exist to serve all these needs.
We build the framework with a clear focus: to serve large teams and complex apps. These projects require flexibility, the ability to host everything on their own, deploy to as many platforms as possible, and decrease onboarding time. That's why our engineering design choices focus on:
We've created a new CLI from scratch with a focus on seamless migration from the Community CLI. Most projects can replace their local build and run experience with our CLI in under 10 minutes.
Its core part is modular configuration mechanism allowing for customizing the capabilities to your needs through a system of plugins and replaceable parts of the build chain, such as: bundler, platforms, remote cache provider, or helpers exposed through variety of npm packages.
For the best DX we focus on our CLI to be entrypoint to that system. In the future we imagine you can interact with it through other tools, like Shopify's Tophat, AI agent, or a custom CLI you already have and control.
The CLI handles all essential build and deployment tasks:
We've updated command names:
run-android → run:androidbuild-android → build:androidrun-ios → run:iosbuild-ios → build:iosFor a complete list of new commands, visit the CLI page.
We've standardized flag naming across platforms:
Android:
--mode → --variant--appId → --app-id--appIdSuffix → --app-id-suffixiOS:
--mode → --configuration--buildFolder → --build-folderWe've simplified the interface by removing redundant flags:
--interactive/-i – CLI now prompts for input when needed--list-devices – Device selection is now automatic when no devices are connectedThe Remote Cache is an optional but powerful feature that speeds up your development workflow. It acts as a centralized storage for native app builds that can be retrieved either manually or through our CLI. The cache can be hosted on various platforms:
Out of the box we support storing artifacts on GitHub Actions and we're working on more providers.
.rock/ directory)
We provide a set of reusable GitHub Actions that handle:
Learn more about GitHub Actions configuration.