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

solidjs / solid / 34730686986
72%
main: 89%

Build:
Build:
LAST BUILD BRANCH: fix/memo-lane-posture-3442
DEFAULT BRANCH: main
Ran 13 Sep 2026 01:35AM UTC
Jobs 1
Files 6
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

13 Sep 2026 01:30AM UTC coverage: 71.842%. Remained the same
34730686986

push

github

web-flow
fix(web): decide SSR text separators on resolved values (#3383) (#3394)

* fix(web): decide SSR text separators on resolved values (#3383)

`resolveSSRNode` and `tryResolveString` emitted `<!--!$-->` between two
adjacent array items whenever both had a non-object static type — which
counted every function. Two neighbouring memos or components were
separated as if they were text even when both produced elements, so a
list of `Dynamic`, `Show`, or wrapper-library instances paid eight bytes
and a comment node per item, and the client removed each one on hydrate.

The client claims a multi-insert's nodes positionally after flattening
its value, so what matters is what each item RESOLVES to: two texts must
land in distinct text nodes; elements and template markup never need a
separator. Track "last appended was text" through the walk (`ssrTextTail`,
maintained at the leaves; arrays and functions pass it through; an
unresolved async hole still counts as text on both sides) and reset it
per independent region via the exported wrappers.

Deciding on the resolved value also separates text the old rule merged:
across a dropped nullish/boolean item (`[7, null, "x"]` → `7x`, one node)
and across a nested array boundary (`["a", ["b"]]` → `ab`). Both were
latent hydration mismatches — the second text item claimed nothing and
materialized a client node on the first update.

Parity harness: five scenarios covering the lists, the null gap, nested
arrays, and mixed memo results, plus two invariants — `adoptAll` (every
node is a server node after hydration AND after the update pass; a failed
text claim is invisible to textContent until the update) and
`noSeparators`. Against the previous walker, the server side emits
separators for both element lists and the hydrate side reports
`client-created text "x"` / `"b"` after update.

Co-authored-by: Cursor <cursoragent@cursor.com>

* test(web): type the memo-returning test components as JSX.Element

test-types failed on next's... (continued)

519 of 790 branches covered (65.7%)

Branch coverage included in aggregate %.

772 of 1007 relevant lines covered (76.66%)

15.02 hits per line

Jobs
ID Job ID Ran Files Coverage
1 34730686986.1 13 Sep 2026 01:35AM UTC 6
71.84
GitHub Action Run
Source Files on build 34730686986
  • Tree
  • List 6
  • 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 #34730686986
  • 084e6211 on github
  • Prev Build on next (#34729625842)
  • Next Build on next (#34738784487)
  • 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