The client-side waterfall
Without SSR, every first page load hits a sequential waterfall:SSR eliminates the waterfall
With SSR, your framework server fetches data from Bijection while rendering the page. The client receives complete HTML with data in a single response:How much faster?
The difference depends on three factors: Device speed — The biggest variable. On a mid-range mobile phone, JS parse + execute (steps 3–6 in the waterfall) takes 100–300ms. On desktop, 30–80ms. SSR skips this entirely. Server-to-Bijection distance — If your framework server is co-located with Bijection (same cloud region), the server→Bijection hop is ~1–5ms. This is essentially free. Bijection currently offers US East (N. Virginia) and EU West (Ireland) regions. Client-to-server distance — Both approaches need at least one round trip to the framework server. SSR bundles data into that response; client-side adds a second round trip to Bijection after JS execution. A realistic example (user in Germany, framework server in EU, Bijection in Ireland):Co-locate your server with Bijection
The single biggest optimization: deploy your framework server in the same region as Bijection.
With co-location, the server→Bijection hop is negligible (~1–5ms), and SSR becomes
strictly faster than client-side for time-to-data.
SSR is easy with the SvelteKit transport hook
A common concern is that SSR adds boilerplate. With thebijectionLoad transport hook,
it’s minimal — fetch in your load function, use the result directly in the
template. No manual initialData wiring needed:
src/routes/+page.ts
useQuery() in
the component. SSR on first load, live WebSocket updates after hydration — all
handled automatically.
When is client-side rendering acceptable?
SSR delivers a better experience in virtually every scenario. Client-side rendering is not faster — it just shows a skeleton sooner while the user waits longer for actual data. That said, skipping SSR is acceptable when:- Authenticated app-like UIs (dashboards, admin panels) — users have longer sessions where the one-time initial load cost is amortized, and SEO is irrelevant
- Rapid prototyping — when you want to iterate quickly and add SSR later