Skip to content

feat(signals): ABANDONED_FLIGHTS, FALLBACK_FLASH, STACKED_HOLDS as findings - #3608

Merged
ryansolid merged 2 commits into
nextfrom
feat/feedback-findings
Sep 24, 2026
Merged

ryansolid merged 2 commits into
nextfrom
feat/feedback-findings

Conversation

@ryansolid

Copy link
Copy Markdown
Member

Item 4 of documentation/plans/responsiveness-findings-plan.md.

feedback() already counts abandoned flights per source, fallback flashes per boundary and holds per interaction — but only for a consumer that imports the fold and reads the tables afterwards. These are the same facts emitted on the diagnostics channel at a threshold, while they happen, so an issue tracker hears them without shipping the fold.

  • ABANDONED_FLIGHTS (warn) — one async source abandoned count flights within windowMs (defaults 3 / 1000 ms), each superseded by the next before it landed: the request-per-keystroke signature. Once per window per source; the window is an engine WeakMap, so the node carries nothing.
  • FALLBACK_FLASH (info) — a Loading fallback displayed and hidden inside FALLBACK_FLASH_MS (150 ms, now exported and shared with the fold). Judged at hide on the display clock the fallback record and feedback().fallbacks[].flashes already use; the open is kept for the check even with no fold and no record listener.
  • STACKED_HOLDS (warn) — count or more interactions (default 3) were waiting in one hold when it committed. Counted over the open interactions at hold settle, before settleInteractionsHeld releases them; data is the hold's plus interactions.

Options

abandonedFlights: { count, windowMs } | false, fallbackFlashes: boolean, stackedHolds: { count } | false — merged most-demanding like the rest (demanding handles them generically: count min, windowMs max, boolean OR). Not under checks: these are verdicts on records, not cost accounting, same as holds/longHolds.

Public API

  • DiagnosticCode gains "ABANDONED_FLIGHTS", "FALLBACK_FLASH", "STACKED_HOLDS".
  • AttributionOptions gains the three options above.
  • FALLBACK_FLASH_MS exported from solid-js/attribution (was a private constant in the feedback fold).

Size

Engine +756 B (29.00 → 29.80 KB), mostly the three repair texts. The tier moved +35 B with byte-count-identical core artifacts: the package-wide terser nameCache runs files in sorted order and core/attribution.js precedes core/core.js, so any change to _-property usage in the engine reassigns the short names the core's files receive — brotli drift, not code. Noted in the cap (17.45 → 17.50 KB); worth knowing for every engine PR. #3604 and #3607 also move the engine cap; whichever merges last re-measures.

Tests: 6 new (fires-once-per-window / below-count-and-disabled for each). signals 3602 / web 898 / solid 685 green.

@changeset-bot

changeset-bot Bot commented Sep 23, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 3d5cd0c

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 11 packages
Name Type
@solidjs/signals Patch
test-integration Patch
@solidjs/web Patch
@solidjs/babel-plugin Patch
@solidjs/compiler Patch
@solidjs/diagnostics Patch
@solidjs/element Patch
@solidjs/h Patch
@solidjs/html Patch
solid-js Patch
@solidjs/universal Patch

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

@coveralls

coveralls commented Sep 23, 2026

Copy link
Copy Markdown

Coverage Report for CI Build 35963056164

Coverage remained the same at 73.134%

Details

  • Coverage remained the same as the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • No coverage regressions found.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

No coverage regressions found.


Coverage Stats

Coverage Status
Relevant Lines: 1142
Covered Lines: 883
Line Coverage: 77.32%
Relevant Branches: 894
Covered Branches: 606
Branch Coverage: 67.79%
Branches in Coverage %: Yes
Coverage Strength: 25.18 hits per line

💛 - Coveralls

@codspeed

codspeed Bot commented Sep 23, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 176 untouched benchmarks
⏩ 3 skipped benchmarks1


Comparing feat/feedback-findings (3d5cd0c) with next (886850b)

Open in CodSpeed

Footnotes

  1. 3 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

ryansolid and others added 2 commits September 23, 2026 23:07
… feedback-table facts as findings

`feedback()` already counted abandoned flights per source, fallback flashes
per boundary and holds per interaction, but only for a consumer that
imported the fold and read the tables. These are the same facts on the
diagnostics channel at a threshold, as they happen:

- ABANDONED_FLIGHTS (warn): one async source abandoned `count` flights in
  `windowMs` (3 / 1000ms), each superseded by the next before it landed —
  the request-per-keystroke signature. Once per window per source; the
  window lives in an engine WeakMap, not on the node.
- FALLBACK_FLASH (info): a Loading fallback displayed and hidden inside
  FALLBACK_FLASH_MS (150ms, now exported and shared with the fold), judged
  at hide on the same display clock the `fallback` record uses. The open
  is kept for the check even with no fold and no listener.
- STACKED_HOLDS (warn): `count` or more interactions (3) waiting in one
  hold when it commits — the person kept clicking or typing while the
  first answer was in the air. Counted over the open interactions at hold
  settle, before they are released.

Three options (`abandonedFlights`, `fallbackFlashes`, `stackedHolds`)
merged most-demanding like the rest; none is under `checks`, since these
are verdicts on records, not cost accounting.

Size: engine +756 B (cap 29.00 -> 29.80 KB); the tier moved 35 B with
byte-count-identical core artifacts — the package-wide property mangler
reassigns the core's short names whenever the engine's `_`-property usage
changes — noted as drift (cap 17.45 -> 17.50 KB).

Co-Authored-By: Claude via Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…0 -> 31.45 KB

Co-authored-by: Claude via Cursor <noreply@cursor.com>
@ryansolid
ryansolid force-pushed the feat/feedback-findings branch from f94b8d2 to 3d5cd0c Compare September 24, 2026 06:08
@ryansolid
ryansolid merged commit 873187b into next Sep 24, 2026
6 of 7 checks passed
@ryansolid
ryansolid deleted the feat/feedback-findings branch September 24, 2026 06:20
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.

2 participants