reactoradar 1.2.5 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
- # RN Debugger
1
+ # ReactoRadar
2
2
 
3
3
  <p align="center">
4
- <b>A standalone macOS app for debugging React Native apps</b>
4
+ <b>A standalone macOS debugger for React Native apps</b>
5
5
  <br/>
6
6
  <i>Supports React Native 0.74+ with Hermes, New Architecture, and latest versions</i>
7
7
  </p>
@@ -17,7 +17,7 @@
17
17
 
18
18
  ---
19
19
 
20
- > The original [React Native Debugger](https://github.com/jhen0409/react-native-debugger) only supports the old Remote Debugger and doesn't work with Hermes / JSI / New Architecture. **This app is the modern replacement** — built from scratch to work with the latest React Native versions.
20
+ > The original [React Native Debugger](https://github.com/jhen0409/react-native-debugger) only supports the old Remote Debugger and doesn't work with Hermes / JSI / New Architecture. **ReactoRadar is the modern replacement** — built from scratch to work with the latest React Native versions.
21
21
 
22
22
  ## Screenshots
23
23
 
@@ -26,52 +26,49 @@
26
26
  <img src="https://raw.githubusercontent.com/sharanagouda/react-native-debugger/main/screenshots/consoleLogs.png" alt="Console Panel" width="800" />
27
27
  </p>
28
28
 
29
- *Collapsible object trees, level filters (Log/Info/Warn/Error), search, right-click to copy*
29
+ *Collapsible object trees, multi-select level filters (Log/Info/Warn/Error/Debug), search, right-click to copy*
30
30
 
31
31
  ### Network — Chrome DevTools-style Inspector
32
32
  <p align="center">
33
33
  <img src="https://raw.githubusercontent.com/sharanagouda/react-native-debugger/main/screenshots/networkLogs.png" alt="Network Panel" width="800" />
34
34
  </p>
35
35
 
36
- *Resizable/sortable columns, request/response detail, Copy as cURL, throttling*
36
+ *Resizable/sortable columns, request/response detail with collapsible trees, Copy as cURL, throttling*
37
37
 
38
- ## What's included
38
+ ## Features
39
39
 
40
- - **Console** Interactive log viewer with collapsible object trees (Chrome DevTools-like), level filters, caller file:line display
41
- - **Network Inspector** — Chrome DevTools-style network panel with resizable/sortable columns, search, type filters, throttling (Fast 3G / Slow 3G / Offline), Copy as cURL
42
- - **Performance** Live FPS meter, JS Thread timing, UI Thread timing with real-time sparkline graphs
43
- - **Memory** — JS Heap Used/Total, Native Memory gauges from Hermes runtime
44
- - **Redux DevTools** Action list with time travel (Prev/Next), State/Diff/Action tabs with previous/current/next action context
45
- - **AsyncStorage Inspector** — Live key/value browser with search
46
- - **React DevTools** Component tree and props inspector via `react-devtools-core` relay
40
+ | Tab | What it does |
41
+ |---|---|
42
+ | **Console** | Log viewer with collapsible object trees, multi-select level dropdown (persists across restarts), search filter |
43
+ | **Network** | Chrome DevTools-style inspector resizable/sortable columns (Name, Status, Type, Initiator, Size, Time, Waterfall), search, type filters (Fetch/XHR, JS, CSS, Img, Media, Font, Doc, WS), throttling (Fast 3G / Slow 3G / Offline), Copy as cURL, request/response as collapsible trees |
44
+ | **Redux** | Scrollable action list with time travel, prev/current/next actions, payload trees, store diff showing changed keys with old new values |
45
+ | **GA4 Events** | Firebase Analytics inspector intercepts ALL `log*` and `set*` methods on `@react-native-firebase/analytics`, event list with time + name, detail pane with all parameters as key-value trees, summary chips (click to filter), sort by time |
46
+ | **App** | AsyncStorage live key/value browser with search |
47
+ | **Memory** | JS Heap Used/Total, Native Memory from Hermes runtime |
48
+ | **Performance** | Live FPS meter, JS Thread timing, UI Thread timing with sparkline graphs |
49
+ | **React** | Component tree and props inspector via `react-devtools-core` relay |
50
+ | **Settings** | 9 color themes (Dark, Light, Monokai, Dracula, Solarized Dark/Light, Nord, GitHub Dark, One Dark), font size controls, custom app name, how-to-use guide, auto-update notification |
47
51
 
48
52
  ## Installation
49
53
 
50
54
  ### Option A: Using npx (recommended)
51
55
 
52
- No install needed — run directly from your React Native project:
53
-
54
56
  ```bash
55
- npx reactoradar setup # Install SDK into your RN project
56
- npx reactoradar # Launch the debugger app
57
+ cd your-react-native-project
58
+ npx reactoradar setup # Install SDK (one time)
59
+ npx reactoradar # Launch the debugger
57
60
  ```
58
61
 
59
62
  ### Option B: Download .dmg
60
63
 
61
- 1. Download the `.dmg` from the [Releases](https://github.com/sharanagouda/react-native-debugger/releases) page
62
- 2. Drag **RN Debugger** to your Applications folder
63
- 3. **Important:** You still need to install the SDK into your RN project:
64
-
65
- ```bash
66
- cd your-react-native-project
67
- npx reactoradar setup
68
- ```
69
-
70
- 4. Launch the app from Applications and run your RN app
64
+ 1. Download from [Releases](https://github.com/sharanagouda/react-native-debugger/releases)
65
+ 2. Drag **ReactoRadar** to Applications
66
+ 3. Install the SDK: `npx reactoradar setup` from your RN project
67
+ 4. Open ReactoRadar from Applications
71
68
 
72
- > **macOS Gatekeeper warning:** Since the app isn't notarized with Apple, you'll see "Apple could not verify" on first launch. To fix: **right-click the app → Open → Open**. Or run: `xattr -cr "/Applications/RN Debugger.app"`
69
+ > **macOS Gatekeeper**: First launch right-click → Open → Open. Or: `xattr -cr "/Applications/ReactoRadar.app"`
73
70
 
74
- ### Option C: Using npm (global)
71
+ ### Option C: Global install
75
72
 
76
73
  ```bash
77
74
  npm install -g reactoradar
@@ -83,174 +80,86 @@ npm install -g reactoradar
83
80
  git clone https://github.com/sharanagouda/react-native-debugger.git
84
81
  cd react-native-debugger
85
82
  npm install
86
- npm start # run in dev mode
83
+ npm start # dev mode
87
84
  npm run build # build .dmg
88
85
  ```
89
86
 
90
- ## React Native Compatibility
91
-
92
- | RN Debugger | React Native | Engine | Architecture |
93
- |---|---|---|---|
94
- | v1.0+ | 0.74 — 0.81+ | Hermes | Old & New Architecture |
95
-
96
- This app does **not** use the legacy Remote Debugger. It connects via WebSocket bridges and Chrome DevTools Protocol (CDP), which is the standard debugging interface for Hermes.
97
-
98
87
  ## Quick Start
99
88
 
100
- ### Step 1: Install the SDK (one time, from your RN project)
101
-
102
89
  ```bash
90
+ # Step 1: Install SDK (one time)
103
91
  cd your-react-native-project
104
92
  npx reactoradar setup
105
- ```
106
-
107
- This automatically:
108
- - Copies `RNDebugSDK.js` into your project (`src/debug/`)
109
- - Detects your platform (iOS Simulator / Android Emulator / device) and sets the correct HOST
110
- - Patches `index.js` to load the SDK in `__DEV__` mode
111
- - Detects Redux (Toolkit or legacy) and wires the debug middleware
112
- - Runs `adb reverse` for Android (if emulator/device detected)
113
- - Adds the SDK to `.gitignore`
114
-
115
- ### Step 2: Launch the debugger
116
93
 
117
- ```bash
118
- # Using npx:
94
+ # Step 2: Launch debugger
119
95
  npx reactoradar
96
+ # or open ReactoRadar.app from Applications
120
97
 
121
- # Or if you installed the .dmg:
122
- open "/Applications/RN Debugger.app"
98
+ # Step 3: Run your app
99
+ npx react-native start --reset-cache
123
100
  ```
124
101
 
125
- ### Step 3: Run your React Native app
102
+ Console, Network, Redux, GA4, AsyncStorage data flows automatically. No config needed.
126
103
 
127
- ```bash
128
- npx react-native run-ios # or run-android
129
- ```
130
-
131
- Console logs, network requests, Redux actions, and AsyncStorage data flow into the debugger automatically.
132
-
133
- ### 4. Uninstall
104
+ ### Uninstall
134
105
 
135
106
  ```bash
136
107
  npx reactoradar remove
137
108
  ```
138
109
 
139
- Clean removal removes SDK file, patches from `index.js`, Redux wiring, and `.gitignore` entry.
140
-
141
- ## Add to your project scripts
142
-
143
- ```json
144
- {
145
- "scripts": {
146
- "debug:setup": "npx reactoradar setup",
147
- "debug:start": "npx rn-debugger",
148
- "debug:remove": "npx reactoradar remove"
149
- }
150
- }
151
- ```
152
-
153
- Then every developer on your team runs:
154
-
155
- ```bash
156
- npm run debug:setup # one time
157
- npm run debug:start # every time
158
- ```
159
-
160
- ## Documentation
161
-
162
- ### Console
110
+ ## React Native Compatibility
163
111
 
164
- - Intercepts `console.log`, `console.warn`, `console.error`, etc.
165
- - Objects render as collapsible trees with syntax highlighting
166
- - Caller file:line shown at the end of each log row
167
- - Level filters: All / Log / Info / Warn / Error
168
- - Click to expand, right-click to copy message/JSON/caller
169
- - `Cmd+K` clears the active tab
112
+ | ReactoRadar | React Native | Engine | Architecture |
113
+ |---|---|---|---|
114
+ | v1.3+ | 0.74 0.81+ | Hermes | Old & New Architecture |
170
115
 
171
- ### Network Inspector
116
+ ## Network Inspector
172
117
 
173
118
  | Feature | Details |
174
119
  |---|---|
175
- | **Columns** | Name, Status, Type, Initiator, Size, Time, Waterfall — all resizable and sortable |
176
- | **Search** | Filter by API URL in real time |
120
+ | **Columns** | Name, Status, Type, Initiator, Size, Time, Waterfall — resizable and sortable |
121
+ | **Search** | Filter by URL in real time |
177
122
  | **Type filters** | All, Fetch/XHR, JS, CSS, Img, Media, Font, Doc, WS |
178
123
  | **Throttling** | No throttling, Fast 3G (500ms), Slow 3G (2s), Offline |
179
- | **Detail view** | Click a row → Headers / Request / Preview / Response tabs overlay on the right |
180
- | **Copy as cURL** | Right-click any request → Copy as cURL / Copy URL / Copy Response |
181
- | **Request body** | Rendered as collapsible object tree (not raw JSON) |
182
- | **Preview** | Response as interactive object tree, right-click to copy |
183
- | **Capture toggle** | ON/OFF switch to pause/resume network capture |
184
-
185
- Supports `fetch`, `XMLHttpRequest`, and `axios` (including `axios.create()` instances).
186
-
187
- ### Redux DevTools
188
-
189
- - Captures every dispatched action and the resulting state snapshot
190
- - **Time travel**: Step forward/backward through state history
191
- - **State tab**: Full state tree with syntax highlighting
192
- - **Diff tab**: Line-by-line diff against previous state
193
- - **Action tab**: Previous / Current / Next actions with payloads
194
-
195
- Wire Redux with one line:
196
-
197
- ```js
198
- // Redux Toolkit
199
- middleware: (getDefault) =>
200
- __DEV__ ? getDefault().concat(require('./src/debug/RNDebugSDK').reduxMiddleware) : getDefault(),
124
+ | **Detail view** | Click row → Headers / Request / Preview / Response side panel |
125
+ | **Copy as cURL** | Right-click → Copy as cURL / Copy URL / Copy Response |
126
+ | **Request body** | Collapsible object tree (not raw JSON) |
127
+ | **Capture toggle** | ON/OFF switch to pause network capture |
201
128
 
202
- // Legacy Redux
203
- if (__DEV__) middleware.push(require('./src/debug/RNDebugSDK').reduxMiddleware);
204
- ```
205
-
206
- ### AsyncStorage Inspector
207
-
208
- - Live key/value browser
209
- - Search keys
210
- - Values rendered as formatted JSON
211
- - Auto-updates when your app reads/writes AsyncStorage
212
-
213
- ### Performance
214
-
215
- - **FPS** — Frames per second via `requestAnimationFrame` counter
216
- - **JS Thread** — JavaScript thread frame timing
217
- - **UI Thread** — Native UI thread timing
218
- - Real-time sparkline graphs
219
- - Data sent every 2 seconds from the SDK
129
+ ## GA4 Event Inspector
220
130
 
221
- ### Memory
131
+ | Feature | Details |
132
+ |---|---|
133
+ | **Auto-intercept** | Patches ALL `log*` and `set*` methods on Firebase Analytics prototype — no hardcoded list, catches current + future methods |
134
+ | **Event list** | Time + event name, newest first, sortable |
135
+ | **Detail pane** | All parameters as key-value list with collapsible trees for objects/arrays |
136
+ | **Summary chips** | Click any chip to filter by that event type, click again to clear |
137
+ | **Resizable** | Drag the divider between list and detail |
138
+ | **Supported methods** | `logEvent`, `logPurchase`, `logAddToCart`, `logViewItem`, `logScreenView`, `logSelectPromotion`, `logViewPromotion`, `setUserId`, `setUserProperty`, `setConsent`, and 30+ more |
222
139
 
223
- - **JS Heap Used** — Current JavaScript heap usage
224
- - **JS Heap Total** — Total allocated heap
225
- - **Native Memory** — Native heap from Hermes runtime
226
- - Powered by `HermesInternal.getRuntimeProperties()`
140
+ ## Redux DevTools
227
141
 
228
- ### Network Throttling
142
+ - Scrollable action list with search filter
143
+ - Click an action → shows Previous / Current / Next with payloads as collapsible trees
144
+ - Store diff for current action: shows each changed key with **- old value** and **+ new value**
145
+ - Deep equality comparison (no false positives from reference changes)
146
+ - Time travel with ◀ ▶ navigation
229
147
 
230
- Simulates slow network conditions on the device:
148
+ ## Themes
231
149
 
232
- | Profile | Behavior |
233
- |---|---|
234
- | No throttling | Normal speed |
235
- | Fast 3G | 500ms artificial delay on every request |
236
- | Slow 3G | 2000ms delay |
237
- | Offline | All requests immediately rejected |
150
+ 9 built-in themes: **Dark** (default), **Light**, **Monokai**, **Dracula**, **Solarized Dark**, **Solarized Light**, **Nord**, **GitHub Dark**, **One Dark**
238
151
 
239
- ### Dark / Light Mode
240
-
241
- Toggle via Settings tab or `Cmd+Shift+T`. Persists across restarts.
152
+ All 16 CSS variables change per theme — every element in the app updates including text, backgrounds, borders, syntax highlighting, badges, and graphs.
242
153
 
243
154
  ## Keyboard Shortcuts
244
155
 
245
156
  | Shortcut | Action |
246
157
  |---|---|
247
- | `Cmd+K` | Clear all panels |
248
- | `Cmd+D` | Open JS Debugger (CDP DevTools with breakpoints) |
158
+ | `Cmd+D` | Open JS Debugger (CDP DevTools) |
249
159
  | `Cmd+R` | Open React DevTools |
250
- | `Cmd+Shift+T` | Toggle Dark / Light mode |
251
- | `Cmd+C` | Copy selected text |
252
- | `Cmd+V` | Paste into filter/search |
253
- | `Cmd+A` | Select all |
160
+ | `Cmd+K` | Clear all panels |
161
+ | `Cmd+Shift+T` | Cycle through themes |
162
+ | `Cmd+C/V/A` | Copy / Paste / Select All |
254
163
 
255
164
  ## Ports
256
165
 
@@ -258,76 +167,58 @@ Toggle via Settings tab or `Cmd+Shift+T`. Persists across restarts.
258
167
  |---|---|
259
168
  | 9090 | Redux bridge |
260
169
  | 9091 | AsyncStorage bridge |
261
- | 9092 | Console + Network + Performance bridge |
170
+ | 9092 | Console + Network + GA4 + Performance bridge |
262
171
  | 8097 | React DevTools relay |
263
172
  | 8081 | Metro bundler (CDP) |
264
173
 
265
- Change ports in both `main.js` and `RNDebugSDK.js` if conflicts arise.
266
-
267
- ## Android Setup
268
-
269
- For Android emulator, the setup command runs `adb reverse` automatically. For physical devices, ensure your Mac and device are on the same network and set the HOST in `src/debug/RNDebugSDK.js` to your Mac's LAN IP.
270
-
271
- ```bash
272
- # Manual adb reverse (if needed)
273
- adb reverse tcp:9090 tcp:9090
274
- adb reverse tcp:9091 tcp:9091
275
- adb reverse tcp:9092 tcp:9092
276
- adb reverse tcp:8097 tcp:8097
277
- ```
278
-
279
- ## Troubleshooting
280
-
281
- | Problem | Solution |
282
- |---|---|
283
- | App won't launch from VS Code terminal | Run: `unset ELECTRON_RUN_AS_NODE && npx rn-debugger` |
284
- | Device status shows "Waiting..." | Check HOST in `src/debug/RNDebugSDK.js`. iOS sim: `127.0.0.1`, Android emu: `10.0.2.2` |
285
- | Network tab empty | Run Metro with `--reset-cache`. Ensure Reactotron has `networking: false` |
286
- | `XHRInterceptor.js does not exist` | Set `networking: false` in ReactotronConfig.js |
287
- | Metro crashes with WebSocket error | Update to latest version — CDP polling was replaced with on-demand fetching |
288
- | Console shows `apply (native)` as caller | Update SDK with `npx reactoradar setup` |
289
-
290
-
291
- ## How it works
174
+ ## Architecture
292
175
 
293
176
  ```
294
177
  ┌─────────────────────────────────────────────────────┐
295
- macOS Electron App
178
+ ReactoRadar (Electron)
296
179
  │ │
297
- │ Console │ Network │ PerfMemory
298
- ReduxApp (AsyncStorage) │ React │ Settings
180
+ │ Console │ Network │ ReduxGA4 App │
181
+ MemoryPerf │ React │ Settings
299
182
  │ │
300
183
  │ main.js │
301
- │ ├─ WS Server :9092 ← console + network + perf
302
- │ ├─ WS Server :9090 ← redux actions + state
303
- │ ├─ WS Server :9091 ← asyncstorage mutations
304
- │ ├─ WS Relay :8097 ← react-devtools bridge
305
- │ └─ HTTP :8081 → Metro CDP (on-demand)
184
+ │ ├─ WS :9092 ← console + network + ga4 + perf
185
+ │ ├─ WS :9090 ← redux actions + state
186
+ │ ├─ WS :9091 ← asyncstorage
187
+ │ ├─ WS :8097 ← react-devtools relay
188
+ │ └─ HTTP :8081 → Metro CDP (on-demand)
306
189
  └──────────────────────┬──────────────────────────────┘
307
190
  │ WebSocket
308
191
  ┌──────────────────────┴──────────────────────────────┐
309
- Your React Native App
192
+ Your React Native App
310
193
  │ │
311
- │ RNDebugSDK.js (loaded in __DEV__ only)
194
+ │ RNDebugSDK.js (__DEV__ only)
312
195
  │ ├─ console.* interceptor │
313
- │ ├─ XHR constructor wrapper (catches axios + fetch)│
196
+ │ ├─ XHR constructor wrapper (axios + fetch)
197
+ │ ├─ Firebase Analytics prototype interceptor │
314
198
  │ ├─ FPS + memory metrics │
315
- │ ├─ Network throttle support │
316
199
  │ ├─ Redux middleware │
317
200
  │ └─ AsyncStorage watcher │
318
201
  └─────────────────────────────────────────────────────┘
319
202
  ```
320
203
 
321
- ## Credits
204
+ ## Troubleshooting
205
+
206
+ | Problem | Solution |
207
+ |---|---|
208
+ | App won't launch from VS Code terminal | `unset ELECTRON_RUN_AS_NODE && npx reactoradar` |
209
+ | "Waiting for device" | Restart Metro: `npx react-native start --reset-cache` |
210
+ | Network tab empty | Run Metro with `--reset-cache` |
211
+ | `XHRInterceptor.js` warning | Set `networking: false` in ReactotronConfig.js |
212
+ | GA4 events not showing | Restart Metro with `--reset-cache` after setup |
213
+ | Port conflict | Change ports in `main.js` and `RNDebugSDK.js` |
214
+
215
+ ## Privacy
322
216
 
323
- - [Electron](https://www.electronjs.org/) — Desktop app framework
324
- - [React DevTools](https://github.com/facebook/react/tree/main/packages/react-devtools) — React component inspector
325
- - [Redux DevTools](https://github.com/reduxjs/redux-devtools) — Inspiration for Redux time travel
326
- - [React Native Debugger](https://github.com/jhen0409/react-native-debugger) — The original that inspired this project
217
+ ReactoRadar runs entirely on your local machine. No data collection, no analytics, no telemetry. See [PRIVACY.md](./PRIVACY.md).
327
218
 
328
219
  ## Contributing
329
220
 
330
- Contributions are welcome! Whether it's bug fixes, new features, documentation improvements, or UI enhancements — all PRs are appreciated.
221
+ Contributions welcome! Fork branch PR.
331
222
 
332
223
  ```bash
333
224
  git clone https://github.com/sharanagouda/react-native-debugger.git
@@ -336,30 +227,19 @@ npm install
336
227
  npm start
337
228
  ```
338
229
 
339
- ### How to contribute
340
-
341
- 1. Fork the repository
342
- 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
343
- 3. Commit your changes (`git commit -m 'feat: add amazing feature'`)
344
- 4. Push to the branch (`git push origin feature/amazing-feature`)
345
- 5. Open a Pull Request
346
-
347
230
  ### Ideas for contribution
348
-
349
- - Windows/Linux support
231
+ - Windows / Linux support
350
232
  - Source file browser with breakpoints
351
- - React Native New Architecture profiling
352
- - Flipper plugin compatibility layer
233
+ - Flipper plugin compatibility
353
234
  - Custom themes
354
- - Keyboard shortcut customization
355
-
356
- See [STATUS.md](./STATUS.md) for detailed technical documentation and architecture overview.
357
-
358
- ## Privacy
235
+ - React Native New Architecture profiling
359
236
 
360
- RN Debugger runs entirely on your local machine. It does not collect, transmit, or store any personal data. No analytics, no telemetry, no tracking. All debugging data stays on `localhost`.
237
+ ## Credits
361
238
 
362
- See [PRIVACY.md](./PRIVACY.md) for the full privacy policy.
239
+ - [Electron](https://www.electronjs.org/)
240
+ - [React DevTools](https://github.com/facebook/react/tree/main/packages/react-devtools)
241
+ - [Redux DevTools](https://github.com/reduxjs/redux-devtools)
242
+ - [React Native Debugger](https://github.com/jhen0409/react-native-debugger) — the original inspiration
363
243
 
364
244
  ## License
365
245