JS: on
Streaming… waiting for the Suspense boundary to resolve. Today a <preact-island> patch replaces this; DPU experiments target that swap.

Suspense streaming

Edge cases

Popcorning plus the HTML, SVG, MathML, and style completions that DPU struggles with. Left column is the live stream; right column is the settled target.

Popcorning

Sixteen sibling boundaries with staggered delays. Completions should arrive independently — kernels pop in out of source order, not as one swap.

Out of order

Expected: All 16 cells filled, labeled 0–15. They appear one-by-one as each delay resolves.

Streamed
Expected result
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

HTML — DPU works

A pending HTML shell, then a completion that swaps fallback for template content. This is the baseline that should succeed.

Should work

Expected: Fallback removed. Visible text is “Done — declarative DPU worked”.

Streamed

Loading…

Expected result

Done — declarative DPU worked

SVG — namespace

The boundary sits inside <svg>. Declarative <template for> is HTML-namespaced, so a revealed <circle> may not be an SVGElement and may not paint.

May fail

Expected: A tomato circle paints in the dashed frame (real SVG circle, svg namespace).

Streamed
Loading…
Expected result

MathML — namespace

Same insertion issue: template content is HTML, so <mi>/<mo>/<mn> may lose the MathML namespace when placed into <math>.

May fail

Expected: The formula renders as x + 1 using MathML, not as unmatched HTML text.

Streamed
Loading…
Expected result
x+1

Styles — hoist

Declarative completion only moves nodes. It does not run completeBoundaryWithStyles, so <style> may stay inline instead of hoisting to <head>.

May fail

Expected: “Styled hello” is tomato and bold. Ideally the <style> is in <head>, not left in the boundary.

Streamed

Loading…

Expected result

Styled hello