reactoradar 1.5.9 → 1.6.0

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
@@ -15,6 +15,10 @@
15
15
  <img src="https://img.shields.io/npm/v/reactoradar" alt="npm version" />
16
16
  </p>
17
17
 
18
+ <p align="center">
19
+ <a href="https://razorpay.me/@reactoradar"><img src="https://img.shields.io/badge/Support-%E2%98%95%20Buy%20me%20a%20coffee-ff813f" alt="Support this project" /></a>
20
+ </p>
21
+
18
22
  ---
19
23
 
20
24
  > 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.
@@ -26,28 +30,48 @@
26
30
  <img src="https://raw.githubusercontent.com/sharanagouda/react-native-debugger/main/screenshots/consoleLogs.png" alt="Console Panel" width="800" />
27
31
  </p>
28
32
 
29
- *Collapsible object trees, multi-select level filters (Log/Info/Warn/Error/Debug), search, right-click to copy*
33
+ *Collapsible object trees, multi-select level filters, log grouping, search, export as JSON, right-click to copy*
30
34
 
31
35
  ### Network — Chrome DevTools-style Inspector
32
36
  <p align="center">
33
37
  <img src="https://raw.githubusercontent.com/sharanagouda/react-native-debugger/main/screenshots/networkLogs.png" alt="Network Panel" width="800" />
34
38
  </p>
35
39
 
36
- *Resizable/sortable columns, request/response detail with collapsible trees, Copy as cURL, throttling*
40
+ *Resizable/sortable columns, slow API highlights, export as HAR, stats bar, hide unwanted URLs, throttling*
37
41
 
38
42
  ## Features
39
43
 
40
44
  | Tab | What it does |
41
45
  |---|---|
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
+ | **Console** | Log viewer with collapsible trees, level filters, log grouping (repeated messages), search, export as JSON |
47
+ | **Network** | Chrome DevTools-style inspector — resizable/sortable columns, slow API highlighting (>1s orange, >3s red), status filters (All/2xx/Errors/Slow), export as HAR, hide unwanted URLs, stats bar, throttling, Copy as cURL |
48
+ | **Redux** | Action list with category color coding, click to expand payload + two-column store diff (Previous \| Current) with changed keys highlighted, time travel |
49
+ | **GA4 Events** | Firebase Analytics inspector — intercepts ALL `log*` and `set*` methods, event list with detail pane, summary chips |
46
50
  | **App** | AsyncStorage live key/value browser with search |
47
51
  | **Memory** | JS Heap Used/Total, Native Memory from Hermes runtime |
48
52
  | **Performance** | Live FPS meter, JS Thread timing, UI Thread timing with sparkline graphs |
49
53
  | **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 |
54
+ | **Settings** | 9 color themes, font family/size, configurable panel visibility with drag-to-reorder, Metro port config, keyboard shortcuts, auto-update, support link |
55
+
56
+ ### What's New in v1.6.0
57
+
58
+ - **Auto-Update** — `.dmg` builds auto-download updates from GitHub Releases. Settings shows "Restart & Update" when ready.
59
+ - **Keyboard Shortcuts** — `Cmd+1–9` switch panels, `Cmd+K` clear, `Cmd+S` screenshot, `Cmd+F` find
60
+ - **Toast Notifications** — Non-intrusive alerts for console errors, API errors (4xx/5xx), and slow APIs (>3s) when you're on a different tab. Duplicate toasts are grouped with count.
61
+ - **Console Log Grouping** — Repeated identical consecutive messages show a count badge instead of duplicates
62
+ - **Export** — Console logs as JSON, Network requests as HAR 1.2 (importable into Chrome DevTools, Charles, etc.)
63
+ - **Network Stats Bar** — `47 requests | Avg: 320ms | Slowest: 4.2s (products) | Errors: 2 | Slow: 5`
64
+ - **Slow API Highlights** — Rows >1s turn orange, >3s turn red (background, path, time column)
65
+ - **Status Filters** — All / 2xx / Errors / Slow (>1s) filter buttons
66
+ - **Hide URLs** — Right-click any request → "Hide this URL". Manage hidden URLs with the "Hidden (N)" dropdown.
67
+ - **Redux Category Colors** — Action types like `ANALYTICS/TRACK_EVENT` show category prefix in a unique color
68
+ - **Two-Column Redux Diff** — Store changes show Previous and Current state side-by-side, trees collapsed by default, changed keys highlighted
69
+ - **Panel Visibility** — Settings > Panels: show/hide tabs and drag to reorder. Disabled tabs stop processing data to save memory.
70
+ - **Font Family** — Choose from SF Mono, Menlo, Monaco, Courier New, System Mono
71
+ - **Screenshot** — Camera button in titlebar or `Cmd+S` — saves PNG to Downloads
72
+ - **Memory Safeguards** — Auto-caps console (5K logs), network (1K requests), Redux (500 states). Warning banner at 70% heap usage.
73
+ - **Real Device Support** — iOS real device auto-detects LAN IP. Android uses adb reverse.
74
+ - **Debugger Detection** — SDK auto-pauses when Chrome DevTools or Hermes Inspector attaches, resumes on disconnect
51
75
 
