authorgravatar for me@t3.ggTheo Browne <me@t3.gg> 2026-07-27 19:24:44-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-07-27 19:24:44-07:00
log476d69cd1d5d89b4aad77df8fc01c71e34af930c
tree236b595eb53d5544243c22197f3ca8c266785c53
parenta148e08197fc38b24e59c10c7cd5ba06dd182dab
signature Signed by PGP key B5690EEEBB952194

fix(mobile): threads load snapped to bottom on iOS (#4689)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

2 files changed, 25 insertions(+), 7 deletions(-)

patches/@legendapp__list@3.2.0.patch+20-2
...@@ -204,7 +204,7 @@ index 72d3f59..435a5fc 100644...@@ -204,7 +204,7 @@ index 72d3f59..435a5fc 100644
204 * Number of columns to render items in.204 * Number of columns to render items in.
205 * @default 1205 * @default 1
206diff --git a/react-native.js b/react-native.js206diff --git a/react-native.js b/react-native.js
207index 8d4ff89..18f0d62 100644207index 8d4ff89..003b2f7 100644
208--- a/react-native.js208--- a/react-native.js
209+++ b/react-native.js209+++ b/react-native.js
210@@ -1195,7 +1195,7 @@ function setInitialRenderState(ctx, {210@@ -1195,7 +1195,7 @@ function setInitialRenderState(ctx, {
...@@ -510,6 +510,15 @@ index 8d4ff89..18f0d62 100644...@@ -510,6 +510,15 @@ index 8d4ff89..18f0d62 100644
510 onRefresh,510 onRefresh,
511 onScroll: onScrollProp,511 onScroll: onScrollProp,
512 onStartReached,512 onStartReached,
513@@ -6577,7 +6729,7 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
514 const combinedRef = useCombinedRef(refScroller, refScrollView);
515 const keyExtractor = keyExtractorProp != null ? keyExtractorProp : ((_item, index) => index.toString());
516 const stickyHeaderIndices = stickyHeaderIndicesProp;
517- const contentInsetEndAdjustmentResolved = Platform.OS === "web" ? contentInsetEndAdjustment : void 0;
518+ const contentInsetEndAdjustmentResolved = contentInsetEndAdjustment;
519 const previousContentInsetEndAdjustmentRef = React2.useRef(contentInsetEndAdjustmentResolved);
520 const alwaysRenderIndices = React2.useMemo(() => {
521 const indices = getAlwaysRenderIndices(alwaysRender, dataProp, keyExtractor, anchoredEndSpace == null ? void 0 : anchoredEndSpace.anchorIndex);
513@@ -6710,6 +6862,7 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded522@@ -6710,6 +6862,7 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
514 contentContainerAlignItems: contentContainerStyle.alignItems,523 contentContainerAlignItems: contentContainerStyle.alignItems,
515 contentInset,524 contentInset,
...@@ -554,7 +563,7 @@ index 8d4ff89..18f0d62 100644...@@ -554,7 +563,7 @@ index 8d4ff89..18f0d62 100644
554 recycleItems,563 recycleItems,
555 refreshControl: refreshControlElement ? stylePaddingTopState > 0 ? React2__namespace.cloneElement(refreshControlElement, {564 refreshControl: refreshControlElement ? stylePaddingTopState > 0 ? React2__namespace.cloneElement(refreshControlElement, {
556diff --git a/react-native.mjs b/react-native.mjs565diff --git a/react-native.mjs b/react-native.mjs
557index 2e96ca7..6e8913e 100644566index 2e96ca7..fc88d4b 100644
558--- a/react-native.mjs567--- a/react-native.mjs
559+++ b/react-native.mjs568+++ b/react-native.mjs
560@@ -1174,7 +1174,7 @@ function setInitialRenderState(ctx, {569@@ -1174,7 +1174,7 @@ function setInitialRenderState(ctx, {
...@@ -860,6 +869,15 @@ index 2e96ca7..6e8913e 100644...@@ -860,6 +869,15 @@ index 2e96ca7..6e8913e 100644
860 onRefresh,869 onRefresh,
861 onScroll: onScrollProp,870 onScroll: onScrollProp,
862 onStartReached,871 onStartReached,
872@@ -6556,7 +6708,7 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
873 const combinedRef = useCombinedRef(refScroller, refScrollView);
874 const keyExtractor = keyExtractorProp != null ? keyExtractorProp : ((_item, index) => index.toString());
875 const stickyHeaderIndices = stickyHeaderIndicesProp;
876- const contentInsetEndAdjustmentResolved = Platform.OS === "web" ? contentInsetEndAdjustment : void 0;
877+ const contentInsetEndAdjustmentResolved = contentInsetEndAdjustment;
878 const previousContentInsetEndAdjustmentRef = useRef(contentInsetEndAdjustmentResolved);
879 const alwaysRenderIndices = useMemo(() => {
880 const indices = getAlwaysRenderIndices(alwaysRender, dataProp, keyExtractor, anchoredEndSpace == null ? void 0 : anchoredEndSpace.anchorIndex);
863@@ -6689,6 +6841,7 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded881@@ -6689,6 +6841,7 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
864 contentContainerAlignItems: contentContainerStyle.alignItems,882 contentContainerAlignItems: contentContainerStyle.alignItems,
865 contentInset,883 contentInset,
pnpm-lock.yaml+5-5
...@@ -72,7 +72,7 @@ patchedDependencies:...@@ -72,7 +72,7 @@ patchedDependencies:
72 '@effect/vitest@4.0.0-beta.102': a607339aab944136a084a05f159aa0f5a69776934d4b835dab8f9992f1c1342572 '@effect/vitest@4.0.0-beta.102': a607339aab944136a084a05f159aa0f5a69776934d4b835dab8f9992f1c13425
73 '@expo/metro-config@56.0.14': 8cb08b5bb7051ed9d2dbe46a2c293c5a1e17f1bd6ddf30de27909e18c921ff4673 '@expo/metro-config@56.0.14': 8cb08b5bb7051ed9d2dbe46a2c293c5a1e17f1bd6ddf30de27909e18c921ff46
74 '@ff-labs/fff-node@0.9.4': 2b16019ce7ab61aec6478dd02f79ef468cc1d5c51e9d00764f7d2ab8167210c874 '@ff-labs/fff-node@0.9.4': 2b16019ce7ab61aec6478dd02f79ef468cc1d5c51e9d00764f7d2ab8167210c8
75 '@legendapp/list@3.2.0': 45e4cbcbeeca1b628b8480869374d7cbc77e3fbfa97ee0107a0d72c3c4a5d7f375 '@legendapp/list@3.2.0': 9203ec3db86574a31e157a265cefd8997b259cc420a0c4c61c580c80ed8cf78d
76 '@pierre/diffs@1.3.0-beta.5': 7cb6da88544119adda056b2f46f43956f99326227732da0b345081e285a6c53a76 '@pierre/diffs@1.3.0-beta.5': 7cb6da88544119adda056b2f46f43956f99326227732da0b345081e285a6c53a
77 '@react-native-menu/menu@2.0.0': 5ea3ae4bf1d9baf5443b65c269bb09621c27a68d556f713778f37b1e8d46aaae77 '@react-native-menu/menu@2.0.0': 5ea3ae4bf1d9baf5443b65c269bb09621c27a68d556f713778f37b1e8d46aaae
78 '@react-navigation/native-stack@7.17.6': c7fc101b78d434904425e5a24c22fb0042298dec6f807250486e784f3c71727378 '@react-navigation/native-stack@7.17.6': c7fc101b78d434904425e5a24c22fb0042298dec6f807250486e784f3c717273
...@@ -211,7 +211,7 @@ importers:...@@ -211,7 +211,7 @@ importers:
211 version: 56.0.18(3cdc0dde9f93166d952f1e1bd0cb25c0)211 version: 56.0.18(3cdc0dde9f93166d952f1e1bd0cb25c0)
212 '@legendapp/list':212 '@legendapp/list':
213 specifier: 3.2.0213 specifier: 3.2.0
214 version: 3.2.0(patch_hash=45e4cbcbeeca1b628b8480869374d7cbc77e3fbfa97ee0107a0d72c3c4a5d7f3)(react-dom@19.2.3(react@19.2.3))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)214 version: 3.2.0(patch_hash=9203ec3db86574a31e157a265cefd8997b259cc420a0c4c61c580c80ed8cf78d)(react-dom@19.2.3(react@19.2.3))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)
215 '@noble/curves':215 '@noble/curves':
216 specifier: 'catalog:'216 specifier: 'catalog:'
217 version: 1.9.1217 version: 1.9.1
...@@ -543,7 +543,7 @@ importers:...@@ -543,7 +543,7 @@ importers:
543 version: 0.9.0543 version: 0.9.0
544 '@legendapp/list':544 '@legendapp/list':
545 specifier: 3.2.0545 specifier: 3.2.0
546 version: 3.2.0(patch_hash=45e4cbcbeeca1b628b8480869374d7cbc77e3fbfa97ee0107a0d72c3c4a5d7f3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)546 version: 3.2.0(patch_hash=9203ec3db86574a31e157a265cefd8997b259cc420a0c4c61c580c80ed8cf78d)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
547 '@lexical/react':547 '@lexical/react':
548 specifier: ^0.41.0548 specifier: ^0.41.0
549 version: 0.41.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(yjs@13.6.31)549 version: 0.41.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(yjs@13.6.31)
...@@ -12976,7 +12976,7 @@ snapshots:...@@ -12976,7 +12976,7 @@ snapshots:
12976 dependencies:12976 dependencies:
12977 jsbi: 4.3.212977 jsbi: 4.3.2
1297812978
12979 '@legendapp/list@3.2.0(patch_hash=45e4cbcbeeca1b628b8480869374d7cbc77e3fbfa97ee0107a0d72c3c4a5d7f3)(react-dom@19.2.3(react@19.2.3))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)':12979 '@legendapp/list@3.2.0(patch_hash=9203ec3db86574a31e157a265cefd8997b259cc420a0c4c61c580c80ed8cf78d)(react-dom@19.2.3(react@19.2.3))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)':
12980 dependencies:12980 dependencies:
12981 react: 19.2.312981 react: 19.2.3
12982 use-sync-external-store: 1.6.0(react@19.2.3)12982 use-sync-external-store: 1.6.0(react@19.2.3)
...@@ -12984,7 +12984,7 @@ snapshots:...@@ -12984,7 +12984,7 @@ snapshots:
12984 react-dom: 19.2.3(react@19.2.3)12984 react-dom: 19.2.3(react@19.2.3)
12985 react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)12985 react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)
1298612986
12987 '@legendapp/list@3.2.0(patch_hash=45e4cbcbeeca1b628b8480869374d7cbc77e3fbfa97ee0107a0d72c3c4a5d7f3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':12987 '@legendapp/list@3.2.0(patch_hash=9203ec3db86574a31e157a265cefd8997b259cc420a0c4c61c580c80ed8cf78d)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
12988 dependencies:12988 dependencies:
12989 react: 19.2.612989 react: 19.2.6
12990 use-sync-external-store: 1.6.0(react@19.2.6)12990 use-sync-external-store: 1.6.0(react@19.2.6)