feat(test-app): add a Bluesky-depth heavy feed screen

Merged
TH
3d ago
+407-12

Summary

Adds a JavaScript-only Heavy feed screen to the test app (Settings โ†’ Open heavy feed, open-heavy-feed). It reproduces the Bluesky 1.136 home feed shape: 30 nested containers, a virtualized list, and composite posts with image, link, quote, and quote-with-media embeds. Every level opts out of view flattening. The native tree is deeper than 65 levels. 6 files, no native change, so CI repacks the cached Release build.

Layer 1 of 3 for the nightly iOS perf suite (#1781 A3 un-park). The suite drives this screen.

Validation

Tested at d17b8ead56 (fixture JS equal to the measured build) on a dedicated iPhone 17 Pro simulator (iOS 27.0, Xcode 27.1) with the cached Release fixture repacked:

  • snapshot --raw: 308 nodes, max depth 64 (65 levels), truncated, served by the simulator AX bridge in ~230 ms.
  • Pinned XCTest tree backend: kAXErrorIllegalArgument, recovered by private AX after ~4.8 s, capped at depth 56 (private-ax/recovered/ax-rejected), 3/3 samples. This matches Bluesky.
  • On this screen, XCTest element queries fail, so longpress, swipe, and in-app back fail (see layer 2).
  • pnpm test-app:typecheck and oxlint pass. Gate receipt: pnpm check:affected --run --head 60cf336129 (stack head, includes this layer): passed, exactCommit: true; FAIL-OPEN full set, every local check passed; native, device, and coverage lanes are GitHub-authoritative..

CI: perf-nightly run 39679264668 (iOS 26.2, hosted M1) reproduced the same shape: raw 305 nodes at depth 64, pinned tree backend recovered by private AX after 5.2 s with ax-rejected.

๐Ÿค– Generated with Claude Code