52
76
  ## Installation
53
77
 
@@ -66,7 +90,7 @@ npx reactoradar # Launch the debugger
66
90
  3. Install the SDK: `npx reactoradar setup` from your RN project
67
91
  4. Open ReactoRadar from Applications
68
92
 
69
- > **macOS Gatekeeper**: First launch right-click → Open → Open. Or: `xattr -cr "/Applications/ReactoRadar.app"`
93
+ > **macOS Gatekeeper**: First launch right-click → Open → Open. Or: `xattr -cr "/Applications/ReactoRadar.app"`
70
94
 
71
95
  ### Option C: Global install
72
96
 
@@ -101,6 +125,17 @@ npx react-native start --reset-cache
101
125
 
102
126
  Console, Network, Redux, GA4, AsyncStorage data flows automatically. No config needed.
103
127
 
128
+ ### Real Device Setup
129
+
130
+ | Device | HOST | How it connects |
131
+ |--------|------|-----------------|
132
+ | iOS Simulator | `127.0.0.1` | Shares Mac's network (auto-detected) |
133
+ | Android Emulator | `10.0.2.2` | Special host alias (auto-detected) |
134
+ | Android real device (USB) | `10.0.2.2` | `adb reverse` tunnels over USB (auto-configured) |
135
+ | iOS real device (USB/WiFi) | Mac's LAN IP | Auto-detected. Device must be on same WiFi as Mac. |
136
+
137
+ `npx reactoradar setup` auto-detects your platform and sets the correct HOST.
138
+
104
139
  ### Uninstall
105
140
 
106
141
  ```bash
@@ -111,7 +146,7 @@ npx reactoradar remove
111
146
 
112
147
  | ReactoRadar | React Native | Engine | Architecture |
113
148
  |---|---|---|---|
114
- | v1.3+ | 0.74 — 0.81+ | Hermes | Old & New Architecture |
149
+ | v1.6+ | 0.74 — 0.81+ | Hermes | Old & New Architecture |
115
150
 
116
151
  ## Network Inspector
117
152
 
@@ -120,30 +155,35 @@ npx reactoradar remove
120
155
  | **Columns** | Name, Status, Type, Initiator, Size, Time, Waterfall — resizable and sortable |
121
156
  | **Search** | Filter by URL in real time |
122
157
  | **Type filters** | All, Fetch/XHR, JS, CSS, Img, Media, Font, Doc, WS |
158
+ | **Status filters** | All, 2xx, Errors, Slow (>1s) |
159
+ | **Slow API highlights** | >1s orange background + bold time, >3s red |
160
+ | **Stats bar** | Total requests, Avg duration, Slowest endpoint, Error count, Slow count |
161
+ | **Hide URLs** | Right-click → Hide this URL. Manage via "Hidden (N)" dropdown. Persists across sessions. |
162
+ | **Export** | Export as HAR 1.2 — importable into Chrome DevTools, Charles Proxy |
123
163
  | **Throttling** | No throttling, Fast 3G (500ms), Slow 3G (2s), Offline |
124
164
  | **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) |
165
+ | **Copy as cURL** | Right-click → Copy as cURL / Copy URL / Copy Response / Hide this URL |
127
166
  | **Capture toggle** | ON/OFF switch to pause network capture |
128
167
 
129
168
  ## GA4 Event Inspector
130
169
 
131
170
  | Feature | Details |
132
171
  |---|---|
133
- | **Auto-intercept** | Patches ALL `log*` and `set*` methods on Firebase Analytics prototype — no hardcoded list, catches current + future methods |
172
+ | **Auto-intercept** | Patches ALL `log*` and `set*` methods on Firebase Analytics prototype |
134
173
  | **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 |
174
+ | **Detail pane** | All parameters as key-value list with word-wrapped long values |
175
+ | **Summary chips** | Click any chip to filter by event type |
139
176
 
140
177
  ## Redux DevTools
141
178
 
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)
179
+ - Action list with category color coding (e.g., `ANALYTICS/` in blue, `CART/` in green)
180
+ - Click to expand, click again to collapse. Close button on expanded detail.
181
+ - **Two-column store diff**: Previous (red) and Current (green) side-by-side with changed keys highlighted
182
+ - Trees collapsed by default user expands what they need
183
+ - Right-click to copy action type or payload
184
+ - Deep equality comparison (no false positives)
146
185
  - Time travel with ◀ ▶ navigation
186
+ - Memory capped at 500 action/state pairs
147
187
 
148
188
  ### Redux Setup
149
189
 
@@ -169,21 +209,35 @@ import { reduxEnhancer } from '../debug/RNDebugSDK';
169
209
  const store = createStore(reducer, __DEV__ ? reduxEnhancer : undefined);
170
210
  ```
