Open-source project
infinitered/reactotron avatar
infinitered/reactotron

Reactotron: a desktop debugger for React and React Native state, network traffic and logs

A desktop app for inspecting your React JS and React Native projects. macOS, Linux, and Windows.

15,592 stars971 forksTypeScriptMIT

At a glance

What is it?
Reactotron is an MIT-licensed desktop app from Infinite Red that connects to a React or React Native dev build, so you can watch state, API calls and logs outside the browser. It installs as a dev dependency, and the setup code is what decides whether it helps or gets in the way.
Who is it for?
Adopt Reactotron if you already keep application state in Redux, mobx-state-tree or plain React state and you want to read it in a separate window instead of inside the browser or Metro console. Skip it if you need a debugger that works against a production or release build, since the README is explicit that you plug it in as a dev dependency and it adds nothing to production builds.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 48 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 1, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The problem Reactotron solves: state you cannot see from the simulator

A React Native app runs in a different process from your editor. The browser DevTools panel that React developers rely on does not exist on the device, and Metro's terminal output is a stream of text with no structure. When a reducer updates the wrong slice, or a request returns a 401 and the UI simply renders an empty list, the usual fallback is to scatter console.log calls and reload.

Reactotron puts a separate desktop window next to your running app. The README lists what that window is for: viewing application state, showing API requests and responses, running quick performance benchmarks, subscribing to parts of state, displaying messages like console.log, tracking global errors with source-mapped stack traces including saga stack traces, dispatching actions, hot swapping state through Redux or mobx-state-tree, showing an image overlay in React Native, and tracking Async Storage. That list is broad, and the practical consequence is that one tool covers several jobs that would otherwise need separate browser tabs and native tooling.

The audience is narrower than the feature list suggests. Reactotron is for developers working on a client app in development, on macOS, Linux or Windows, who want the app's internal state visible without attaching a platform debugger. Infinite Red describes it as the debugger the company uses day to day to build client apps, which is a fair signal of where it fits: application-level inspection during feature work, not low-level profiling.

How Reactotron works: a desktop client, a dev dependency, and a connection between them

There are two halves. The first is the desktop application, which the README points you to download from the Releases page, filtering for the latest reactotron-app release. Builds are published for macOS in x64 and arm64, Linux in 32-bit and 64-bit, and Windows in 32-bit and 64-bit. That is the window you look at.

The second half is a client library that you add to your own project as a dev dependency. The README states this explicitly: you plug it into your app as a dev dependency so it adds nothing to your production builds. The client library is what knows about your Redux store, your networking layer and your Async Storage; it serializes events and sends them to the desktop app, and the desktop app renders them in the plugin panels.

The plugin list in the README maps roughly one-to-one onto those panels: Track Global Errors, Track Global Logs, Networking, Async Storage, React Native MMKV, Benchmark, apisauce, Overlay, MST, Redux, Open in Editor, Storybook for React Native, and Custom Commands. Because the client ships with Storybook support in reactotron-react-native, the desktop app can also switch your running app into Storybook. The repository is a Yarn workspaces monorepo, with apps and lib directories at the top level and Nx as the build tool, so the desktop app and the client packages are versioned and released separately. That separation is visible in the release list: reactotron-react-native has its own version numbers, independent of the desktop app.

Installing Reactotron on macOS, Linux or Windows

Reactotron is not a package you install globally and run from a terminal. The README directs you to the Releases page on GitHub, where you filter for the latest reactotron-app release to find the newest version for your platform. The published targets are macOS x64 and arm64, Linux 32-bit and 64-bit, and Windows 32-bit and 64-bit. Pick the artifact that matches your machine and install it the way you would any desktop application.

Once the app is open, the work moves to your project. The README links two quick-start paths, one for React Native and one for React, and the exact import names differ between them, so follow the page for your platform rather than copying a snippet from a blog post. The README does not print the client setup code inline; it hands that job to the quick-start pages, and the React Native troubleshooting page covers iOS and Android specific problems if the desktop app never shows a connection.

What the README does document inline is the plugin surface you configure after connecting. The React Native client ships with Storybook support, which the README describes as enabling you to switch to Storybook from the Reactotron app:

bash
reactotron-react-native

That package name is the one the README uses for the React Native client and for its Storybook support. Beyond the package name and the plugin links, the setup sequence lives in the docs site rather than the repository README, so treat the quick-start page as the source of truth for your platform's import and configuration calls.

Where Reactotron stops being the right tool

The dev-dependency design is also the boundary. Because the client is wired in behind a development check, a release build has no channel to the desktop app, and the README's promise that it adds nothing to production builds depends on your own build configuration actually excluding it. If your team imports the client unconditionally, you have added a dependency and a connection attempt to a shipped binary, which is the opposite of the intended setup.

