RENDERING

Our SPA renders blank for search bots.

React, Vue, Next.js client-side, Angular — if your content needs JS to render, most crawlers see <div id="root"></div> and move on.

The problem

What's actually happening

Your page sends a tiny HTML shell — head tags, an empty root div, a bundle of JavaScript. The JS executes in a real browser, fetches data, and paints the actual content. Users see a fast, modern app.

Crawlers that don't execute JavaScript see the shell. Most AI crawlers fall in this category. Even Googlebot, which does execute JS, defers rendering for hours or days — long enough for your content to miss the indexing window. Bingbot is hit-or-miss. Smaller search engines and AI agents rarely bother.

The result: your competitors with server-rendered HTML get crawled and cited. Your single-page app, with the same content, gets a blank page in the index.

~80%

of AI crawlers don't execute JavaScript

Days

Googlebot can defer JS rendering

Zero

AI assistants that wait for hydration

The fix

How Wrenda fixes it

Pre-render in a real headless browser, cache the result, serve to every crawler that can't run JS. Humans still get your fast SPA.

  1. 01Bot hits a URL. Wrenda matches the user agent, decides the action is pre-render, and spins up a headless browser session.
  2. 02The browser loads the page, executes your JS, waits for network idle, captures the fully-rendered DOM. Per-domain configurable: viewport, wait time, custom JS injection.
  3. 03Rendered HTML is cached at the edge with TTLs you control. Subsequent crawler visits hit the cache — sub-50ms response, no re-render.
  4. 04Real users still get your original SPA. The pre-rendered version is only served when the user agent matches a search bot.
The outcome

What changes after you install

No SSR migration required

Keep your client-side React/Vue/Next.js. Wrenda renders at the proxy layer.

Sub-50ms responses to crawlers

Cached rendered HTML served from the edge after the first render.

Per-domain rendering config

Mobile vs desktop viewport, wait conditions, custom JS injection &mdash; tuned per site.

Real users see no change

Browsers get your normal SPA. Only crawlers see the pre-rendered version.

Get crawled

Make your SPA visible to AI.

No SSR rewrite. No code changes. The proxy renders, caches, and serves.

Start Free Trial

14-day free trial — No credit card required