Description
We observed a progressive scroll performance regression in CollectionView across recent MAUI versions. The regression manifests as increased GC collection counts during scrolling, leading to janky, non-smooth scroll behavior. The effect is more pronounced with complex cell templates (nested layouts, converters, shadows, visual states).
Versions affected:
- 10.0.51 : Baseline — acceptable GC pressure
- 10.0.60 : Noticeable regression — GC count increases during scroll
- 10.0.70-ci.main.26257.2 : Further degradation
GC collection counts increase significantly while scrolling a CollectionView, compared to the same scenario on 10.0.51. This is visible both in the attached diagnostic log and in the attached screen recording (visible lag and frame drops).
Something in the cell recycling or binding pipeline is allocating more managed objects per scroll cycle in 10.0.60+, triggering more frequent GC collections. The regression scales with cell template complexity — simple cells show a smaller delta, complex cells (converters returning new objects, Border with Shadow, VisualStateManager, ProgressBar) show a much larger one.
10.0.51.txt
10.0.60.txt
10.0.70-ci.main.26257.2.txt
10.0.51.webm
10.0.60.webm
10.0.70-ci.main.26257.2.webm
Steps to Reproduce
- Clone/open the attached repro project and deploy to an Android device or emulator.
- Once the app is running, scroll the list a few times up and down to warm up the view recycler.
- Scroll back to the top.
- Press Reset — this forces a full GC collect, waits for finalizers, and captures the baseline GC counts. All counters reset to 0.
- Press End — the list scrolls to the last item.
- Wait for the scroll to complete, then press Start — the list scrolls back to the top.
- Observe the Gen0 / Gen1 / Gen2 counters and compare with the attached log.
Link to public reproduction project repository
https://github.com/tranb3r/Issues/tree/main/MauiAppGC
Version with bug
10.0.60
Is this a regression from previous behavior?
Yes, this used to work in .NET MAUI
Last version that worked well
10.0.51
Affected platforms
Android
Affected platform versions
No response
Did you find any workaround?
No response
Relevant log output
Description
We observed a progressive scroll performance regression in CollectionView across recent MAUI versions. The regression manifests as increased GC collection counts during scrolling, leading to janky, non-smooth scroll behavior. The effect is more pronounced with complex cell templates (nested layouts, converters, shadows, visual states).
Versions affected:
GC collection counts increase significantly while scrolling a CollectionView, compared to the same scenario on 10.0.51. This is visible both in the attached diagnostic log and in the attached screen recording (visible lag and frame drops).
Something in the cell recycling or binding pipeline is allocating more managed objects per scroll cycle in 10.0.60+, triggering more frequent GC collections. The regression scales with cell template complexity — simple cells show a smaller delta, complex cells (converters returning new objects, Border with Shadow, VisualStateManager, ProgressBar) show a much larger one.
10.0.51.txt
10.0.60.txt
10.0.70-ci.main.26257.2.txt
10.0.51.webm
10.0.60.webm
10.0.70-ci.main.26257.2.webm
Steps to Reproduce
Link to public reproduction project repository
https://github.com/tranb3r/Issues/tree/main/MauiAppGC
Version with bug
10.0.60
Is this a regression from previous behavior?
Yes, this used to work in .NET MAUI
Last version that worked well
10.0.51
Affected platforms
Android
Affected platform versions
No response
Did you find any workaround?
No response
Relevant log output