• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

solidjs / solid / 35899635677
74%
main: 89%

Build:
Build:
LAST BUILD BRANCH: fix/optimistic-undeclared-flight-owner
DEFAULT BRANCH: main
Ran 23 Sep 2026 06:08PM UTC
Jobs 1
Files 8
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

23 Sep 2026 06:01PM UTC coverage: 72.908% (-0.9%) from 73.766%
35899635677

push

github

web-flow
fix(hydration): null owner takes the transparent path; hybrid latches for non-stream shapes (#3609) (#3616)

* fix(hydration): a null or id-less owner takes the transparent path in every facade (#3609)

While hydrating, createMemo / function-form createSignal (and the
optimistic, store, projection, error-boundary, loading-boundary and effect
facades) peeked the next child id off getOwner()!. With no owner
(runWithOwner(null, …)) that was childId(null) → TypeError (reading
'_config') and REACTIVITY_HALTED; under a detached root without an id it
was "Cannot get child id from owner without an id".

An ownerless or id-less node has no id counter to consume, so there is
nothing to hydrate positionally — the server serializes nothing for it
either (its owner.id guard). One predicate, noHydrationId() (the shape
lazyHydrationLookup already used), short-circuits every facade to the core
primitive, exactly like transparent: true. The check lives in the shared
hydrateSignalLike / hydrateStoreLike bodies (covering the optimistic and
projection wrappers that reach them through the adapter slots) and at the
boundary/effect facades.

hydrateSignalLike also honors options.transparent now, so function-form
createSignal / createOptimistic no longer peek (and adopt) the NEXT
sibling's serialized slot when marked transparent — MemoOptions.transparent
already documented that they compute live.

useHead's explicit { transparent: true } from #3600 stays as documentation
of intent.

Co-authored-by: Claude via Cursor <noreply@cursor.com>

* fix(hydration): hybrid latches for non-stream shapes — stores match memos

Maintainer ruling: `hybrid` is only for streams realistically. For a sync
or promise-shaped compute, `ssrSource: "hybrid"` now behaves exactly like
`"server"` in the store adapter (function-form createStore,
createOptimisticStore, createProjection): the serialized answer is adopted
and the compute does not re-run on the client — no refetch — until a
dependency chang... (continued)

595 of 878 branches covered (67.77%)

Branch coverage included in aggregate %.

18 of 18 new or added lines in 1 file covered. (100.0%)

13 existing lines in 1 file now uncovered.

869 of 1130 relevant lines covered (76.9%)

24.82 hits per line

Coverage Regressions

Lines Coverage ∆ File
13
74.86
-1.27% packages/solid/src/client/hydration.ts
Jobs
ID Job ID Ran Files Coverage
1 35899635677.1 23 Sep 2026 06:07PM UTC 8
72.91
GitHub Action Run
Source Files on build 35899635677
  • Tree
  • List 8
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #35899635677
  • b149cd25 on github
  • Prev Build on next (#35894861247)
  • Next Build on next (#35901740644)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc