You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(signals): publish latest errors with their readers - #4705
While an action holds an update, latest(data) can display a successful proposal immediately but keep the old content when the same computation throws. Proposing removal of an enclosing Show, or adding identity memos, changes whether the error fallback appears. Repeated errors and recovery also disagree with their successful-value counterparts.
Preserve the selected lane when reading an errored lane memo and when converting that error into an Errored fallback. The fallback's error signal and recovery use that publication context too; the original error source remains the reset target. This reuses existing state and adds no node fields.
This follows D-41's value/error publication symmetry and the intent of #3886 / #4106. Five existing intermediate assertions intentionally change: errors from ahead computations now display where their successful values would. Their recovery assertions remain intact; ordinary readers still wait for the held update.
How did you test this change?
Based on next@45648f78.
Added 24 JSX timelines covering values/errors, sync/async answers, zero to two identity memos, retained/removing branches, a second error, pending recovery, and an ordinary reader alongside the ahead reader. Added reset, same-value recovery, fallback identity and cleanup coverage.
Signals suite: 6,759 passed, 2 skipped.
Client web suite: 1,779 passed, 1 skipped, combining the full run with a rerun of artifact-manifest checks after supplying missing generated declarations.
Signals dev/prod/observe builds, declaration generation, production purity checks, formatting, diff checks and generated rules index pass.
Tests used the native JSX compiler. Local web config supplies the installed jest-dom setup explicitly; dependencies use the checkout's required seroval 1.7.0. Existing unchanged web artifacts were supplied from the local baseline checkout. The complete SSR suite was not run.
Size — caps unchanged
Measured with the repository's Rolldown harness against next (the preceding 4fe75321 has identical runtime sources):
Scenario
Minified change
Brotli change
Ordinary core / store / until+refresh / simple render
0 B
0 B
isPending/latest
+32 B
+5 B
Hydrating app, no stores
+173 B
+71 B
CSR app with boundaries
+177 B
+79 B
The last two scenarios exceed their existing Brotli caps by 34 B and 57 B respectively, with real minified growth. This draft leaves those gates failing for maintainer review; it does not raise caps or claim performance improvements.
System calls cannot be simulated consistently and are left out of the measure. The reported value understates the real cost. Switch to the Walltime instrument to measure them.
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
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.
Summary
While an action holds an update,
latest(data)can display a successful proposal immediately but keep the old content when the same computation throws. Proposing removal of an enclosingShow, or adding identity memos, changes whether the error fallback appears. Repeated errors and recovery also disagree with their successful-value counterparts.Preserve the selected lane when reading an errored lane memo and when converting that error into an
Erroredfallback. The fallback's error signal and recovery use that publication context too; the original error source remains the reset target. This reuses existing state and adds no node fields.This follows D-41's value/error publication symmetry and the intent of #3886 / #4106. Five existing intermediate assertions intentionally change: errors from ahead computations now display where their successful values would. Their recovery assertions remain intact; ordinary readers still wait for the held update.
How did you test this change?
Based on
next@45648f78.Tests used the native JSX compiler. Local web config supplies the installed jest-dom setup explicitly; dependencies use the checkout's required seroval 1.7.0. Existing unchanged web artifacts were supplied from the local baseline checkout. The complete SSR suite was not run.
Size — caps unchanged
Measured with the repository's Rolldown harness against next (the preceding
4fe75321has identical runtime sources):The last two scenarios exceed their existing Brotli caps by 34 B and 57 B respectively, with real minified growth. This draft leaves those gates failing for maintainer review; it does not raise caps or claim performance improvements.