fix(signals): keep latest readers out of loading lanes - #3294
fix(signals): keep latest readers out of loading lanes#3294javascript-unsafe wants to merge 1 commit into
Conversation
🦋 Changeset detectedLatest commit: 28816eb The changes in this PR will be included in the next version bump. This PR includes changesets to release 11 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
8a911a0 to
28816eb
Compare
|
|
The bug is not in the engine layer lanes, but in the component/application layer: the common owner structure generated byboundary+withDefaults (merge) causes the rendering of TabPanel to be merged into the held transition of Loading. This explains why engine level testing cannot detect it, while real apps (including merge props) can reproduce it. |
|
Thank you. I have verified the repair of this PR through rigorous A/B control experiments and confirmed that it is no op (invalid but no regression). Therefore, I am voluntarily closing this PR |
Summary
latest()readers could stay on an old value while an outer<Loading>boundary was waiting for several async memos.The problem was that the optimistic lane also adopted
latest()'s_latestValueComputedcompanion. That companion is a render reader, not async work that should block the reader. The fix stops adopting it, while keeping_pendingSignallane adoption unchanged.A regression test covers three async memos, a loading boundary, and three consecutive reloads.
Fixes #3289
How did you test?
pnpm buildpnpm testcd packages/signals && pnpm typesAll completed successfully. The commit hook's repository-wide formatter step still fails on existing JSX fixture syntax in
packages/babel-plugin/test/*fixtures*/insertChildren; no fixture files are part of this PR.