171
211
 
172
- > **Note:** The import path is relative from your store file to `src/debug/RNDebugSDK`. Adjust if your store is in a different directory. Run `npx reactoradar setup` to auto-detect the correct path.
212
+ > **Note:** The import path is relative from your store file to `src/debug/RNDebugSDK`. Run `npx reactoradar setup` to auto-detect the correct path.
213
+
214
+ ## Settings
173
215
 
174
- ## Themes
216
+ ### Appearance
217
+ - **9 Themes**: Dark, Light, Monokai, Dracula, Solarized Dark/Light, Nord, GitHub Dark, One Dark
218
+ - **Font Family**: SF Mono, Menlo, Monaco, Courier New, System Mono
219
+ - **Font Size**: Adjustable with A-/A+ buttons
220
+ - **App Name**: Customizable titlebar text
175
221
 
176
- 9 built-in themes: **Dark** (default), **Light**, **Monokai**, **Dracula**, **Solarized Dark**, **Solarized Light**, **Nord**, **GitHub Dark**, **One Dark**
222
+ ### Panel Management
223
+ - **Show/Hide Tabs**: Toggle visibility of any tab (Console and Network are required)
224
+ - **Drag to Reorder**: Drag tabs to change sidebar order
225
+ - **Memory Saving**: Disabled tabs stop processing data entirely
177
226
 
178
- All 16 CSS variables change per theme — every element in the app updates including text, backgrounds, borders, syntax highlighting, badges, and graphs.
227
+ ### Connection
228
+ - **Metro Port**: Configurable (default 8081) for multi-bundler setups
229
+ - **Bridge Ports**: Redux :9090, Storage :9091, Network :9092
179
230
 
180
231
  ## Keyboard Shortcuts
181
232
 
182
233
  | Shortcut | Action |
183
234
  |---|---|
235
+ | `Cmd+1–9` | Switch panels (follows custom order) |
236
+ | `Cmd+K` | Clear active panel |
237
+ | `Cmd+S` | Screenshot (saves to Downloads) |
238
+ | `Cmd+F` | Find/Search in active panel |
184
239
  | `Cmd+D` | Open JS Debugger (CDP DevTools) |
185
240
  | `Cmd+R` | Open React DevTools |
186
- | `Cmd+K` | Clear all panels |
187
241
  | `Cmd+Shift+T` | Cycle through themes |
188
242
  | `Cmd+C/V/A` | Copy / Paste / Select All |
189
243
 
@@ -195,7 +249,7 @@ All 16 CSS variables change per theme — every element in the app updates inclu
195
249
  | 9091 | AsyncStorage bridge |
196
250
  | 9092 | Console + Network + GA4 + Performance bridge |
197
251
  | 8097 | React DevTools relay |
198
- | 8081 | Metro bundler (CDP) |
252
+ | 8081 | Metro bundler (CDP) — configurable in Settings |
199
253
 
