Developer Menu
The developer menu is the central hub for accessing debugging tools in your development build.Opening the Dev Menu
| Platform | Physical Device | Simulator/Emulator |
|---|---|---|
| iOS | Shake device | Cmd+D |
| Android | Shake device | Cmd+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
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
| Key | Action |
|---|---|
j | Open JavaScript debugger |
r | Reload app |
m | Toggle developer menu |
a | Open on Android device/emulator |
i | Open on iOS simulator |
w | Open in web browser |
c | Clear 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