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

solidjs / solid / 35798385589
74%
main: 89%

Build:
Build:
LAST BUILD BRANCH: next
DEFAULT BRANCH: main
Ran 22 Sep 2026 11:44PM 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

22 Sep 2026 11:38PM UTC coverage: 72.852%. Remained the same
35798385589

push

github

web-flow
fix(ssr): contain post-render and bare-child async rejections in renderToString/renderToStream (#3570, #3569) (#3594)

* fix(solid): observe the server async deferred so a post-render rejection cannot exit the process (#3570)

Every server async flight (memo, store, projection, async generator)
settles an internal deferred from `createDeferredPromise`, and
`settleServerAsync` settles it unconditionally so a serialized flight
lands whatever the node's lifetime. Under `renderToString` there is no
serialization channel (`ctx.async` is unset) and the sync `<Loading>`
path never awaits the NotReadyError's source; a `<NoHydration>` zone or
an unread source has no consumer either. A rejection landing after the
HTML was returned therefore rejected a promise with zero subscribers —
an `unhandledRejection` that took Node down with exit code 1, and no
`<Errored>` could see it because the render was over.

Observe the deferred at creation. Real subscribers still see the
rejection exactly as before (a no-op rejection arm is a separate derived
promise). The other internal promises on the path (`subscribePendingRetry`,
the user promise's `.then(v, e)`, the abandoned duplicate flight, the
iterator close) were already observed.

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

* fix(ssr): a rejecting direct child of <Loading> no longer hangs or crashes renderToStream (#3569)

Two independent layers, each verified on its own.

Routing (solid-js, `ssrLoadingBoundary.runDiscovery`): a template hole
that throws is routed through `ssrHandleError` to the boundary's own
ErrorContext handler, which — once the fragment is registered — owns the
error: `<key>_fr` rejects and the client re-renders the subtree
(`handling: "client"`, the #2997 verdict). A bare child
(`<Loading>{data()}</Loading>`, or a component whose return IS the read)
threw straight out of `fn()` and bypassed that handler, so
`finalizeError` saw an uncontained error and, pre-flush, failed the whole
reques... (continued)

555 of 824 branches covered (67.35%)

Branch coverage included in aggregate %.

827 of 1073 relevant lines covered (77.07%)

17.56 hits per line

Jobs
ID Job ID Ran Files Coverage
1 35798385589.1 22 Sep 2026 11:44PM UTC 8
72.85
GitHub Action Run
Source Files on build 35798385589
  • Tree
  • List 8
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #35798385589
  • f41c6a4f on github
  • Prev Build on next (#35797586041)
  • Next Build on next (#35800446262)
  • 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