<!-- Thanks for taking the time to report a bug! Please fill out as much detail as possible — the more we know, the faster we can fix it. --> ## Describe the Bug <!-- A clear, concise summary of what's going wrong. --> ## Steps to Reproduce <!-- Walk us through exactly how to trigger the bug. Be specific. --> 1. Open Flow and navigate to '...' 2. Tap on '...' 3. Perform '...' 4. Observe the issue ## Expected Behavior <!-- What SHOULD have happened instead? --> ## Actual Behavior <!-- What ACTUALLY happened? Include any error messages if visible. --> ## Screenshots or Screen Recordings <!-- If possible, attach a screenshot or screen recording showing the issue. This helps enormously — especially for UI bugs. Tip: Most Android devices support screen recording via the notification shade. Drag and drop files here or paste from clipboard. --> ## Environment <!-- Please complete ALL of the following. --> | Field | Value | |-------|-------| | **Device** | e.g. Pixel 8 Pro, Samsung Galaxy S24, OnePlus 12 | | **Android Version** | e.g. Android 14 (API 34) | | **Flow Version** | e.g. 1.8.5 (visible in Settings → About) | | **Installation Source** | GitHub APK | **ROM** | Stock / Custom (specify: e.g. LineageOS 21) | ## Frequency <!-- How often does this happen? --> - [ ] Every time (100% reproducible) - [ ] Often (happens most of the time) - [ ] Sometimes (happens intermittently) - [ ] Rarely (happened once or twice) ## Affected Area <!-- Check all that apply. --> - [ ] Video playback - [ ] Music player - [ ] Home feed / Recommendations - [ ] Search - [ ] Downloads - [ ] Subscriptions - [ ] Playlists - [ ] Picture-in-Picture / Background playback - [ ] Notifications - [ ] Settings / Preferences - [ ] Import / Export - [ ] Casting - [ ] SponsorBlock / DeArrow - [ ] Lyrics / Subtitles - [ ] UI / Theming - [ ] Performance / Battery - [ ] Other (describe below) ## Logs (Optional but Helpful) <!-- java.lang.IllegalArgumentException: Key "Pni3OhXKmKk" was already used. If you are using LazyColumn/Row please make sure you provide a unique key for each item. at androidx.compose.ui.layout.LayoutNodeSubcompositionsState.subcompose(SubcomposeLayout.kt:453) at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$Scope.subcompose(SubcomposeLayout.kt:895) at androidx.compose.foundation.lazy.layout.LazyLayoutMeasureScopeImpl.measure-0kLqBqw(LazyLayoutMeasureScope.kt:125) at androidx.compose.foundation.lazy.LazyListMeasuredItemProvider.getAndMeasure-0kLqBqw(LazyListMeasuredItemProvider.kt:55) at androidx.compose.foundation.lazy.LazyListMeasuredItemProvider.getAndMeasure-0kLqBqw$default(LazyListMeasuredItemProvider.kt:49) at androidx.compose.foundation.lazy.LazyListMeasureKt.measureLazyList-x0Ok8Vo(LazyListMeasure.kt:214) at androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.invoke-0kLqBqw(LazyList.kt:326) at androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.invoke(LazyList.kt:183) at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$3$2$1.invoke-0kLqBqw(LazyLayout.kt:119) at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$3$2$1.invoke(LazyLayout.kt:112) at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1.measure-3p2s80s(SubcomposeLayout.kt:725) at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:135) at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s(GraphicsLayerModifier.kt:646) at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:188) at androidx.compose.foundation.layout.PaddingValuesModifier.measure-3p2s80s(Padding.kt:472) at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:188) at androidx.compose.foundation.layout.FillNode.measure-3p2s80s(Size.kt:699) at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:188) at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.kt:316) at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.kt:315) at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:140) at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:502) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:258) at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133) at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:113) at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:1775) at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:40) at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:696) at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release(LayoutNode.kt:1222) at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure-sdFAvZA(MeasureAndLayoutDelegate.kt:367) at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout-0kLqBqw(MeasureAndLayoutDelegate.kt:463) at androidx.compose.ui.platform.AndroidComposeView.measureAndLayout-0kLqBqw(AndroidComposeView.android.kt:1285) at androidx.compose.ui.node.LayoutNode.forceRemeasure(LayoutNode.kt:1296) at androidx.compose.foundation.lazy.LazyListState.onScroll$foundation_release(LazyListState.kt:456) at androidx.compose.foundation.lazy.LazyListState$scrollableState$1.invoke(LazyListState.kt:229) at androidx.compose.foundation.lazy.LazyListState$scrollableState$1.invoke(LazyListState.kt:229) at androidx.compose.foundation.gestures.DefaultScrollableState$scrollScope$1.scrollBy(ScrollableState.kt:184) at androidx.compose.foundation.gestures.ScrollingLogic.performScroll-3eAAhYA(Scrollable.kt:717) at androidx.compose.foundation.gestures.ScrollingLogic.access$performScroll-3eAAhYA(Scrollable.kt:642) at androidx.compose.foundation.gestures.ScrollingLogic$performScrollForOverscroll$1.invoke-MK-Hz9U(Scrollable.kt:702) at androidx.compose.foundation.gestures.ScrollingLogic$performScrollForOverscroll$1.invoke(Scrollable.kt:700) at androidx.compose.foundation.AndroidEdgeEffectOverscrollEffect.applyToScroll-Rhakbz0(AndroidOverscroll.android.kt:494) at androidx.compose.foundation.gestures.ScrollingLogic$nestedScrollScope$1.scrollByWithOverscroll-OzD1aCk(Scrollable.kt:691) at androidx.compose.foundation.gestures.ScrollingLogic$doFlingAnimation$2$reverseScope$1.scrollBy(Scrollable.kt:773) at androidx.compose.foundation.gestures.DefaultFlingBehavior$performFling$2$1.invoke(Scrollable.kt:895) at androidx.compose.foundation.gestures.DefaultFlingBehavior$performFling$2$1.invoke(Scrollable.kt:893) at androidx.compose.animation.core.SuspendAnimationKt.doAnimationFrame(SuspendAnimation.kt:361) at androidx.compose.animation.core.SuspendAnimationKt.doAnimationFrameWithScale(SuspendAnimation.kt:339) at androidx.compose.animation.core.SuspendAnimationKt.access$doAnimationFrameWithScale(SuspendAnimation.kt:1) at androidx.compose.animation.core.SuspendAnimationKt$animate$9.invoke(SuspendAnimation.kt:279) at androidx.compose.animation.core.SuspendAnimationKt$animate$9.invoke(SuspendAnimation.kt:278) at androidx.compose.animation.core.SuspendAnimationKt$callWithFrameNanos$2.invoke(SuspendAnimation.kt:304) at androidx.compose.animation.core.SuspendAnimationKt$callWithFrameNanos$2.invoke(SuspendAnimation.kt:303) at androidx.compose.runtime.BroadcastFrameClock$FrameAwaiter.resume(BroadcastFrameClock.kt:42) at androidx.compose.runtime.BroadcastFrameClock.sendFrame(BroadcastFrameClock.kt:76) at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:592) at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:585) at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:41) at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109) at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt:41) at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:2669) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:2680) at android.view.Choreographer.doCallbacks(Choreographer.java:1863) at android.view.Choreographer.doFrame(Choreographer.java:1592) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:2496) at android.os.Handler.handleCallback(Handler.java:1014) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loopOnce(Looper.java:250) at android.os.Looper.loop(Looper.java:340) at android.app.ActivityThread.main(ActivityThread.java:9928) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:625) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:957) If the app crashes, a logcat dump helps us pinpoint the issue instantly. How to capture logs: 1. Enable Developer Options on your device 2. Connect via USB and run: adb logcat -s "Flow" --pid=$(adb shell pidof com.flow.youtube) 3. Reproduce the bug 4. Paste the relevant output below You can also use apps like "Logcat Reader" from the Play Store. --> <details> <summary>Click to expand logs</summary> <!-- paste logs here --> </details> ## Additional Context <!-- Anything else that might help us understand or reproduce the issue: - Did this work in a previous version? If so, which one? - Does this happen on Wi-Fi only, mobile data only, or both? - Does restarting the app fix it temporarily? - Any other apps running that might interfere? -->
Describe the Bug
Steps to Reproduce
Expected Behavior
Actual Behavior
Screenshots or Screen Recordings
Environment
Frequency
Affected Area
Logs (Optional but Helpful)
Click to expand logs
Additional Context