Note
Grok responding on behalf of Julius.
Triage
Thanks @tris203 for another careful trace, including the timeline. I confirmed this on current main (f391794a35). The Android widget layout hasn't changed since #12046 (e41755cf8a), and the merged #13474 (59abcd67ac) was already an ancestor of that commit, so the scrolling widget was on main when the rewrite landed.
What I verified
SubscriptionUsage.android.tsx still shows at most two windows per provider (const limit = 2, then provider.windows.slice(0, limit)), adds N more in T3, has no Subscription usage (N) header, and labels the timestamp As of …. SubscriptionUsage.android.test.ts asserts that behavior (3 more in T3, As of ).
The snapshot half of #13474 is still in place, as you said. SubscriptionUsageCoordinator passes Infinity on Android, with a comment that Android scrolls the full list, and subscriptionUsageSnapshot.test.ts still expects every limit in that case. So the published snapshot has every row and the Compose layout drops them. #12046's description names expiry re-render and cold-start tap as the old behaviors expo-widgets doesn't cover, but doesn't mention the scrolling list, the header count, or Last checked.
Likely fix area
A maintainer will decide on the fix direction. LazyColumn is exported from @expo/ui/jetpack-compose at the pinned 58.0.11, which fits your suggestion. Whether it scrolls inside the single card Button still needs a device check.
Related
- #15225 (resize floor) and #15158 (picker preview) come from the same migration but are separate defects.
- Open PR #14158 still edits the deleted Kotlin module and conflicts.
- The two
bools.xmlfiles underapps/mobile/modules/t3-subscription-widgetare unreferenced now that #12046 deleted the receiver that used@bool/t3_subscription_widget_enabled. Removing them is cleanup, separate from restoring the list.