Why .NET MAUI lists stutter on a weak tablet and what actually helped
While moving a field sales app from Xamarin.Forms to .NET MAUI, the author found catalog scrolling janky on older Android tablets even though the business logic was fast. She measured frame times with dumpsys gfxinfo and cut the worst stutter through list virtualization, data preparation, and simpler row templates. The result is a concrete, number-backed guide for anyone tuning MAUI collection views.
Key points
- Use dumpsys gfxinfo to measure janky frames and percentiles; benchmarks that time logic do not show what the user sees.
- Test on the weakest device your users really have, since the gap between tablets was very large.
- Replace ListView with CollectionView for long lists; it virtualizes properly even with variable row heights.
- Keep row templates simple: fixed row heights, no FlexLayout, BindableLayout, RelativeSource or Scaled* in cells.
- Prepare data on a background thread and update the existing collection rather than swapping ItemsSource.
- On iOS with MAUI 10.0.110, MeasureFirstItem did not remeasure reused rows, so the author switched to MeasureAllItems.
The author moved a field sales app from Xamarin.Forms to .NET MAUI and kept hearing that the catalog scrolled poorly on older Android tablets. The business logic was fast, so the real cost was in drawing the lists. She measured per-frame times with dumpsys gfxinfo while replaying identical swipes, and found that a weaker tablet dropped most frames in the old build and still missed budget in the new one.
The fixes that mattered most were switching from ListView to CollectionView, preparing catalog data off the UI thread, updating a collection's contents instead of replacing it, and keeping row templates free of expensive layouts and bindings. Android image updates that forced re-layout were handled with a custom handler. Some changes backfired, including a MeasureFirstItem issue on iOS, so the article is worth reading before you apply any of them.
Real-world use
- A field sales app showing thousands of catalog or order rows on low-end Android tablets.
- A MAUI team whose filtered list refreshes often and needs smoother scrolling during updates.
- A developer migrating a Xamarin.Forms app to MAUI who must keep list performance from regressing.
Why it matters
Scrolling jank is what users notice most, and fast business logic does not fix it on its own. The measurement method and row template rules here let you verify MAUI list performance on real devices.