See inside your running app. So can your agent.

Rozenite puts plugin panels in React Native DevTools for you, and gives your coding agent the same data as tools it calls from the terminal: logs, network requests, React profiles and plugin state.

Get started
npx rozenite@latest init
Rozenitezsh
$ npx rozenite@latest init
$ npm install -D @rozenite/network-activity-plugin
# for you: press j to open React Native DevTools
$ npx skills add callstackincubator/rozenite --skill rozenite
# for your agent: the rozenite skill

Works with React Native, iOS, Android, Expo, Metro, Re.Pack, React Native Web, Webpack, Lynx, rspeedy, React Native DevTools.

[01] How it works

Set it up once. You and your agent both use it.

  1. 01

    Run init

    It detects Metro, Re.Pack or rspeedy, installs the right package and updates your bundler config.

    $ npx rozenite@latest init
  2. 02

    Add plugins

    Each plugin adds a panel to React Native DevTools. Most also need a small hook in your app; its page has the line.

    $ npm install -D @rozenite/tanstack-query-plugin
  3. 03

    Give your agent the skill

    The rozenite skill teaches a coding agent the rozenite agent CLI, with docs that match your installed version.

    $ npx skills add callstackincubator/rozenite --skill rozenite
Rozenitemetro.config.js
const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config');
const { withRozenite } = require('@rozenite/metro');

const defaultConfig = getDefaultConfig(__dirname);

module.exports = withRozenite(mergeConfig(defaultConfig, {}), {
  enabled: process.env.WITH_ROZENITE === 'true',
});
@rozenite/metroExpo or bare React Native, with the bundler React Native ships.Set up Metro

[02] Agents

The same runtime, as tools your agent calls.

Rozenite for Agents opens a session on the running app. Your agent reads logs, network requests, React profiles, performance traces and heap snapshots, and calls the tools your app and your plugins register.

Rozenite for Agents
Rozenitezsh
npx rozenite agent session create

npx rozenite agent console call \
  --tool getMessages \
  --args '{"levels":["error"]}' \
  --session <session-id>
consoleBuilt-in

Logs from the app, filtered by level or text.

getMessages · clearMessages

networkBuilt-in

Requests during a flow, with headers and bodies.

startRecording · listRequests · getResponseBody

reactBuilt-in

The component tree, props, state and hooks, and render profiles.

searchNodes · startProfiling · getRenderData

performanceBuilt-in

A performance trace over a reproduction.

startTrace · stopTrace

memoryBuilt-in

Heap snapshots and allocation sampling.

takeHeapSnapshot · startSampling

app · pluginsYours

Your app and your plugins register their own tools with one hook, for the state and actions only they know about.

Add a tool

[03] Official plugins

Panels for the libraries you already use.

Each official plugin is a thin bridge between a library and a DevTools panel, in the Rozenite tab.

[04] Build your own

And the one you write, for you and your agent.

Write a plugin when you need to see your own app's state, or a library no plugin covers yet. You get a panel in the Rozenite tab, and your agent gets tools to read the same data.

[05] Safe by default

Development only. Nothing in production.

Off until you turn it on

Rozenite only runs when enabled is true in your bundler config, usually behind WITH_ROZENITE=true.

Nothing ships to users

Plugins are disabled in production builds, so no plugin code reaches your release bundle.

Choose what loads

Every installed plugin loads by default. Narrow it with include or exclude in withRozenite.

Panels keep their state

Switch away and back without losing data. Opt out per plugin with destroyOnDetachPlugins.

[06] Beyond React Native

Same panels, more places.

[07] FAQ

Frequently asked questions

Does any of this ship to my users?
No. Rozenite is off until you enable it in your bundler config, and plugins are disabled in production builds, so no plugin code ships.
Which versions does it support?
Expo SDK 52+, React Native 0.76+ and Re.Pack 5.2+. Bare React Native works when it matches the React Native of the minimum Expo SDK.
Does it work with Expo?
Yes, with Expo and bare React Native, on Metro or Re.Pack. rozenite init detects the bundler and updates the config.
Can an agent and React Native DevTools connect at once?
Yes. Your agent can hold a session on the app while React Native DevTools stays open, so you can watch the panels while it works.
What about Lynx and the web?
Both are experimental. Lynx works through rspeedy, React Native Web through the browser extension. Plugins declare which targets they support.
Can I list my own plugin?
Yes. The plugin directory is a list in the repo: add your package with a pull request.
Get started