Network, state and navigation
Read the app's network requests, state and navigation through app_data and the window's panels, with secrets removed.
The agent reads these three through one tool, app_data. You see the same data in the Device panel's Network, State and Navigation tabs.
app_data { source: "network" } // the list
app_data { source: "network", id: "..." } // one request; body: true adds the response body
app_data { source: "state", filter: "cart" } // stores and queries
app_data { source: "state", id: "#12" } // the state of a component id from app_tree
app_data { source: "nav" } // the navigation state and its historyOther arguments: filter, path (into a value), limit (default 30, at most 100) and since (the next: cursor of a previous answer, for example s57). Answers are clipped to a fixed size.
Network
With the SDK started, requests are captured in the app, with secrets removed before an entry leaves the app. Without the SDK, requests are read through the debugger while the Parallax window is open on React Native 0.86 or later. On Expo the debugger reports no request, so app_data says the source is silent: add the SDK.
State
Register a store in development, where it is created:
if (__DEV__) {
const { registerStore, registerQueryClient } = require('@parallax-rn/sdk');
registerStore('main', store); // Redux, Zustand, or anything with getState() and subscribe()
registerStore('main', store, { actions: true }); // Redux: also record the last action type
registerQueryClient('main', queryClient); // TanStack Query
}Each becomes a source: state:<name> for stores, query:<name> for query clients. An entry is a masked, size-bounded snapshot, at most one per interval, and none when nothing changed. Each register... call returns a function that unregisters it. { actions: true } wraps the Redux store's dispatch, so it is off by default.
The SDK reads the store only while it is started, and never in a release build. Nothing it does throws into your app.
Navigation
Parallax reads a React Navigation or Expo Router container without code when it finds one. If it does not, register the container ref:
if (__DEV__) {
const { registerNavigation } = require('@parallax-rn/sdk');
registerNavigation(navigationRef); // createNavigationContainerRef(), or Expo Router's useNavigationContainerRef()
}The agent reads the focused route and its history. Route params are scrubbed and bounded in depth and length.
Redaction
- Network: in the app, before anything is stored: secret headers (authorization, cookies, API keys), user info in URLs, secret query parameters, values and path segments shaped like credentials (JWTs, long hex or mixed strings), and secret keys inside JSON bodies. Long runs of credential-like characters in other text are cut.
- State and props: values under keys named like a secret (password, token, otp, pin and similar) and secure text fields are replaced by a redaction marker.
- The core scrubs again on every path to an agent. The window's Copy as cURL and Attach to message do the same.
A guard, not a promise
Redaction works by names and shapes. It cannot know that an ordinary-looking field is secret. Everything that is not redacted goes to your agent's model provider. See Privacy.
If a source is missing, the error names the exact call to add, for example registerStore('main', store). See Troubleshooting.