Enable it in your app
Add the Parallax SDK and the build plugin to a React Native project, in development builds only.
You do this once per project. Run every command on this page in the app's project root (the folder with package.json). Both packages are development tools; release builds are untouched.
1. Install the packages
npm install -D @parallax-rn/sdk@0.1.0-beta.2 @parallax-rn/babel-plugin@0.1.0-beta.2Use the same version as the MCP server. While the protocol major is 0, the server, the SDK and the plugin must match (see Update and undo). With yarn, pnpm or bun use yarn add -D, pnpm add -D or bun add -d.
2. Start the SDK
Call start() at the top of the app's entry file, behind __DEV__: index.js in a bare React Native app (the file that registers the root component), or the root layout app/_layout.tsx with Expo Router.
if (__DEV__) {
require('@parallax-rn/sdk').start();
}The SDK captures console output and uncaught errors (your original console methods and error handler always run first, so LogBox and the red box behave as before), and lets the app register commands, stores and a navigation container. Metro removes the whole branch from a release bundle, and as a second guard start() does nothing when __DEV__ is false.
3. Add the build plugin
The plugin gives the tools file and line for what is on screen. In development builds it writes, for every file with JSX, a table of its elements and registers it at run time. It never changes the code you wrote.
// babel.config.js
module.exports = {
presets: ['module:@react-native/babel-preset'],
plugins: ['@parallax-rn/babel-plugin', 'react-native-worklets/plugin'],
};List it before react-native-worklets/plugin if you use it (that plugin must be last).
Restart Metro with --reset-cache
Metro's transform cache does not notice a change of babel.config.js or of the plugin. After adding or updating the plugin, restart Metro once with npx react-native start --reset-cache (bare React Native) or npx expo start -c (Expo). Until you do, the tables are missing, or the old ones point to wrong files and lines.
Options, such as injectTestIDs (off by default), root and exclude, are in the Babel plugin reference.
On Expo, if your app had no babel.config.js and you add one with presets: ['babel-preset-expo'], Metro may fail with "Cannot find module 'babel-preset-expo'". Run npx expo install babel-preset-expo.
4. Check
Ask the agent for doctor (see Check it for a good result), or run npx -y @parallax-rn/mcp@0.1.0-beta.2 doctor in the project root. The Parallax SDK, Parallax build plugin and Parallax versions rows tell you what is missing and how to fix it.
Release builds
- The SDK branch is removed from the release bundle, and
start()returnsfalsewhen__DEV__is false. - The plugin is active only when Babel's environment is
development. Otherwise its output is the same as without it. There is no option to force it on in a release build. - If a release pipeline builds a development bundle by mistake (Babel environment
developmentbutNODE_ENV=production), the plugin fails the build with a Fix line: build releases withdev=false. - For CI,
npx parallax-bundle-check <bundle>searches a release bundle (or the Hermes bytecode made from it) for what the SDK and plugin leave behind. Exit code 0 means clean, 1 means found, 2 means a usage or file error.
Without the SDK and the plugin
The device tools, status and doctor need neither. app_tree needs no SDK and works with component names only (no file and line) without the plugin. Logs and errors need the SDK for full history; commands, stores and navigation registration need it too. On Expo, the network panel needs the SDK, because Expo's debugger reports no request.