Skip to main content

Alice 1.x: The Inspector Gets a Glow-Up

· 6 min read
Jakub Homlala
Senior Mobile Engineer

Let’s be honest for a second. Tracking down rogue HTTP calls is practically a rite of passage in mobile development. We have all been there. You print a raw JSON string to the console, try to format it in your head, realize it is truncated, and finally give up and hook up a heavy desktop proxy tool just to see what your app is actually sending to the server.

Since its big 1.0.0 rewrite, Alice has been quietly but aggressively evolving to make that entire process drastically less painful and significantly more insightful.

If you blinked over the last few months, you might have missed a slew of new features that turn Alice from a simple list of scrolling logs into a proper network debugging powerhouse. Let's take a leisurely tour of what has landed in the 1.x series.

Alice Calls List

The 1.7.0 Mega-Update​

Version 1.7.0 was arguably one of the biggest feature drops in Alice's history. We sat down and completely rethought how developers actually interact with their network data on a day-to-day basis.

1. The Gantt Chart Timeline​

Looking at a chronological list of timestamps is fine for simple apps, but once your application starts firing off multiple concurrent requests, a flat list becomes almost impossible to read. You need to visually see when things happened and how they overlap. To solve this, we added an interactive Gantt Chart Timeline tab. This allows you to visually inspect staggered HTTP calls over time.

Gantt Chart Timeline

Now you can instantly spot the exact API call that is blocking your app's startup sequence, or visualize exactly how your parallel requests are firing under the hood. Red bars represent errors, green bars represent success, and the width of the bar naturally maps to the duration of the request. It is beautiful to look at, and more importantly, it is incredibly fast.

2. Request Replay​

Have you ever found a broken API call while testing on your phone, and then had to manually recreate that exact request in Postman just to test a potential fix? We certainly have, and we decided it was time to eliminate that step entirely.

Request Replay

If you hit the new Replay FAB (the circular arrow button) directly from any call's detail screen, Alice will instantly resend that exact HTTP call from right inside your app. It perfectly bypasses your existing interceptors to ensure a clean request. This feature is absolutely perfect for testing fresh authentication tokens, retrying flaky endpoints, or just saving yourself a few minutes of tedious typing.

3. A Dashboard, Not a Data Dump​

The old Stats screen served its purpose early on, but eventually, it just became a wall of text that was difficult to parse at a glance. We ripped it out and built a proper, actionable Stats Dashboard.

Stats Dashboard

Instead of just showing raw totals, you now get a cleanly organized grid of high-level metrics. You can easily check your Total Calls, Average Request Time, Data Transferred, and Pending Requests. We also included visual ratio bars for Status Codes and HTTP Methods to give you a quick feeling for your app's network health. Furthermore, we added handy shortcut lists for the "Top 3 Slowest", "Recent Errors", and "Largest Payloads" so you know exactly where you need to start optimizing your code.

Deep Digging (1.5.0 and 1.6.0)​

Sometimes you have hundreds of calls logged in a single session and you need to find one very specific payload hidden in the noise.

Advanced Search and HAR Export​

In version 1.6.0, the search bar got supercharged. You are no longer limited to simple text matching. You can now use advanced filters like status:500, method:GET, host:api.example.com, or even duration:200 to slice through your logs.

Advanced Search

And what happens when you need to escalate a tricky issue to your backend team? Alice now fully supports HAR (HTTP Archive 1.2) export. You just export the session from your phone, hand the resulting HAR file to your backend engineer, and they can load it straight into their desktop browser's developer tools. No more copying and pasting request headers into Slack messages.

Interactive JSON Viewer​

Scrolling through a massive block of minified JSON on a small mobile screen is nothing short of a nightmare. In 1.5.0, we made sure that response bodies are displayed as a proper interactive, tree-based JSON Viewer.

JSON Viewer

You can simply tap to expand and tap to collapse individual nodes. It is exactly the kind of little quality-of-life improvement that makes a huge difference at the end of a long day of debugging.

Catching the Sneaky Bugs (1.10.0)​

The latest major features focus entirely on pro-active debugging. Specifically, we introduced Programmatic Call Tagging and N+1 Duplicate Request Detection.

With tagging, by calling alice.tag(tag: 'login-flow'), you can logically group a series of calls together in the UI. However, the real star of the show is duplicate detection. Alice now automatically spots when your app is making the exact same request multiple times in rapid succession. This is often known as the dreaded N+1 problem, and Alice flags it right in the user interface. This helps you catch those nasty ORM and state management foot-guns before they ever reach a production environment.

Cross-Platform Everywhere​

Oh, and did we mention that Alice runs everywhere now? Since version 1.2.0, Alice officially supports Linux, macOS, Windows, and the Web.

Over the course of the 1.x release cycle, we have continuously polished the Web WASM compatibility, replaced restrictive dart:io dependencies, and ensured that sharing logs falls back to your system clipboard when native share sheets are not available on the web platform.

The underlying architecture is cleaner too. The internal logic is now strictly enforced in lib/src, our test suites are rigorous, and the tooling overall is better than it has ever been.

If you have not updated Alice in a while, it is definitely time to bump your version in pubspec.yaml.

Check out Alice on pub.dev and as always, let us know what you think on GitHub!