Proxying (plain page)

GitHub

Same islands, no LiveView

This is the plain-page twin of /proxying: the exact same two islands, the same modulepreload, the same load-stats panel — but rendered by a plain controller, not a LiveView. Open both and compare the first render delta. It's a live illustration of when an island paints.

LiveView (/proxying)

The first HTTP hit is a full server render — you see the page and the island's placeholder at once. The Svelte app only mounts when the KeenApp hook fires, which can't happen until the socket connects and the view mounts. That connect round-trip is the gap.

Plain page (this page)

Same full server render + placeholder, but no socket phase: mountStatic() swaps the placeholder for the island the instant the deferred app.js parses. Same app, same bytes — it just mounts with live: null.

Neither page ever shows a blank screen — the shell and placeholder are server-rendered. What differs is only when the island content appears.

:direct browser → CDN
:proxy browser → your app → CDN

Live load statistics (plain page)

Measured exactly like the LiveView page — the Performance API for request/load, a MutationObserver for first render. Times are milliseconds since the page started loading. Reload to watch them again.