Versus APM and EventCounters
Application Insights, Sentry performance, and App Center are hosted APMs. EventCounters are a .NET runtime surface. Performance is an on-device scoreboard plus a maui profile wrapper. It is not a drop-in APM replacement.
| Requirement | Performance | EventCounters | Application Insights / Sentry |
|---|---|---|---|
| Named traces in app code | Yes | Manual | Yes |
| Lightweight / no SaaS | Yes | Yes | No |
| MAUI page / startup helpers | Yes | No | Partial |
| Stop maui profile on first frame | MauiProfile / maui-perf | No | No |
| Retain-path / CPU flame graph | No (use a profiler) | Partial | Partial |
Versus raw maui profile
maui profile is the official EventPipe CLI. MauiProfile and maui-perf do not replace it — they hide the stopping-event flags and call Complete() at first frame or a named scenario.
| Need | Start with |
|---|---|
| Official flags and docs | maui profile |
| Shorter android / ios aliases and 30s durations | maui-perf (Plugin.Maui.Performance.Cli) |
| Stop startup on first frame or Checkout | MauiProfile + UseMauiPerformance |
| On-device scoreboard without a .nettrace | MauiPerformance.FormatReport() |
Versus Diagnostics, LeakAnalyser, and Observability
| Need | Package |
|---|---|
| Startup / page / API timings and memory scoreboard | Plugin.Maui.Performance |
| Wrap maui profile / stop a .nettrace on first frame | Plugin.Maui.Performance (MauiProfile + maui-perf) |
| Page / view still alive after pop | Plugin.Maui.LeakAnalyser |
| Crash, ANR, pre-crash breadcrumbs | Plugin.Maui.Diagnostics |
| Umbrella export of sibling events | Plugin.Maui.Observability |
Choose LeakAnalyser when the question is whether a view is still rooted. Choose Diagnostics when the failure is a crash or ANR. Choose Performance when the question is how long something took, or when you want maui profile to stop without memorizing stopping-event flags.
When to choose Performance
- You need startup, page, navigation, API, image, render, and memory timings on Android or iOS.
- You want a compact on-device report without a SaaS APM.
- You want maui profile startup to stop on first frame or a named scenario.
- You want maui-perf aliases (android / ios, 30s, speedscope) over the long official flags.
Stay on Application Insights or Sentry when the org already standardized on a hosted APM. Use a memory profiler for retain paths. Use LeakAnalyser for visual-tree leaks. Use Diagnostics for crashes.