Repository navigation
Conversation
Counts instead of timings, so they hold on shared CI runners: - Fibers and DOM nodes per item, with a ceiling a little above today's counts (rich item 336 / 34, simple 89 / 12). The test file says how to move a ceiling. - A parent re-render and sorting call no item render function while the render functions, `textValue` and `onAction` are stable. `countFibers` (src/lib/dev) walks the fiber tree of a `render()` container, reduced from the perf harness in #3524. Verified by breaking each property: +5 fibers or +2 DOM nodes per Heading fail both ceilings; an Item memo that never holds fails both render-count tests (20 and 40 calls). Part of #3528 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ocks across re-renders A parent re-render with equal props must keep the DOM nodes, as the Markdown (3808e79) and CodeEditor (#3467) tests already require: - Table: rows and cells - Select, closed: the trigger button and its field - Markdown: the CodeMirror editor of a code block Verified by forcing a remount (a changing `key` in Table, Select and CodeEditor) and by un-memoizing Markdown's renderers: each test fails. Part of #3528 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Item render functions stay uncalled on a parent re-render and on a sort, but a Profiler around each item shows all 20 subtrees commit anyway: the rebuilt react-aria collection hands every GridListItem a new ListState context (#3528). Both cases are `test.fails` until that cascade is gone. An update next to the list updates no item, which shows the probe can read 0. Updates are now triggered from outside instead of by clicking: a click changes react-aria's global interaction modality, and every item follows that, so a clicked re-render reported 20 items even for state the list never sees. Part of #3528 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Coverage Report for ./packages/components/
File CoverageNo changed files found. |
Contributor
🚀 Preview DeploymentPreview environments are ready:
Images:
|
…ohr-9e9dfe # Conflicts: # packages/components/src/components/Select/Select.browser.test.tsx
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
Turns findings of the perf harness (#3524) into ordinary browser tests. They count, never time, so they hold on shared CI runners and run in the existing
browserjob.List (
List.renderCost.browser.test.tsx)textValueandonAction, neither a parent re-render nor a sort calls an item render function.Profileraround each item shows whether its subtree commits, with or without a render-function call.test.fails. Drop.failsonce the cascade is gone.DOM identity on a re-render with equal props, following the Markdown (3808e79) and CodeEditor (#3467) tests:
countFibers(container)insrc/lib/dev/fiberTree.tsis reduced from the harness's fiber walker, because #3524 is not merged.How the tests were verified
Each guarded property was broken temporarily, and its test failed:
falseHeadingHeadingkey={Math.random()}on the Table scroll area, Select'sAria.Button,CodeMirrorMath.random()in the deps of Markdown's renderer memotest.fails→testexpected 20 to be +0WebKit: 3 runs in a row are green. Firefox does not start locally (macOS 27), so the non-blocking Firefox job is the first check of whether react-aria renders a different count there.
Issue
Part of #3528
Checklist
Closes #…(finishes none)pnpm lintis clean and the touched browser tests pass (WebKit)🤖 Generated with Claude Code