The second limit is scope. Reactotron inspects what your JavaScript layer chooses to report: state, network calls, logs, storage. It is not a native debugger and it does not replace the platform tools for memory, rendering or native module problems. The README's troubleshooting section is split into React Native iOS and React Native Android pages precisely because connection problems are platform specific. If your bug lives below the JavaScript bridge, Reactotron will show you nothing about it.

The third is that the plugin list is a menu, not a default. Redux, mobx-state-tree, Async Storage and MMKV each need their own plugin configured before the corresponding panel has anything to display. Adding Reactotron to a project and expecting a populated UI without wiring those up is the most common way to conclude, wrongly, that the tool is thin. The README also asks that bug reports reproduce problems using the example app under app/example-app, which tells you the maintainers expect a minimal reproduction rather than your full application.

Reactotron compared with Flipper and the React Native Debugger

The two names that come up alongside Reactotron are Flipper and React Native Debugger, and the difference is architectural rather than cosmetic.

Reactotron is a standalone desktop app plus a JavaScript client library that you configure inside your app. Its plugins are JavaScript-level: it hooks the Redux store, the networking client, Async Storage, MMKV and the error handler, and it renders whatever those hooks emit. Nothing about it requires the native build to expose an inspection interface beyond the connection the client opens.

Flipper takes the other route. It is a platform debugging tool whose desktop client talks to native plugins built into the app, which is why it can reach into areas Reactotron does not, and why adding a custom Flipper plugin means writing native code as well as JavaScript. If your question is about a native module or a platform API, that architecture is the reason to look there.

React Native Debugger is closer to Reactotron in spirit but sits on the Chrome DevTools protocol, so its centre of gravity is the JavaScript runtime and the Redux DevTools extension rather than a set of app-level plugin panels. Choosing between them is mostly a question of whether you want your state inspection inside the same window as the JS debugger, or in a separate app that also tracks storage, network responses and custom commands. Reactotron's own documentation does not publish a comparison table against either tool, so treat any feature-by-feature claim you read elsewhere as unverified.

Maintenance, release cadence and the MIT licence

The repository is not archived, and the last push was on 2026-08-13. The release list shows [email protected] and [email protected] both published on 2026-08-13, with [email protected] earlier on 2026-05-28. Those are client library releases; the README tells users to get the desktop app from the reactotron-app releases, and the two are versioned separately, so upgrading one does not imply upgrading the other. When you update, check both sides.

The root package.json declares a Node engine of >=18.0.0 and a Yarn workspaces setup over apps/* and lib/*, with Nx 17.0.3 as the build tool and patches applied to electron-webpack, react-hotkeys and webpack through Yarn resolutions. The presence of patches against webpack 4.47.0 and electron-webpack 2.8.2 is worth noting if you intend to build the desktop app from source rather than download a release: the build depends on a pinned, patched toolchain, and moving those pins is not a casual change.

Reactotron is MIT licensed, which permits commercial and closed-source use. That is a permissive licence with no copyleft obligation on your application code, and the README states the project is free to use and always will be. Infinite Red separately sells premium React and React Native design and development services, which is a business relationship, not a licence term. This is a description of the licence text, not legal advice; read the LICENSE file in the repository if the distinction matters to your organisation.

Editorial conclusion

Adopt Reactotron if you already keep application state in Redux, mobx-state-tree or plain React state and you want to read it in a separate window instead of inside the browser or Metro console. Skip it if you need a debugger that works against a production or release build, since the README is explicit that you plug it in as a dev dependency and it adds nothing to production builds. Before wiring it into a shared codebase, verify two things yourself: that the desktop app you download from the reactotron-app release matches your OS and architecture, and that your team is comfortable with the client libraries being imported at app startup behind a dev check. The repository's last push was on 2026-08-13, and the most recent release in the list is [email protected] on the same day.

Frequently asked questions

What is Reactotron?

It is a desktop debugger for React and React Native applications, published by Infinite Red under the MIT licence. The README describes it as a tool for monitoring an application's state, network requests and performance metrics, installed as a dev dependency so it adds nothing to production builds.

How do I install Reactotron?

Download the desktop app from the Releases page, filtering for the latest reactotron-app release for macOS, Linux or Windows. Then add the client library to your project as a dev dependency, following the quick-start page for React Native or React.

How to install Reactotron on Windows?

The README lists Windows builds in both 32-bit and 64-bit on the reactotron-app release page. Download the artifact matching your architecture, then wire the client library into your project as a dev dependency.

How to use Reactotron in React Native?

Follow the React Native quick-start page linked from the README to configure the client library, then open the desktop app. The README states that reactotron-react-native also ships with Storybook support, which lets you switch to Storybook from the Reactotron app.

How do I set up Reactotron?

Setup has two parts: the desktop app from the reactotron-app releases, and the client library configured inside your app. The README links separate quick-start pages for React Native and React, and the import names differ between them.

Official sources

  1. infinitered/reactotron on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/infinitered-reactotron.svg)](https://hysenlabs.com/projects/infinitered-reactotron)