Server-Side Rendering

Berrry SSR

Instant content. Zero config. Pure magic.

icon< 0ms load time
iconFull SEO
iconZero setup

See the Difference

Toggle to compare loading behavior

Without SSR
yourapp.berrry.app
<div id="root"></div>
iconTime to content: 3-5 seconds
With SSR
yourapp.berrry.app
iconTime to content: < 250ms

How It Works

Your React app is rendered on our servers before being sent to users

icon
User Browser
icon
Berrry Server
icon
QuickJS Sandbox
icon
Prerendered HTML
icon
Instant Display
  1. iconUser requests your app → Berrry server receives the request
  2. iconYour React code runs in a secure QuickJS sandbox
  3. iconReactDOMServer.renderToString() generates full HTML
  4. iconPre-rendered HTML sent to browser → Content visible instantly!
  5. iconReact hydrates in background → App becomes fully interactive

Benefits for Berrry Users

Everything you get, automatically, for free

icon

Instant First Paint

Users see your content immediately, not a blank page with a loading spinner. First impressions matter.

icon

Better SEO

Google and Bing can crawl your full HTML content, leading to better search rankings and discoverability.

icon

Social Previews

Twitter, Discord, and other platforms show rich previews with your actual content in share cards.

icon

Slow Network Friendly

Content is visible while JavaScript downloads, perfect for users on 3G or spotty connections.

icon

Zero Configuration

SSR works automatically for all React apps. No setup, no config files, no deployment changes needed.

icon

Graceful Fallback

If SSR encounters any issues, your app still works perfectly in traditional client-side mode.

Under the Hood

For the technically curious

Your app code runs in an isolated QuickJS environment compiled to WebAssembly. This provides a secure sandbox that can't access the file system or network, protecting both our servers and your code.
Berrry automatically detects React apps and enables SSR without any configuration. We analyze your code structure and dependencies to determine the best rendering strategy.
Our custom hydration adapter ensures smooth handoff between server-rendered HTML and client-side React. State is preserved and event handlers attach seamlessly.
Rendered HTML is cached for 1 hour using an LRU (Least Recently Used) cache strategy. This means fast loads for repeat visitors while ensuring updates propagate within an hour.
Dependencies are loaded from ESM.sh, a high-performance CDN that serves ES modules. This enables on-demand module loading without bundling overhead.
icon

"Why is this blank? Is it broken?"

"Why doesn't Google find my app?"

— Before SSR
icon

"Wow, instant!"

"My app ranks on Google now!"

— After SSR
iconTL;DR

SSR makes your Berrry apps load instantly, rank on Google, and look great in social previews — all automatically, with zero extra work!