Versions
What changed in every release. Newest at the top.
- Released June 25, 2026
The State Inspector grows a history — scrub back through every store's past values on a timestamped timeline, like a commit log.
AddedState history timeline
Each store now keeps a de-duplicated history of its snapshots, shown as a timestamped timeline on the right of the State tab — like a commit log. Click any entry to view that past value in the tree, then "Back to live" to return to the latest. No-op snapshots (e.g. the re-announce on reconnect) are skipped so the timeline only records real changes.
FixedStores no longer duplicate in the State list
Store ids are now derived from the store name, so a re-attach (Fast Refresh, remount or reconnect) overwrites the existing entry instead of showing it twice. Requires agent rexpo-debugger ≥ 1.3.0.
v1.5.0
View on GitHub ↗Released June 23, 2026See your app state live — a new State Inspector for Redux, Zustand and any custom store, plus clean one-click copying of console logs.
AddedState Inspector — Redux, Zustand & more
A new State tab streams your state-management stores from the app to the desktop in real time, rendered as a searchable, collapsible JSON tree. Wire it with initStateAgent() then attachZustandStore(useStore) / attachReduxStore(store), or the generic attachStore({ getState, subscribe }) for Valtio, MobX, Jotai, XState, Effector and others. Functions, Maps/Sets, Dates and circular references are handled safely. View-only for now — write-back is on the roadmap.
Clean copy for console logs
Selecting and copying console text used to drag in layout artifacts. Console logs now have explicit copy buttons — a "Copy message" in the detail header, per-section copy (Message / Stack / Raw JSON), and a hover button on each row — that copy plain text built from the data, not the DOM.
v1.4.0
View on GitHub ↗Released June 18, 2026Two ways to fill your collections faster: import any request from a cURL command, and drag & drop saved requests between collections.
AddedImport from cURL
New ⤓ cURL button in the Collections header. Paste a curl command — from browser devtools "Copy as cURL", an API doc, anywhere — and the method, URL, headers and body are parsed automatically, with a live preview before you save. Understands -X, -H, -d/--data-raw, --url, -u (Basic auth), -G, cookies and user-agent, plus quoted and multi-line commands.
Drag & drop between collections
Reorganize without dialogs: grab any saved request and drop it onto another collection — empty ones and Uncategorized included. The target highlights as you drag.
v1.3.0
View on GitHub ↗Released June 17, 2026Collections grew up — first-class collections that persist on their own, plus save & overwrite when editing a request.
AddedFirst-class, persistent collections
Collections are now real entities, not just a label derived from saved requests. Create an empty collection from the panel (+ New), rename or delete it from the right-click menu. Removing or moving the last request out of a collection no longer makes it silently disappear — it stays until you delete it.
Save while editing — overwrite or save as new
Edit & Replay used to only fire a one-off request. It now sits next to Send: Save changes overwrites the saved request with your edits, and Save as new… keeps the original and stores the tweaked version as a new entry.
v1.2.1
View on GitHub ↗Released May 20, 2026Patch release fixing an Expo prebuild crash on Android.
FixedExpo config plugin crashed prebuild on Android
withRexpoAndroid assigned the return value of AndroidConfig.Permissions.ensurePermissions to cfg.modResults. That helper mutates the manifest in place and returns a permission map — not the manifest. The overwrite turned cfg.modResults into a boolean map, so every subsequent android.manifest mod crashed with: "Cannot read properties of undefined (reading 'hasOwnProperty')". Fix: discard the return value; the in-place mutation is what we want.
v1.2.0
View on GitHub ↗Released May 19, 2026Zero-friction connection, Settings, Collections, and a big network workflow upgrade.
AddedCollections — saved requests
A new third tab. Save any captured request to a named collection and replay it whenever — without keeping the original traffic in the panel. Right-click → Save to collection… (all fields optional: name, collection, tags, description). Right-click saved requests for Replay, Edit & Replay, Rename, Move, Copy as cURL, Delete. Persisted in localStorage.
Agent auto-reconnect with exponential backoff
The agent now reconnects on its own — no app reload required. Triggered by port live-restarts, desktop closed/reopened, Wi-Fi blips, VPN toggles. Backoff: 1s → 2s → 4s → 8s → 10s cap. In auto-discovery mode each retry re-runs mDNS discovery so the agent picks up a re-published service.
Edit & Replay editor
Triggered from the network row context menu. Tweak method, URL, query params (add/remove/disable individually), headers (sensitive ones masked with reveal toggle), and JSON body before re-sending. Live "Final URL" preview. Send button disables itself when the body is structurally invalid.
Network context menu
Right-click any network row for: Copy URL, Copy as cURL, Copy as JSON, Replay, Edit & Replay, Save response to file, Delete request, Clear all requests. Toast feedback after copy actions. Reusable ContextMenu component with viewport-aware positioning.
Zero-config auto-discovery (mDNS / Bonjour)
Desktop publishes itself as _rexpo._tcp on the local network. initNetworkAgent({}) / initConsoleAgent({}) work without a wsUrl. Expo config plugin auto-injects iOS NSLocalNetworkUsageDescription + NSBonjourServices and Android CHANGE_WIFI_MULTICAST_STATE / ACCESS_WIFI_STATE. Production-safe: plugin no-ops when EAS_BUILD_PROFILE === "production".
Full light theme + system theme
Every component reads colors from a semantic token system in renderer/theme.css. Three modes: Dark (VS Code Dark+), Light (VS Code Light+), System (follows prefers-color-scheme, live updates). Theme applied synchronously before React mounts — no FOUC.
Network port live-restart
Change the port in Settings + Apply → WS server switches without an Electron restart. Safety: new port is bound first; if it's in use, old server keeps running and the error surfaces inline. mDNS publisher re-publishes on the new port automatically.
Settings panel + persistence
Settings modal from the header gear button. localStorage persistence. Max history limits (FIFO trim), default log level, manual host:port override, mDNS toggle, per-agent enable/disable, auto-clear on agent reconnect, theme. Reset to defaults button.
Connection chip in the desktop header
Shows detected local IP(s) with a copy button, live status dot, and connected-client badge. Dropdown to pick a specific interface (Wi-Fi + Ethernet, VPN). Selection persists across restarts.
ChangedInitOptions.wsUrl is now optional
Backwards compatible — passing a wsUrl still works exactly like before. New discoveryTimeoutMs option (default 10s) controls how long the agent waits for mDNS before giving up.
DocsREADME rewritten around auto-discovery
README + agent README lead with auto-discovery mode. New troubleshooting section for discovery-specific issues (corporate Wi-Fi, VPN, Expo Go limitations).
v1.0.0
View on GitHub ↗Released November 14, 2025Initial release.
AddedElectron desktop inspector
Modern UI with React + TypeScript. Chrome DevTools-like layout: left panel for the request list, right panel for details (Overview, Headers, Request, Response, Timing).
Network monitoring (fetch)
Captures all fetch requests in real time over a WebSocket on port 5051. Pretty-printed JSON bodies. Color-coded status badges (2xx green, 3xx yellow, 4xx orange, 5xx red).
Advanced filtering
Search by URL, method filter (GET/POST/PUT/DELETE/PATCH), status code filter (2xx, 3xx, 4xx, 5xx, ERR). Pause/Resume capture. Clear all.
Expo agent
Lightweight, easy-to-integrate client agent with wsUrl, enabled, maxBodyLength configuration. Dark theme inspired by VS Code Dark+.