-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
iOS Collectionview jitters / scrollskips on iPhone 14 simulators / devices (even in .NET 8) #16877
Comments
Pushed a style change to add it. very surprised my example built and ran without it. I've pushed a fix @drasticactions; the bug persists |
The root issue is with the dynamic height of the items. I've created a reproduction project to show this: https://github.com/drasticactions/MauiRepros/tree/main/MauiCollectionViewScroll RPReplay_Final1692582393.MP4Scrolling is fine if you have a fixed height on each item in the template. When the height is dynamic and variable, that's when scrolling "jitters." When I tested this on my iPad Mini, it worked fine. The inner contents of the cell don't matter; it's the height alone. If you want to work around this, set a fixed height on your outer StackLayout, and it should work. @rolfbjarne Do you know of good ways to debug UICollectionView issues like this? Could this be constraint issues? |
Thank you for the insight. Unfortunately some titles for events or player names are more than one line high, so a fixed height will not work in that scenario. I would use a ListView with "HasUnevenRows = true" but unfortuantely ListView performance and virtualization is rather poor in iOS, at least for .NET 7. If I recycle all elements, I get poor performance, if I retain all elements, I get missing / phantom rows that don't display. So I need to use a CollectionView, and since MAUI doesn't have a variable text-size option yet, I need to allow for line wrap. I still am a bit surprised that I can't reproduce the jitter on my iPhone 12, or on iPhone SE simulators. |
I am seeing this issue as well using .NET 7 and Visual Studio 17.7.1 on an iPhone 14 physical device running iOS 16.6. I only have 10 items and it jitters. This bug seems fairly new as it wasn't doing this a few weeks ago. |
I would try using Instruments. |
We have same problem but CollectionView is grouped. When items have different height the collection is broken after scroll down. Can you fix this asap to .NET 8 release ? Thanks |
Unsure if this is a regression. Just observed the same behavior on iPhone devices with dynamic island in Xamarin.Forms which suggests this bug has been there for a longer time. |
To me it looks like it's definitely related to devices with dynamic island feature, i.e. it works on iPhone 14 but doesn't work on iPhone 14 Pro and iPhone 15. |
Just an idea. You could try the sharpnado collectionview or the devexpress cv. And an articel about the cv performance: https://www.sharpnado.com/xamarin-forms-maui-collectionview-performance-the-10-golden-rule/ |
@metalium84 is this bug still happening to you on .NET 8? Asking out of curiosity. For me, the solution was to go with Xamarin.Forms which seems to be more stable than MAUI for now. So now, I'm patching CollectionView myself. |
@AlleSchonWeg Thanks a lot for your suggestion and sharing this interesting article with me! I'll try to refactor my implementation accordingly. |
Yes, it's still happening on .NET 8 (iOS 17.2). Why are you supposing to go back to XF? As I've found xamarin/Xamarin.Forms#15782 where you're reporting the same issue on XF...? |
I’ve been a Microsoft guy my whole career, but they have really screwed the pooch with Maui. To me it appears Microsoft hasn’t put a large enough dev team behind it and they are drowning in bugs. They also seem to focus on new releases instead of bug fixes. Our teams app was 75% done and I ordered the stop of development. The way Microsoft is handling Maui and the countless bugs and workarounds you have to do makes it unattainable for enterprise development. I’m a Microsoft advocate , but I had my teams switch to Flutter. Flutter is what Maui should be. My advice guys, switch to Flutter and you will actually get your app down. Bye Maui! |
@metalium84 Well, I used to face this issue on iPhone devices with dynamic island on XF, but I managed to patch the iOS CollectionView implementation myself, so it doesn't really happen anymore. I didn't bother myself trying to fix it in MAUI because the XF -> MAUI migration path had been rather unpleasant for me and I decided to stick with XF for now. |
Would you be so kind to share with me how you managed to patch the iOS CollectionView on XF so you got rid of the issues? Maybe I could adapt to MAUI then... |
@metalium84 Sure. I changed the sizes equality check here: Additionally, in my case CollectionView Headers turned out to be causing some issues too, so I decided to render them as collection items with their own DataTemplate. |
@v0idzz Thanks a lot! Right now, I don't see a way to adapt this to MAUI without spending too much time. But maybe it's gonna be a hint for the MAUI developers at least ;-) |
This works fine on latest stable on net8. The initial project was using net7.0-ios versions that's why reproduced on Visual Studio Enterprise 17.10.0 Preview 1.. Updating to net8.0 workloads with.NET MAUI 8.0.7 works fine. |
Description
When I have a collectionview with 50-100 items in it, the scrolling on iPhone 14 devices ends up skipping or jittering, causing massive user frustration
I've reproduced this on .NET 7 and .NET 8 (and my production app has received customer complaints to that effect as well).
this does NOT reproduce on an iPhone 12 or an iPhone SE simulator or devices. Only on iPhone 14 Pro + iPhone 14 Pro Max simulators (I think its the floating notch perhaps)
Simulator.Screen.Recording.-.iPhone.14.Pro.-.2023-08-19.at.15.33.33.mp4
Steps to Reproduce
Create a new MAUI app
Create a CollectionView as seen in the reproduction repository
Bind to a datasource
try to scroll on an iPhone 14 device
Decently down the list the scrollbar will freak the eff out.
Link to public reproduction project repository
https://github.com/edgiardina/MauiBug_JitterScroll
Version with bug
8.0.0-preview.7.8842
Is this a regression from previous behavior?
Yes, this used to work
Last version that worked well
Unknown/Other
Affected platforms
iOS
Affected platform versions
iPhone 14 variations, iOS 16.4 and above
Did you find any workaround?
No response
Relevant log output
No response
The text was updated successfully, but these errors were encountered: