Documentation
Everything EmuLabZip does, one guide per feature: from your first launch to the command line and the MCP server for AI assistants.
Getting started
Install it, connect your first emulator or simulator, and fix the usual problems.
- Getting startedInstall EmuLabZip, connect your first Android emulator or iOS simulator and read your app's logs in a couple of minutes, in the desktop app or the CLI.
- AndroidHow EmuLabZip connects to Android emulators and USB or wireless devices with its built-in ADB client, what it collects and what each device state means.
- iOS SimulatorThe iOS Simulator is supported on macOS with Xcode installed. On Windows and Linux the iOS backend reports itself as unavailable and the rest of EmuLabZip…
- Devices: emulators and simulatorsCreate, start, stop, wipe and delete Android emulators and iOS simulators from EmuLabZip, and keep emulator snapshots, in the Devices view or the CLI.
- TroubleshootingFixes for the usual problems: a device that does not show up, a log that is too busy, apps that cannot be read, a proxy that does not decrypt HTTPS.
Inspect your app
Logs, layout, storage, crashes, readable stacks, frameworks and web views.
- LogsThe log viewer follows logcat on Android and the unified log on iOS in one table with the same columns: time, process id, level, tag and message.
- Layout and accessibilityLayout shows the views on the screen: a screenshot with a box around each view, the tree of views, and the properties of the one you pick. The same tree feeds…
- StorageThe Storage tool browses the files of the app selected in the toolbar and opens the common formats in place. Debug builds of your app are debuggable by…
- Changing an app's dataStorage is read-only until you turn on Edit. Editing changes the app's real files on the device, so it is built to be careful: every change asks first, stops…
- CrashesThe Crashes tool lists the crashes, native crashes and ANRs a device has recorded, and opens each one with its stack, the facts the device wrote down and what…
- Readable stacksA release build hides its names. R8 and ProGuard rename classes to a.b.c, React Native ships one JavaScript bundle where every position is 1:608617, and an…
- Inside the frameworksFlutter and React Native draw their own screen, and Jetpack Compose and SwiftUI draw theirs differently from the platform's views. The usual view tree says…
- React Native stateRead the live state of a React Native development app from EmuLabZip: Redux, React Query, React context and registered stores, in the app or the CLI.
- Web pages in appsHybrid apps show web pages in a WebView. EmuLabZip reads them the way Chrome's DevTools does: it lists the pages, shows their console, runs JavaScript in…
Performance
CPU, memory, leaks, traces, energy, start time and budgets.
- PerformanceThe Performance tool samples the selected app and the device while the tool is open, and draws the last two minutes as live charts. Pick the app in the…
- MemoryThe Memory tool shows where the selected app's memory goes and lets you compare two moments to see what grew. Click Take snapshot to record a breakdown:
- Finding leaks in heap dumpsEmuLabZip reads an Android .hprof itself and lists what keeps memory alive, with no other tool needed. The app has to be debuggable (or the device an…
- TracesThe Traces tool records what the system and an app did over a few seconds, then helps you find out why it was slow. It brings together three official tools…
- EnergyHow much energy an app uses over a stretch of time, while you use it. Start it, use the app, and it reads the result when the time is up, or when you press…
- App start timeHow long an app takes to open, measured the same way every time, repeated a few times so the median means something. The result lists every run and the…
- Budgets and baselinesSet limits for CPU, memory, start time, size and crashes in one config file, and make emulabzip ci fail a run when it costs more than the baseline.
Network
Capture, mock and change requests; GraphQL, gRPC, WebSockets, replay and analytics.
- NetworkThe Network tool is a debugging proxy built into EmuLabZip. It sits between your app and the internet, decrypts HTTPS with a certificate authority that lives…
- Mocks and breakpointsRules let you change what an app gets back without touching the server: answer a request yourself, make it slow, make it fail, or stop it and edit it by hand…
- Network rules: files, other servers and contractsMap requests to local files or other servers, check responses against an OpenAPI contract, run sandboxed WebAssembly scripts and chain rules in EmuLabZip.
- Rule scriptsA script is a small WebAssembly program that looks at a request or a response and decides what happens to it: add a header, hide a field, answer on its own…
- Network conditionsTest how an app copes with a slow, laggy, lossy or missing network. The proxy sits in the middle of everything the device sends, so it can shape the link.
- GraphQLIn Network, a GraphQL request is named after what it asks for, so a list of POST /graphql is readable. The response of a GraphQL call is JSON like any other…
- gRPC and protobufgRPC calls are shown in Network by the method they call, with the status the server answered. A gRPC body is a series of messages, each protobuf. The Request…
- WebSocket messagesThe Network tool reads WebSocket traffic as messages, not bytes. Open a WebSocket request and the Messages tab lists what went each way, with the time since…
- Importing a packet captureEmuLabZip can open a .pcap or .pcapng file and show what it holds the way it shows live traffic. It is useful when you cannot use the proxy: an app that…
- Replaying a recordingA replay answers the app's requests from a recording, so the servers are never asked. The app runs without the internet, against what a server said once. It…
- Analytics inspectorSee the events an app sends to Segment, Amplitude, Mixpanel and Firebase Analytics, decoded, as they happen, in a list of their own.
Quality
Security and privacy, build size, language and text size, visual regression.
- Security and privacy auditemulabzip audit security and the Audit view look for what an app should not leave lying around: secrets and personal data in the log, in preferences and in…
- Build sizeemulabzip size takes an APK, an AAB or an IPA apart and says where its bytes are, emulabzip size diff says what changed between two builds, and a size budget…
- Language, text size and text that does not fitText is where layouts break: a German word is longer, Arabic runs right to left, a person who needs big text sets it to 200%. EmuLabZip can change the…
- Visual regressionKeep a picture of how a screen should look (a baseline) and see what changed when it does not. Baselines are PNG files in the visual/ folder of the project…
Sessions and CI
Record a run, read its timeline, compare devices, save app state, report bugs and run in CI.
- SessionsA session is a recording of what happened on a device while an app was used, kept as one file you can open later, attach to a bug report, or collect from CI.
- Timeline and screen videoA session is a pile of separate streams: log lines, samples, requests, crashes. Each one stamps time its own way, so seeing what happened just before the…
- Comparing two devicesCompare puts two devices side by side while you use your app on both: an old Android next to a new one, a Pixel next to an iPhone, a phone next to a tablet.
- App state: save, restore and compareSave everything an app keeps (databases, preferences, files) into one .ezstate file, restore it later, and compare two states to see what changed.
- Bug reportsA bug report needs the same things every time: what the screen looked like, what device and app, what the log said, which requests failed and how the app…
- CI modeRecord a session around any command, usually your test run, with emulabzip ci: it keeps the exit code, saves a session file and can fail on regressions.
Automation and AI
Input and flows, deep links, device controls, the MCP server for AI assistants and plugins.
- Input and flowsEmuLabZip can touch a device, type on it and press its keys; it can record what you do into a flow, play the flow again, and export it as a Maestro flow or as…
- Deep linksA web link opens an app, instead of the browser, only when two things agree: the domain says the app may (a file on its website), and the app claims the…
- ControlsThe Controls tool changes what a device reports or does, so you can try an app somewhere else, in the dark, with a clean status bar or one permission less…
- MCP serveremulabzip mcp lets an AI assistant look at your emulators and simulators, and work with them: read logs, crashes and requests, drive the screen, record a…
- MCP referenceEvery tool, prompt and resource of the EmuLabZip MCP server for AI assistants, by area, with its arguments and whether it reads, changes or asks first.
- PluginsA plugin is your own collector. It is a folder with a plugin.json and a program. EmuLabZip starts the program for a device, the program prints one JSON object…
Customizing
Themes and layout.
- ThemesEmuLabZip ships with ten themes, and you can make your own, import someone else's, and share yours in the community gallery. Open Settings (⌘,) and go to…
- Customizing the layoutResize panes, collapse and reorder the sidebar, and tune text size, density and scale in EmuLabZip's Settings so the app fits how you work.
Reference
The command line, architecture, distribution and the roadmap.
- Command lineThe emulabzip command gives you the same data as the desktop app, in a terminal or a script. It is a single static binary with no runtime dependencies besides…
- ArchitectureEmuLabZip is a Cargo workspace. Platform code lives in small crates behind one trait, and two front ends (the desktop app and the CLI) use them the same way.
- DistributionHow EmuLabZip releases are built by GitHub Actions from a version tag, what each release attaches (installers, SHA256SUMS), code signing and in-app updates.
- RoadmapWhat EmuLabZip has shipped, phase by phase, and what is planned next: devices and platforms, team features and the 1.0 promise of stable interfaces.
- How the official tools workWhat we learned about how Xcode Instruments and the Android Studio profilers collect their data, and which of those public interfaces EmuLabZip uses.