diff --git a/mobile/src/screens/MoviesScreen.tsx b/mobile/src/screens/MoviesScreen.tsx index c4e16d9..89a16ed 100644 --- a/mobile/src/screens/MoviesScreen.tsx +++ b/mobile/src/screens/MoviesScreen.tsx @@ -133,6 +133,9 @@ export function MoviesScreen() { data={items} numColumns={NUM_COLS} keyExtractor={(m) => m.id} + // Android removeClippedSubviews=true blankuje plakaty po scrollu (expo-image + // nie re-renderuje odpiętych) — ten sam bug co "znikające miniaturki" scen. + removeClippedSubviews={false} renderItem={({ item }) => ( s.id} numColumns={2} + // Android default removeClippedSubviews=true odpina miniaturki poza + // viewportem i expo-image często nie re-renderuje ich po powrocie → + // "miniaturki znikają przy scrollu" (bug-report f181d382 2026-06-07). + removeClippedSubviews={false} renderItem={({ item }) => ( )} @@ -347,6 +351,7 @@ export function PerformerScenesScreen() { key="movies-list" data={movies} numColumns={MOVIE_COLS} + removeClippedSubviews={false} keyExtractor={(m) => m.id} renderItem={({ item }) => { // Defensive: jeśli backend kiedyś wyśle pojedynczy malformed movie, diff --git a/mobile/src/screens/ScenesScreen.tsx b/mobile/src/screens/ScenesScreen.tsx index 19984d3..51109fa 100644 --- a/mobile/src/screens/ScenesScreen.tsx +++ b/mobile/src/screens/ScenesScreen.tsx @@ -129,6 +129,9 @@ export function ScenesScreen() { data={items} keyExtractor={(s) => s.id} numColumns={2} + // Android removeClippedSubviews=true (default) blankuje miniaturki po scrollu — + // expo-image nie re-renderuje odpiętych subview. Bug-report "znikają miniaturki". + removeClippedSubviews={false} renderItem={({ item }) => } columnWrapperStyle={styles.gridRow} ListHeaderComponent={!debouncedQ && activeCount === 0 ? : null} diff --git a/mobile/src/screens/SiteScenesScreen.tsx b/mobile/src/screens/SiteScenesScreen.tsx index 8969329..4b230d3 100644 --- a/mobile/src/screens/SiteScenesScreen.tsx +++ b/mobile/src/screens/SiteScenesScreen.tsx @@ -113,6 +113,7 @@ export function SiteScenesScreen() { data={items} keyExtractor={(s) => s.id} numColumns={2} + removeClippedSubviews={false} renderItem={({ item }) => } columnWrapperStyle={styles.gridRow} refreshing={isRefetching} diff --git a/mobile/src/screens/StudioScenesScreen.tsx b/mobile/src/screens/StudioScenesScreen.tsx index cb3ce06..8f5b8ba 100644 --- a/mobile/src/screens/StudioScenesScreen.tsx +++ b/mobile/src/screens/StudioScenesScreen.tsx @@ -138,6 +138,7 @@ export function StudioScenesScreen() { data={sortedItems} keyExtractor={(s) => s.id} numColumns={2} + removeClippedSubviews={false} renderItem={({ item }) => ( )} diff --git a/mobile/src/screens/TagScenesScreen.tsx b/mobile/src/screens/TagScenesScreen.tsx index ae953ff..61a80f0 100644 --- a/mobile/src/screens/TagScenesScreen.tsx +++ b/mobile/src/screens/TagScenesScreen.tsx @@ -50,6 +50,7 @@ export function TagScenesScreen() { data={data?.items ?? []} keyExtractor={(s) => s.id} numColumns={2} + removeClippedSubviews={false} renderItem={({ item }) => } columnWrapperStyle={styles.gridRow} refreshing={isRefetching}