200
254
  ## Architecture
201
255
 
@@ -212,6 +266,8 @@ All 16 CSS variables change per theme — every element in the app updates inclu
212
266
  │ ├─ WS :9091 ← asyncstorage │
213
267
  │ ├─ WS :8097 ← react-devtools relay │
214
268
  │ └─ HTTP :8081 → Metro CDP (on-demand) │
269
+ │ │
270
+ │ Auto-update via electron-updater (GitHub Releases) │
215
271
  └──────────────────────┬──────────────────────────────┘
216
272
  │ WebSocket
217
273
  ┌──────────────────────┴──────────────────────────────┐
@@ -222,8 +278,9 @@ All 16 CSS variables change per theme — every element in the app updates inclu
222
278
  │ ├─ XHR constructor wrapper (axios + fetch) │
223
279
  │ ├─ Firebase Analytics prototype interceptor │
224
280
  │ ├─ FPS + memory metrics │
225
- │ ├─ Redux middleware
226
- └─ AsyncStorage watcher │
281
+ │ ├─ Redux middleware / enhancer
282
+ ├─ AsyncStorage watcher │
283
+ │ └─ Debugger detection (auto-pause on CDP attach) │
227
284
  └─────────────────────────────────────────────────────┘
228
285
  ```
229
286
 
@@ -234,14 +291,24 @@ All 16 CSS variables change per theme — every element in the app updates inclu
234
291
  | App won't launch from VS Code terminal | `unset ELECTRON_RUN_AS_NODE && npx reactoradar` |
235
292
  | "Waiting for device" | Restart Metro: `npx react-native start --reset-cache` |
236
293
  | Network tab empty | Run Metro with `--reset-cache` |
294
+ | Blank screen after long use | Click "Clear All Data" on the memory warning banner, or restart the app |
295
+ | Redux shows "No actions dispatched" | Verify `reduxMiddleware` is wired in your store. Run `npx reactoradar setup` to auto-detect. |
296
+ | Real device not connecting | Ensure HOST in `src/debug/RNDebugSDK.js` matches your Mac's LAN IP. Re-run `npx reactoradar setup`. |
237
297
  | `XHRInterceptor.js` warning | Set `networking: false` in ReactotronConfig.js |
238
298
  | GA4 events not showing | Restart Metro with `--reset-cache` after setup |
239
- | Port conflict | Change ports in `main.js` and `RNDebugSDK.js` |
299
+ | Port conflict | Run `kill $(lsof -ti :9092)` to free the port, then restart |
300
+ | "ReactoRadar is already running" | Close the existing instance or kill the process |
240
301
 
241
302
  ## Privacy
242
303
 
243
304
  ReactoRadar runs entirely on your local machine. No data collection, no analytics, no telemetry. See [PRIVACY.md](./PRIVACY.md).
244
305
 
306
+ ## Support
307
+
308
+ If ReactoRadar helps your workflow, consider supporting development:
309
+
310
+ <a href="https://razorpay.me/@reactoradar"><img src="https://img.shields.io/badge/Support-%E2%98%95%20Buy%20me%20a%20coffee-ff813f?style=for-the-badge" alt="Support this project" /></a>
311
+
245
312
  ## Contributing
246
313
 
247
314
  Contributions welcome! Fork → branch → PR.
@@ -255,8 +322,9 @@ npm start
255
322
 
256
323
  ### Ideas for contribution
257
324
  - Windows / Linux support
258
- - Source file browser with breakpoints
259
- - Flipper plugin compatibility
325
+ - WebSocket message inspector
326
+ - Network request comparison (diff two requests)
327
+ - Session recording & replay
260
328
  - Custom themes
261
329
  - React Native New Architecture profiling
262
330
 
@@ -267,6 +335,10 @@ npm start
267
335
  - [Redux DevTools](https://github.com/reduxjs/redux-devtools)
268
336
  - [React Native Debugger](https://github.com/jhen0409/react-native-debugger) — the original inspiration
269
337
 
338
+ ## Author
339
+
340
+ **Sharanagouda M K** — [LinkedIn](https://www.linkedin.com/in/sharanagoudamk/) · [GitHub](https://github.com/sharanagouda)
341
+
270
342
  ## License
271
343
 
272
344
  [MIT](./LICENSE)