Skip to content

Add @axonpack/expo-devtools to Debugging - #1247

Open
abappi19 wants to merge 1 commit into
jondot:masterfrom
abappi19:add-axonpack-expo-devtools
Open

Add @axonpack/expo-devtools to Debugging#1247
abappi19 wants to merge 1 commit into
jondot:masterfrom
abappi19:add-axonpack-expo-devtools

Conversation

@abappi19

Copy link
Copy Markdown

Adds @axonpack/expo-devtools under Development Tools → Debugging.

- [@axonpack/expo-devtools](https://github.com/axonpack/axonpack/tree/main/packages/@axonpack/expo-devtools) - On-device devtools panel for Expo apps: network, console, storage, performance, and crash tabs.

What it is

Browser-style devtools that run inside the app itself — no desktop debugger, no cable, nothing to attach. A floating button opens a panel with six tabs:

  • Network — every fetch, XMLHttpRequest and in-app WebView request, with full bodies, a resend sandbox, throttling, and copy-as-cURL/fetch
  • Console — captured logs with an explorable JSON tree, level filters, and a prompt that evaluates in the app's own context
  • Performance — frame rate, JS heap, startup timing, long tasks and slow interactions
  • Storage — browse, search, edit, add, import and export keys from any store you register (AsyncStorage, MMKV, SecureStore, or a custom adapter)
  • Crashes — fatal and non-fatal JS errors, unhandled rejections, React render errors and uncaught native exceptions, with symbolicated stacks and breadcrumbs
  • Debug — block or crash a chosen thread on purpose

Why it's worth a slot next to Reactotron and Buoy

The differentiator is that it is safe to leave in a production build. Nothing is patched and nothing is recorded until init() is called, so guarding that one call makes the whole package inert — you ship it once and turn it on per environment, rather than maintaining a dev-only dependency. Reactotron needs a desktop app and a connection; this needs neither.

It also registers storage rather than discovering it — the consumer passes in its own adapters, so the library depends on no storage package and forces none on anyone. There is exactly one small native module (Expo Modules API, Swift + Kotlin), used only to block the main thread and read the real process start time; everything else is TypeScript, and it degrades gracefully in Expo Go where that module is absent. No config plugin, no app.json changes.

Guidelines

  • Actively maintained — released 2.5.0 this month, iOS + Android, MIT.
  • Current React Native — built against RN 0.86 / Expo SDK 57.
  • Disclosure: this is my own project. On the adoption bar it is early — roughly 2k npm downloads a month and about five weeks old — so I am putting it forward on the novelty side, and I completely understand if you would rather it come back with more traction behind it.
  • Docs: https://axonpack.github.io/docs/expo-devtools

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant