Skip to content

WIP: try legends on native again#29361

Open
chrisnojima wants to merge 3 commits into
masterfrom
nojima/HOTPOT-legends-310
Open

WIP: try legends on native again#29361
chrisnojima wants to merge 3 commits into
masterfrom
nojima/HOTPOT-legends-310

Conversation

@chrisnojima

Copy link
Copy Markdown
Contributor

No description provided.

…g flash, late-growth parking

Bump @legendapp/list 3.0.6 -> 3.1.0 and restore the native thread list to
LegendList (un-revert 006c0aa). Regenerate the web ResizeObserver-batching
patch for 3.1.0. Leverage 3.1.0 APIs to fix the artifacts that caused the prior
revert:

- Prepend jump-to-bottom: maintainScrollAtEndThreshold 0.5 -> default 0.1. The
  wide window made the top of a short thread count as "near end", so loading
  older messages (onStartReached prepend) misfired scrollToEnd. Default threshold
  re-pins only true appends; prepends hold position via maintainVisibleContentPosition.

- Late row-growth parking (flip result, reactions, unfurls settling after first
  paint left the thread above the newest message): new useSyncRowLayout hook calls
  3.1.0 useSyncLayout() to flush the row measure synchronously on content change,
  so the list re-pins on the same frame. Wired in wrapper (reactions/unfurl card),
  coinflip (flip status), and unfurl image (late dimensions). Replaces the need for
  the wide threshold. Noops on desktop / old architecture.

- Fast-fling cost: experimental_adaptiveRender emits a velocity-driven light/normal
  signal; rows read it via useAdaptiveRender and disable the per-row swipe pan
  handlers during fast scroll. SwipeableRow gains an `enabled` prop that toggles
  panHandlers on the same Animated.View, so the row tree stays stable across the
  swap (a structural swap would remount children and flash all images on fling-stop).

Remove the temporary LISTDBG instrumentation. Desktop continues to use LegendList.
- dataKey replaces key remount on conversation switch (desktop +
  native); 3.3.0 resets layout readiness and re-runs the initial
  scroll target per dataset, so switches reuse the mounted list and
  recycled container pool
- desktop explicit maintainScrollAtEnd.on config lost footer-resize
  re-pinning in 3.1.1 unless footerLayout is opted in; add it
@chrisnojima chrisnojima force-pushed the nojima/HOTPOT-legends-310 branch from fea1104 to 8f34333 Compare July 2, 2026 20:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant