Skip to main content
Expo DevTools provide a comprehensive suite of development utilities accessible through the developer menu, CLI, and DevTools plugins.

Developer Menu

The developer menu is the central hub for accessing debugging tools in your development build.

Opening the Dev Menu

PlatformPhysical DeviceSimulator/Emulator
iOSShake deviceCmd+D
AndroidShake deviceCmd+M or Ctrl+M

Dev Menu Options

When you open the dev menu, you’ll see:

Reload

Reloads your JavaScript bundle:

Debug with Chrome

Opens Chrome DevTools for JavaScript debugging. See Debugging guide for details.

Show Element Inspector

Visually inspect UI elements. See Inspector guide for details.

Show Performance Monitor

Displays real-time performance metrics:
  • JavaScript FPS
  • UI FPS
  • Memory usage
  • Views count

Toggle Network Inspector

Monitors network requests:

DevTools Plugins

Create custom DevTools panels using the @expo/devtools package.

Creating a DevTools Plugin

1

Install dependencies

2

Create plugin client (app side)

app/plugins/MyDevToolsPlugin.tsx
3

Use in your app

app/_layout.tsx
4

Create plugin UI (web side)

devtools-plugin/index.tsx
5

Register plugin

package.json

DevTools Plugin API

Client-Side Hooks

Message Types

Example: Redux DevTools Plugin

app/plugins/ReduxDevTools.tsx

CLI DevTools

Interactive debugging from the terminal.

Starting DevTools

Terminal Interface

When running, the CLI shows:

CLI Commands

KeyAction
jOpen JavaScript debugger
rReload app
mToggle developer menu
aOpen on Android device/emulator
iOpen on iOS simulator
wOpen in web browser
cClear Metro bundler cache
?Show all commands

Settings and Configuration

Development Settings

Access via dev menu > Settings:

Customizing Dev Menu

Add custom actions to the dev menu:
app/_layout.tsx

Advanced Features

WebSocket Connection

DevTools use WebSocket for real-time communication:

Message Queuing

Messages are queued when disconnected:

Binary Data Support

Send binary data like images:

Environment-Specific Configuration

Development Only

Production Stripping

DevTools code is automatically stripped in production:

Troubleshooting

Dev Menu Not Opening

DevTools Plugin Not Connecting

Performance Issues with DevTools

DevTools can slow down the app:

Network Inspector Not Showing Requests

Ensure fetch is being used:

Best Practices

1. Guard DevTools Code

2. Minimize Data Size

3. Use Descriptive Message Types

4. Handle Disconnections

Next Steps

Inspector

Use the element inspector

Debugging

Learn debugging techniques

Error Handling

Handle errors and crashes

Network Debugging

Debug network requests