Shop app
91 ▲2- First paint
- 46 ms
- Fully drawn
- 138 ms
- Jank
- 34%
Epsilon Delta Orion is a mobile app performance monitoring SDK for Android, iOS, Flutter and React Native. It measures speed, jank, crashes, API time and rage clicks for every screen on real devices. It counts every Flutter screen on its own, where other tools see the whole app as one, and compares each release with the last.
Each screen of the product tour has its own page. Start with the question you have.
Pulse
Compare your apps side by side, today against yesterday, with the screens, APIs and releases that moved.
Dynamic page jank improved since yesterday, while battery use rose on the basket page.
The iOS tab adds hangs per session, memory pressure and thermal level.
Version impact
Cold start
One app-start number hides it. Phases show when Flutter engine init takes the largest share, and what pre-warming saves.
Frames
Rank Flutter routes by janky frames, and see whether frames fall during data loading, layout or animation.
API
Per-endpoint failure rates surface failing calls that an app-wide average hides.
Rage clicks
A heatmap with scroll position shows exactly where to look. A stepper tapped quickly also counts, so check what sits there first.
Resources
Request counts expose assets that could be bundled or cached on disk, saving data and screen load time.
Cold start
Process start, app init, activity, Flutter engine, first frame and first data on Android, by version, plus the gain from a pre-warmed engine.
Open Speed detailsEngine init is 44% of cold start. Pre-warming cuts first frame to 1.3 s.
Crash / ANR + debug symbols
Fatal, non-fatal, ANR, OS crash and hang issues with release health and AI analysis. ANRs name the code on the main thread. iOS hangs show duration, time, screen and MetricKit stacks, and uploaded dSYMs name stacks from the last 14 days too.
History Tracking shows the path each affected user took before a crash or ANR: the screens, the slow API calls and the events along the way.
Open Crash / ANRAPI and network
Every Dio and http call is captured automatically, so there is no manual wrapping and no extra release.
If your server sends an x-response-time header, Orion splits each call so you know which team owns the delay.
Server-side tools cannot record calls that never arrive. Orion records them on the phone, with the cause.
See frozen frames against the API calls in flight.
AI-driven insights into how each screen paints for real users.
Now part of Speed detailsRenderAPIResources
Group slowness by activity to separate render, API and resource time.
Now part of API detailsFollow the history of crashes and ANRs for anonymous users.
Now part of Crash / ANRGood, janky and frozen frames. Severity, cluster size and whether time is lost to layout, data or animation.
Open in the tourCount per screen and a heatmap with scroll position, with version comparison per 100 sessions.
Open in the tourStatus codes, error endpoints, largest payloads and Android vs iOS, per release.
Open in the tourMemory, battery and wake locks per screen and per session, on Android and iOS.
Open in the tourFind the devices and OS versions behind slow Fully Drawn Paint.
Open in the tourSample each platform separately, or switch one off. Every first screen is recorded, and rates and latencies stay accurate. Apps with custom routing can use the manual screen tracker.
Alerts
Each endpoint is compared with the same time yesterday and last week. Several endpoints failing together arrive as one email, and you get a resolved note when they recover.
Choose real-time email, a daily or weekly digest, and Slack for critical alerts. Set thresholds per product, snooze from the email and use quiet hours.
Open Alerts| Capability | Orion | Firebase | Play Console vitals | Xcode Organizer |
|---|---|---|---|---|
| Load time of each Flutter screen | First paint and fully drawn, per route | Not possible for Flutter screens | App start only | App launch only |
| Every Dio or http API call | Automatic: status, latency, size, screen | Manual HttpMetric per call | None | None |
| Jank on each Flutter screen | Janky and frozen frames per route, with phase | Whole Flutter app counts as one screen | App-wide | App-wide hitch rate |
| Rage clicks | Per screen, heatmap with scroll position | None | None | None |
| Cold start phases | Process to first data (Android) | One app-start duration | Time to first frame, % slow starts | Launch time, slowest functions |
| iOS hangs | Per session, MetricKit stacks per version | None documented | Android only | Hang rate and logs, opted-in users |
| Memory, battery, wake locks | Per screen and session, Android and iOS | Memory for a sample of sessions | App-level, Android only | App-level |
| Crashes and ANRs | Yes, naming main-thread code | Yes, with AI insights | Yes, the rates Google ranks on | Yes |
Crashlytics and Play Console remain the reference for crash and ANR rates. Firebase also covers all users and updates within minutes; Play Console and Organizer use opted-in users and update daily. Based on public documentation, October 2026.
Flutter SDK 1.2.42. Sizes from release builds of a blank Flutter app, with and without Orion. Main-thread time from a debug build on an emulator.
It measures how an app behaves on real users’ phones: start time, screen load, frame drops, crashes, ANRs and API time, broken down by device and app version.
Application Not Responding. Android shows it when the app’s main thread is blocked for 5 seconds while the user is interacting.
Crashlytics focuses on crashes. Orion adds screen speed, jank, API time on the phone, rage taps and per-endpoint alerts, compared release by release.
The Flutter SDK adds about 202 KB to the iOS download, and used 7.6 ms of Android main-thread time in a 40-second test session.
[Confirm what History Tracking records and how it is anonymised.]
Last updated 6 Nov 2026 · Reviewed by [Name], [Role]