You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
0.3.0 — 2026-09-29
Added
Request and response bodies in the network log, with the panel showing
them formatted and a cURL you can copy. Controlled by the new network
prop on InspectorRoot: { captureBodies, maxBodyBytes, captureHeaders }.
Request and response headers, with Authorization, Cookie and the
like replaced by [redacted].
Frozen-frame detection. A gap of 700 ms or more between frames is
reported as an error on the timeline and costs the screen 20 points of its
quality score.
New Architecture support. The native module is now a TurboModule,
generated from a codegen spec, on both platforms. The legacy bridge keeps
working, so react-native >= 0.72 is still supported; the New Architecture
path needs 0.74 or newer.
Automatic tap capture in release builds. Production React never calls Profiler.onRender, which is what reported the commit a tap was waiting
for, so every auto-captured tap used to be dropped. Import the package at
the top of your entry file (import 'react-native-app-inspector'; in index.js) to get the exact measurement; otherwise a tap ends at the first
frame presented after its work. Per-component render statistics still need
the profiler and stay development-only.
Fixed
iOS request bodies are read before the upload starts. They were read after
completion, by which point the stream was consumed, so the body was
practically always empty.
Android native network capture works again on recent React Native. OkHttpClientProvider's private factory field was renamed when it was
rewritten in Kotlin, so the interceptor silently fell back to the JS patch.
Secrets are matched by exact key instead of substring. pin no longer
redacts shipping, and Access-Control-Allow-Credentials is left alone.
Secret query parameters are redacted in headers whose value is a URL
(Location, Content-Location, Referer). A server echoing the request
URL back leaked keys that had already been removed from the entry's url.
maxBodyBytes reaches the native interceptors instead of being capped at a
hardcoded 32 KB.
The panel no longer uses React Native's deprecated SafeAreaView. It pads
itself from the window insets reported by the native module, which also
fixes the header sitting under the status bar on Android with edge-to-edge.
A long value in a detail row — a request URL, say — wraps in the space left
over instead of overflowing across its label.
The FPS badge returns to its edge when the window is resized. After a
rotation it could end up off-screen, taking the only way into the panel
with it.
Internal
The example app runs React Native 0.87.1 with the New Architecture.
CI compiles the module against React Native 0.74, 0.76, 0.81 and 0.87, on
both architectures where the version still supports the legacy one.