`."
}
},
{
"@type": "Question",
"name": "Is this the same as prerendering?",
"acceptedAnswer": {
"@type": "Answer",
"text": "It is a lighter-weight variant. Full prerendering typically renders each route’s actual React output to static HTML; this approach instead injects a lightweight static shell (an h1, a lead paragraph, and nav links) plus complete metadata, while the real interactive page still hydrates from React on load."
}
},
{
"@type": "Question",
"name": "What is the biggest risk with this approach?",
"acceptedAnswer": {
"@type": "Answer",
"text": "A route missing from the metadata map silently ships the homepage’s HTML at that URL instead of its own - the same failure mode that once affected this exact site’s `/mcp-servers` route. The fix is asserting metadata coverage at build time rather than trusting the browser to look correct."
}
}
]
}
SEO and GEO for a Vite SPA Without SSR
A Vite single-page app has no per-route HTML by default, which used to mean either weak SEO or a full migration to a server-rendered framework. This guide documents a working middle path: a post-build script that walks the output directory and injects route-specific meta tags, hreflang, and JSON-LD directly into static HTML files, before any crawler runs JavaScript.