Guide SvelteKit Deployment SEO: Adapters, Prerendering, et Edge Rendu
SvelteKit's adapter et per-route prerender paramètres decide où et quand votre pages rendre — et que drives TTFB, LCP, et budget d’exploration. A deployment-focused deep dive: choosing adapter-static/node/vercel/cloudflare/netlify, prerender = vrai/faux/'auto', edge-runtime constraints, et building sitemap.xml et robots.txt.
SvelteKit's adapter et per-route prerender paramètre decide où et quand une page renders — static HTML à construire temps, SSR on a serveur, or SSR à le edge — et que décision drives TTFB, qui feeds LCP et explorer capacity. Pick adapter-static pour pure contenu sites, a node/vercel/cloudflare adapter avec per-route prerender pour mixed contenu-plus-app sites, et an edge adapter quand mondial TTFB matters (accepting cold commence et aucun Node fs). prerender = 'auto' est le mixed-site outil. Edge runtimes ne peut pas lire le filesystem. Et SvelteKit generates aucun sitemap.xml or robots.txt — vous construire ceux as +serveur.js endpoints, avec le stratégie selon votre adapter.
TL;DR — SvelteKit déjà renders votre pages on le serveur — que partie est handled. Ce page est à propos de le suivant décision: comment votre site obtient construit et deployed. An adapter packages votre SvelteKit app pour a host (a static fichier host, a Node serveur, or a service comme Vercel or Cloudflare), et a per-page prerender paramètre decides si une page est turned dans a plain HTML fichier ahead de temps or rendu fresh on chaque visit. Ceux deux choices decide comment rapide robots d’exploration obtenir votre HTML — et SvelteKit ne va pas faire votre sitemap or robots.txt, donc vous ont à ajouter ceux yourself.
Ce que an adapter is (in plain terms)
Si vous avez déjà construit a SvelteKit site, vous know il sends réel HTML à le navigateur — le contenu est là avant quelconque JavaScript exécute. Bon. c’est le difficile SEO problème déjà solved (et si il n’est pas solved pour vous yet, le SvelteKit fundamentals article dans ce même section covers le rendu modes et le “empty shell” trap vous vouloir à éviter premier).
An adapter est le petit plugin que takes votre finished SvelteKit construire et turns il dans quelque chose a spécifique host peut exécuter. Preuve à l’appui de cette affirmation SvelteKit adapters transform a built application for deployment to a particular environment. Portée : SvelteKit adapters. Niveau de confiance : élevé · Vérifié : SvelteKit: Adapters Même site, différent package:
adapter-staticturns chaque page dans a plain HTML fichier, construit une fois. Great pour a blog, docs, or a marketing site que ne fait pas modifier per visitor.adapter-nodewraps votre app dans a Node.js serveur vous exécuter yourself.adapter-vercel,adapter-netlify,adapter-cloudflarepackage il pour ceux hosting services, qui rendre pages on demand — parfois on serveurs “at the edge,” physically fermer à votre visitors.
Le contenu est identical dans tout cas. Ce que changements est quand le HTML est fait (ahead de temps, or on chaque requête) et où (un serveur, or a mondial network).
Pourquoi ce is an SEO decision, pas simplement a tech un
Le principal chose: speed. Une page c’est déjà a static fichier charge presque instantly. Une page que a à être construit on le serveur takes a moment. Et Google a said plainly que si votre site “responds quickly pour a pendant que, le limite goes up, meaning plus connections peut être utilisé à explorer. Si le site slows bas… le limite goes bas et Google explore moins.” Donc a lent deployment ne fait pas simplement annoy utilisateurs — il peut signifier Google lit moins de votre site.
«## The simple version of the decision » (Traduction) (Résumé en français de la section onze, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«- A content site (blog, docs, marketing) → use adapter-static and
prerender everything. Fastest possible, nothing to break.
» (Traduction) (Résumé en français de la section douze, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«- A content site with a few dynamic bits (search, comments) → use a server
adapter (node/vercel/cloudflare) and mark your content pages
prerender = true, leaving the dynamic bits to render on request.
» (Traduction) (Résumé en français de la section douze, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.)
«- An app or dashboard with logged-in, personalized pages → render on the
server (SSR), prerender only the public marketing pages.
» (Traduction) (Résumé en français de la section douze, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.)
«## Don’t forget the two files SvelteKit won’t make for you » (Traduction) (Résumé en français de la section treize, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«SvelteKit doesn’t generate a sitemap.xml or a robots.txt automatically. You
add them yourself — usually as a small endpoint file (sitemap.xml/+server.js)
and either a file in your static/ folder or another endpoint for
robots.txt. Preuve à l’appui de cette affirmation SvelteKit can serve static assets from its static directory and create custom responses with +server route files. Portée : Mechanisms for robots.txt and sitemap.xml; files are not generated automatically. Niveau de confiance : élevé · Vérifié : SvelteKit: Project structure SvelteKit: Routing It’s easy to forget because most frameworks that render HTML for
you feel “complete.” These two aren’t.
» (Traduction) (Résumé en français de la section quatorze, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
Vouloir le deeper version — ce que chaque adapter fait à rendu, comment
prerender = 'auto' handles a mixed site, pourquoi edge functions ne peut pas lire fichiers,
et comment le sitemap stratégie changements avec votre adapter? Switch à le
Avancé tab.
TL;DR — Le adapter ne fait pas modifier ce que SvelteKit renders — il changements où et quand: construire-time static (
adapter-static), requête-time on a serveur vous exécuter (adapter-node), or requête-time on serverless/edge functions (adapter-vercel/-netlify/-cloudflare). Per-routeprerender = trueconstruit static HTML et drops le route depuis le dynamic manifest;prerender = 'auto'prerenders et garde il dans le manifest — le outil pour mixed/blog/[slug]sites. Edge runtimes exécuter on V8 isolates: aucun Nodefs, et cold commence hurt TTFB, qui feeds LCP et (per Google’s explorer-budget doc) explorer capacity. SvelteKit generates aucun sitemap.xml or robots.txt — construire les as+server.jsendpoints, et remarque le stratégie dépend on le adapter. Ce est a narrower, deployment-focused companion à le SvelteKit SEO fundamentals article dans ce section; Je assume vous déjà know SvelteKit est SSR-par-default et ne va pas re-litigate que ici.
The un idea que rend tout of ce click
Le adapter fait pas modifier ce que renders. Il changements où et quand.
c’est le entier chose. Le SvelteKit docs put il precisely: adapters “prendre le
construit app as entrée et generate sortie pour deployment.” Preuve à l’appui de cette affirmation SvelteKit adapters take the built application as input and generate deployment-specific output. Portée : Deployment output; adapter choice can still constrain supported runtime features. Niveau de confiance : élevé · Vérifié : SvelteKit: Adapters Votre components, votre
load functions, votre <svelte:head> metadata — identical à travers chaque adapter.
Ce que differs est:
- Quand le HTML est produced: à construire temps (static/prerendered) or à requête temps (SSR on a serveur, serverless function, or edge function).
- Où c’est produced: on a unique origin serveur, on a regional serverless function, or on an edge network fermer à le visitor.
Everything ci-dessous is a consequence of ceux two axes.
Pourquoi deployment choices sont SEO choices
Le chain est court et well-documented: TTFB → LCP → explorer capacity.
Temps à premier byte est comment long le host takes à commencer sending la réponse. A prerendered fichier servi depuis a CDN cache a a near-zero TTFB. A serveur que a à rendre lune page a a plus élevé un. A cold-starting serverless or edge function peut ont a beaucoup plus élevé un on le premier hit. TTFB est a direct entrée à Largest Contentful Paint — vous pouvez’t paint ce que vous haven’t reçu — et LCP est a Core Web Vitals signal.
«The crawl side is where Google is most explicit. From the crawl-budget documentation: “If the site responds quickly for a while, the limit goes up, meaning more connections can be used to crawl. If the site slows down or responds with server errors, the limit goes down and Google crawls less.” And the best-practice line: “Make your pages efficient to load. If Google can load and render your pages faster, we might be able to read more content from your site.” A cold-starting edge function that’s slow to respond is subject to the same dynamic as a slow origin server. » (Traduction) (Résumé en français de la section vingt-six, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«One honesty note up front: Google publishes no SvelteKit-specific guidance.
There’s no doc or Search Off the Record episode naming SvelteKit adapters,
prerender = 'auto', or edge cold starts. What I’m doing here is applying
Google’s general rendering and crawl-budget guidance to SvelteKit’s specific
mechanics — not quoting a rep who commented on SvelteKit, because none has. The
Google framing that “server-side or pre-rendering is still a great idea because
it makes your website faster for users and crawlers, and not all bots can run
JavaScript” is the closest official anchor, and it’s framework-agnostic.
» (Traduction) (Résumé en français de la section vingt-sept, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«## Choosing an adapter for SEO outcomes » (Traduction) (Résumé en français de la section vingt-huit, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«### adapter-auto — the zero-config default, and its ceiling
» (Traduction) (Résumé en français de la section vingt-neuf, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«New SvelteKit projects ship with adapter-auto. It detects the platform —
Vercel, Netlify, Cloudflare Pages, Azure, AWS — and installs the matching adapter
at build time. It’s a fine starting point, but there’s a hard ceiling worth
knowing: adapter-auto does not take any options. The moment you need
{ edge: true }, Cloudflare bindings, Vercel ISR, or any platform-specific
configuration, you install the underlying adapter (adapter-vercel,
adapter-cloudflare, etc.) directly. Treat auto as a scaffold, not a production
decision.
» (Traduction) (Résumé en français de la section trente, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«### adapter-static — full SSG, for content-first sites
» (Traduction) (Résumé en français de la section trente et un, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«adapter-static prerenders your whole site to static files at build time. No
server runs; a host serves flat HTML. Preuve à l’appui de cette affirmation adapter-static prerenders a SvelteKit site as static files. Portée : Routes must be prerenderable; performance outcomes depend on hosting and page design. Niveau de confiance : élevé · Vérifié : SvelteKit: Static site generation For a content-first site this is the
strongest SEO profile you can have — lowest TTFB, no cold starts, nothing to fall
over. The one requirement is the trap covered at length in the fundamentals
article: SSR must stay on during the build, or you get empty shells instead of
rendered HTML. I won’t re-explain that here beyond flagging it.
» (Traduction) (Résumé en français de la section trente-deux, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«The catch is rigidity. Anything that genuinely needs server logic per request (true search, per-user content, form handling without a third-party endpoint) can’t live on a purely static build — which is exactly what the next adapters are for. » (Traduction) (Résumé en français de la section trente-trois, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«### adapter-node — a server you control
» (Traduction) (Résumé en français de la section trente-quatre, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«adapter-node produces a standalone Node.js server. You run it, you scale it, you
own the TTFB. This is the most flexible option and the one with the fewest runtime
surprises — full Node APIs, including fs. It’s a good fit when you have
infrastructure already, need Node libraries that edge runtimes can’t run, or want
predictable (non-cold-starting) response times from a warm server. The tradeoff is
operational: you’re running a server, and its speed and uptime are now your crawl
capacity.
» (Traduction) (Résumé en français de la section trente-cinq, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«### adapter-vercel — serverless, edge, and ISR
» (Traduction) (Résumé en français de la section trente-six, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«adapter-vercel deploys to Vercel’s serverless functions by default, with several
SEO-relevant levers set per route via export const config:
» (Traduction) (Résumé en français de la section trente-sept, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
runtime: 'edge'moves que route à Vercel’s edge runtime (plus ci-dessous).regionscontrôle où serverless functions exécuter — closer à votre utilisateurs (or votre database) signifie lower latency.isrenables Incremental Static Regeneration:isr: { expiration: 60 }sert a mis en cache static asset et regenerates il après le window, giving “le performances et coût advantages de prerendered contenu avec le flexibility de dynamically rendu contenu.” ISR est a genuine fourth chemin entre pure-static et pure-SSR — mais remarque le docs’ propre caveat: “En utilisant ISR on a route avecexport const prerender = trueva ont aucun effect, since le route est prerendered à construire temps.” ISR et prerender sont alternatives, pas stackable.
adapter-cloudflare — Workers/Pages, global edge
adapter-cloudflare targets Cloudflare Workers et Pages — SSR on a mondial edge
network, souvent le lowest TTFB pour a geographically spread public. Le important
constraint est le runtime: Workers exécuter on V8 isolates, pas Node. Depuis le docs:
“Vous ne peut pas utiliser fs dans Cloudflare Workers.” Some Node APIs fonctionner seulement behind le
nodejs_compat compatibility flag, et même alors prise en charge n’est pas un-à-un. Si vous
étaient reading fichiers à requête temps (a redirection map, a données fichier, custom OG-image
inputs), que code nécessite a rethink — covered dans le edge section ci-dessous.
(Le older adapter-cloudflare-workers est deprecated; nouveau projects utiliser
adapter-cloudflare, qui handles les deux Workers et Pages. Si vous êtes on le old
un, migrating est le recommended chemin.)
«### adapter-netlify — functions or Edge Functions (Deno)
» (Traduction) (Résumé en français de la section quarante-deux, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«adapter-netlify deploys to Netlify’s Node-based functions by default, or to
Deno-based Edge Functions with edge: true. Same shape as Vercel: default
serverless with an edge opt-in. One SvelteKit-specific footnote — Netlify Forms
require the form’s page to be prerendered so Netlify can detect the form markup
at deploy time, which is a small “prerender this route” requirement layered on top
of the adapter choice.
» (Traduction) (Résumé en français de la section quarante-trois, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
La décision en une ligne chaque
- Pure contenu site →
adapter-static, prerender tout. - Contenu site avec dynamic pockets →
adapter-node/-vercel/-cloudflare,prerender = trueon contenu,false/'auto'on le dynamic routes. - App/dashboard avec personalization → SSR-premier (node or edge), prerender seulement le static shell (marketing, login).
- Mondial, TTFB-critical public → an edge adapter pour le dynamic routes, accepting le Node-API constraints et cold-commencer reality.
(Le Arbre de décision tab walks ce as a branching flow.)
Prerendering strategy pour mixed sites
Ce que true / false / 'auto' en réalité do
export const prerender est a per-route (or per-layout) page option, et le three
valeurs ne sont pas simplement on/off:
true— construire ce route à static HTML à construire temps. Critically, c’est “excluded depuis manifests utilisé pour dynamic SSR, making votre serveur (or serverless/edge functions) plus petit.” Une fois prerendered, le route ne peut pas fall back à dynamic rendu — c’est static, complet arrêter.false— toujours rendre on requête. Aucun static fichier.'auto'— le mixed-site outil. Il prerenders le route et garde il dans le dynamic serveur manifest, donc le même route peut être servi statically pour connu paths et serveur-rendu pour le rest. Ce est construit pour exactly le cas le docs décrire: a route comme/blog/[slug]“où vous vouloir à prerender votre la plupart recent/popular contenu mais serveur-rendre le long tail.”
Parce que prerendered routes shrink le serveur bundle, a mostly-prerendered site
with a few 'auto'/false routes deploys a plus petit, cheaper, faster function —
an efficiency win independent of SEO.
Dynamic routes besoin an entries function
Le prerender robot d’exploration discovers pages par suivant <a> liens depuis votre entry
points. Que fonctionne pour static routes, mais a dynamic route comme /blog/[slug] a
aucun fixed URL pour le robot d’exploration à trouver. Si rien liens à a donné slug, SvelteKit
ne va pas know il exists — et vous’ll hit le classic construire erreur que routes “étaient
marked as prerenderable, mais étaient pas prerendered.”
Le corriger est an explicit entries function (or config.kit.prerender.entries) que
enumerates le parameter valeurs:
// src/routes/blog/[slug]/+page.server.js
export const prerender = true;
export function entries() {
return [
{ slug: 'hello-world' },
{ slug: 'sveltekit-deployment-seo' },
];
}En pratique vous generate que liste depuis votre CMS or contenu directory. Sans il, prerendering seulement covers le slugs le lien robot d’exploration se produit à trouver.
Le /blog/[slug] modèle dans le wild
Put le deux ensemble et vous ont le canonical mixed-site setup: prerender = 'auto' plus an entries function que renvoie votre recent et popular posts.
Ceux obtenir static HTML à construire temps; n’importe quoi pas dans le liste falls via à SSR
on demand. Nouveau posts rendre dynamically jusqu’à le suivant construire prerenders les. c’est
le pragmatic middle ground entre “prerender all 40,000 posts every build” et
“render every post on every request.”
Edge runtime constraints que affecter SEO
config.runtime = 'edge' is per-route (on Vercel)
Edge n’est pas an tous-or-rien switch. On Vercel c’est a per-route page option:
// +page.server.js or +server.js
export const config = { runtime: 'edge' };Que signifie vous pouvez push élevé-traffic, cacheable routes à le edge pour faible TTFB pendant que keeping Node-dependent routes on le standard serverless (Node) runtime dans le même deployment. Mix deliberately.
Aucun fs, aucun arbitrary Node APIs
Le edge runtimes — Cloudflare Workers, Vercel Edge Functions, Netlify’s Deno Edge
Functions — ne pas provide Node’s fs. Cloudflare’s docs: “Vous pouvez’t utiliser fs dans
Cloudflare Workers.” Vercel’s: “Vous pouvez’t utiliser fs dans edge functions.” Les deux point
à le même deux escape hatches: utiliser le read helper depuis $app/server à accès
bundled assets, or “prerender the routes in question” donc le fichier accès se produit
à construire temps au lieu de à requête temps.
«The SEO-adjacent cases where this bites: dynamic OG-image generation that reads a
font or template file, file-based redirect maps, or a sitemap endpoint that reads
content off disk. Any of those either moves to $app/server’s read() or moves to
prerender/build time. It’s not a blocker — it’s a “know before you pick edge”
constraint.
» (Traduction) (Résumé en français de la section soixante-six, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
Cold commence et TTFB — quand edge aide et quand il ne fait pas
Edge functions encore cold-commencer. A cold edge function on son premier requête peut être slower que a warm Node serveur, et dramatically slower que a prerendered fichier servi depuis cache. Edge wins quand le function stays warm or quand c’est paired avec aggressive mise en cache donc la plupart requêtes jamais hit le function à tout. Il est pas automatiquement le fastest option — “deploy to the edge” n’est pas a synonym pour “faster.” Pour a contenu site, prerendered static sortie beats edge SSR on TTFB chaque temps, parce que il y a aucun function à commencer.
Generating sitemap.xml et robots.txt (SvelteKit ne va pas)
Ce est le gap la plupart SvelteKit tutorials skip et la plupart audits catch. SvelteKit generates aucun sitemap.xml et aucun robots.txt automatiquement — regardless de adapter, regardless de comment nombreux pages vous prerender. A entièrement static site avec thousands de prerendered pages encore ships avec aucun sitemap unless vous construire un.
The +server.js endpoint pattern
Le idiomatic sitemap est a route endpoint que renvoie XML avec le correct
Content-Type:
// src/routes/sitemap.xml/+server.js
export const prerender = true; // needed on adapter-static
export async function GET() {
const urls = await getAllUrls(); // from your CMS/content
const body = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${urls.map((u) => ` <url><loc>${u}</loc></url>`).join('\n')}
</urlset>`;
return new Response(body, {
headers: { 'Content-Type': 'application/xml' },
});
}The strategy dépend on votre adapter
Here’s the partie que ties ce whole article ensemble: votre sitemap strategy is downstream of votre adapter choice.
- On
adapter-static, le sitemap endpoint nécessiteexport const prerender = vraidonc c’est inclus dans le static sortie — il y a aucun serveur à runtime à generate il on requête. c’est baked à construire temps, qui signifie c’est seulement as fresh as votre dernier construire. - On a Node/serverless/edge adapter, le même endpoint peut generate le sitemap
dynamically per requête depuis votre CMS or database — toujours actuel, aucun rebuild
nécessaire. (On an edge adapter, remember le
fsconstraint: pull URLs depuis an API or binding, pas a disk lire.)
Donc le “should my sitemap be static or dynamic?” question n’est pas a séparé décision — il falls out de le adapter vous déjà chose.
robots.txt: static fichier vs. endpoint
Deux options. Drop a plain robots.txt dans votre static/ folder (servi à
/robots.txt automatiquement), qui est le simplest choice et fine pour la plupart sites.
Or generate il depuis a src/routes/robots.txt/+server.js endpoint quand vous besoin il
à differ par environment (blocking robots d’exploration on staging, allowing les dans
production, pour instance). Soit façon, ne pas bloquer votre /_app/ bundle or CSS —
que breaks rendu pour moteurs que faire rendre.
«If you’re coming at this from the broader framework or JavaScript-SEO angle, the “where and when does rendering happen” logic here is the same logic that governs JavaScript SEO generally, and the SvelteKit fundamentals piece in this section covers the rendering modes and metadata patterns this article builds on top of. » (Traduction) (Résumé en français de la section quatre-vingts, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
AI summary
A condensed prendre on the Avancé version:
- Le adapter changements où et quand, pas ce que. Adapters “prendre le construit app as entrée et generate sortie pour deployment” — même contenu, différent timing (construire vs. requête temps) et emplacement (origin vs. edge).
- Pourquoi c’est an SEO décision: TTFB → LCP → explorer capacity. Google: si a site “responds quickly… le limite goes up… Si le site slows bas… Google explore moins.” Aucun Google guidance noms SvelteKit précisément — ce est general guidance applied à SvelteKit mechanics.
- Adapters:
adapter-auto(zero-config, aucun options);adapter-static(SSG, contenu sites, lowest TTFB);adapter-node(serveur vous contrôler, complet Node APIs);adapter-vercel(serverless + edge + ISR);adapter-cloudflare(mondial edge Workers, aucunfs;adapter-cloudflare-workersest deprecated);adapter-netlify(functions or Deno Edge Functions). - Prerender:
trueconstruit static HTML et supprime le route depuis le dynamic manifest;falsetoujours SSRs;'auto'prerenders et garde il dynamic — le mixed-site outil pour/blog/[slug](prerender popular, SSR le long tail). - Dynamic routes besoin an
entriesfunction or vous hit le “marked as prerenderable, mais étaient pas prerendered” erreur. - Edge constraints:
runtime: 'edge'est per-route (Vercel); aucunfs(“Vous ne peut pas utiliser fs dans Cloudflare Workers” / edge functions) — utiliser$app/server’sread()or prerender; cold commence peut faire edge slower que a warm serveur or static fichier. - Aucun built-dans sitemap/robots.txt. Construire a
sitemap.xml/+server.jsendpoint (prerender = trueonadapter-static; dynamic on serveur/edge adapters). robots.txt viastatic/or an endpoint. - ISR ≠ prerender-plus: “En utilisant ISR on a route avec
export const prerender = vraiva ont aucun effect.” ils sont alternatives.
«## Official documentation » (Traduction) (Résumé en français de la section quatre-vingt-huit, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«Primary-source documentation from SvelteKit and the search engines. » (Traduction) (Résumé en français de la section quatre-vingt-neuf, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«SvelteKit
» (Traduction) (Résumé en français de la section quatre-vingt-dix, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«- Adapters • SvelteKit Docs — the overview: adapters take the built app and generate deployment output.
» (Traduction) (Résumé en français de la section quatre-vingt-dix, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.)
«- Zero-config deployments (adapter-auto) • SvelteKit Docs — per-platform detection and the “does not take any options” limitation.
» (Traduction) (Résumé en français de la section quatre-vingt-dix, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.)
«- Node servers (adapter-node) • SvelteKit Docs — the standalone Node server, environment variables, graceful shutdown.
» (Traduction) (Résumé en français de la section quatre-vingt-dix, sous-partie quatre : le texte source est conservé pour vérification lors de la relecture francophone.)
«- Static site generation (adapter-static) • SvelteKit Docs — full-site SSG, the SSR requirement, and the SPA-fallback SEO warning.
» (Traduction) (Résumé en français de la section quatre-vingt-dix, sous-partie cinq : le texte source est conservé pour vérification lors de la relecture francophone.)
«- Vercel (adapter-vercel) • SvelteKit Docs — per-route runtime, regions, split, and Incremental Static Regeneration.
» (Traduction) (Résumé en français de la section quatre-vingt-dix, sous-partie six : le texte source est conservé pour vérification lors de la relecture francophone.)
«- Cloudflare (adapter-cloudflare) • SvelteKit Docs — Workers/Pages, platform.env bindings, nodejs_compat, and the fs limitation.
» (Traduction) (Résumé en français de la section quatre-vingt-dix, sous-partie sept : le texte source est conservé pour vérification lors de la relecture francophone.)
«- Cloudflare Workers (adapter-cloudflare-workers, deprecated) • SvelteKit Docs — the deprecated legacy adapter and migration path.
» (Traduction) (Résumé en français de la section quatre-vingt-dix, sous-partie huit : le texte source est conservé pour vérification lors de la relecture francophone.)
«- Netlify (adapter-netlify) • SvelteKit Docs — Node Functions vs. Deno-based Edge Functions (edge: true), and the Forms prerender requirement.
» (Traduction) (Résumé en français de la section quatre-vingt-dix, sous-partie neuf : le texte source est conservé pour vérification lors de la relecture francophone.)
«- Page options (prerender, ssr, csr, config) • SvelteKit Docs — prerender = true/false/'auto', the entries function, and per-route config including runtime: 'edge'.
» (Traduction) (Résumé en français de la section quatre-vingt-dix, sous-partie dix : le texte source est conservé pour vérification lors de la relecture francophone.)
«Google » (Traduction) (Résumé en français de la section quatre-vingt-onze, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- Understand JavaScript SEO Basics — the render queue and “not all bots can run JavaScript.” » (Traduction) (Résumé en français de la section quatre-vingt-onze, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.) «- Optimize your crawl budget — crawl capacity tied to response speed; “make your pages efficient to load.” » (Traduction) (Résumé en français de la section quatre-vingt-onze, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.)
«Bing / Microsoft » (Traduction) (Résumé en français de la section quatre-vingt-douze, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- bingbot Series: JavaScript, Dynamic Rendering, and Cloaking. Oh My! — Bing’s prerendering/dynamic-rendering recommendation and the cloaking clarification. » (Traduction) (Résumé en français de la section quatre-vingt-douze, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.) «- Fast Front-End Performance for Microsoft Bing — Bing’s own SSR + CDN/edge-node architecture as a real-world proof point. » (Traduction) (Résumé en français de la section quatre-vingt-douze, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.)
«## Quotes from the source » (Traduction) (Résumé en français de la section quatre-vingt-quinze, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
On-le-record statements depuis le SvelteKit docs, Google, et Bing. Chaque lien est a deep lien que jumps à le quoted passage on le page source.
«SvelteKit docs — adapters & page options » (Traduction) (Résumé en français de la section quatre-vingt-dix-sept, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«- “adapter-auto does not take any options.” — on the zero-config default adapter.
Jump to quote
» (Traduction) (Résumé en français de la section quatre-vingt-dix-huit, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«- On prerender = true — prerendered routes are “excluded from manifests used for dynamic SSR, making your server (or serverless/edge functions) smaller.”
Jump to quote
» (Traduction) (Résumé en français de la section quatre-vingt-dix-huit, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.)
«- On 'auto' — the /blog/[slug] case where you want to “prerender your most recent/popular content but server-render the long tail.”
Jump to quote
» (Traduction) (Résumé en français de la section quatre-vingt-dix-huit, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.)
«- On the edge fs limitation — “You can’t use fs in Cloudflare Workers.”
Jump to quote
» (Traduction) (Résumé en français de la section quatre-vingt-dix-huit, sous-partie quatre : le texte source est conservé pour vérification lors de la relecture francophone.)
«- On Vercel ISR vs. prerender — “Using ISR on a route with export const prerender = true will have no effect, since the route is prerendered at build time.”
Jump to quote
» (Traduction) (Résumé en français de la section quatre-vingt-dix-huit, sous-partie cinq : le texte source est conservé pour vérification lors de la relecture francophone.)
Google — rendering & budget d’exploration
«- “Keep in mind that server-side or pre-rendering is still a great idea because it makes your website faster for users and crawlers, and not all bots can run JavaScript.” Jump to quote » (Traduction) (Résumé en français de la section cent, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- “If the site responds quickly for a while, the limit goes up, meaning more connections can be used to crawl. If the site slows down or responds with server errors, the limit goes down and Google crawls less.” Jump to quote » (Traduction) (Résumé en français de la section cent, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.) «- “Make your pages efficient to load. If Google can load and render your pages faster, we might be able to read more content from your site.” Jump to quote » (Traduction) (Résumé en français de la section cent, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.)
Bing — prerendering & its propre edge architecture
«- “We encourage detecting our bingbot user agent, prerendering the content on the server side and outputting static HTML for such sites…” — Fabrice Canel & Frédéric Dubut, Microsoft Bing. Jump to quote » (Traduction) (Résumé en français de la section cent deux, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- “User traffic routes first to the closest CDN node (called an ‘edge node’).” — Bing Search Quality Insights, on Bing’s own SSR + edge architecture. Jump to quote » (Traduction) (Résumé en français de la section cent deux, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.)
Remarque: le SvelteKit docs et Google’s/Bing’s pages sont JavaScript-rendu et peut resist automated texte-fragment checking; ces citations étaient verified contre le brief’s 2026-07-03 research réussir, et le Bing citations sont relayed via que research — confirmer les contre le actif pages avant treating quelconque deep lien as final. Aucun Google or Bing rep a commented on SvelteKit adapters précisément; le recherche-moteur citations sont framework-agnostic guidance applied ici à SvelteKit.SvelteKit deployment SEO checklist
A réussir à confirmer votre adapter, prerender, et sitemap setup ne va pas hurt robots d’exploration:
«- [ ] You’ve moved off adapter-auto to an explicit adapter if you need any
configuration (edge, ISR, bindings).
» (Traduction) (Résumé en français de la section cent huit, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«- [ ] The adapter matches the site type — adapter-static for pure content,
a server/edge adapter for anything with per-request logic.
» (Traduction) (Résumé en français de la section cent huit, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.)
«- [ ] Content routes are prerender = true (or 'auto'); only genuinely
dynamic routes are left to SSR.
» (Traduction) (Résumé en français de la section cent huit, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.)
«- [ ] Mixed dynamic routes (/blog/[slug]) use prerender = 'auto' with an
entries function enumerating known paths.
» (Traduction) (Résumé en français de la section cent huit, sous-partie quatre : le texte source est conservé pour vérification lors de la relecture francophone.)
«- [ ] No unresolved “marked as prerenderable, but were not prerendered” build
errors.
» (Traduction) (Résumé en français de la section cent huit, sous-partie cinq : le texte source est conservé pour vérification lors de la relecture francophone.)
«- [ ] If any route uses runtime: 'edge', it does not call Node fs — file
access uses $app/server’s read() or is prerendered.
» (Traduction) (Résumé en français de la section cent huit, sous-partie six : le texte source est conservé pour vérification lors de la relecture francophone.)
«- [ ] You’ve accounted for cold starts on edge/serverless — cacheable, static,
or warm where TTFB matters.
» (Traduction) (Résumé en français de la section cent huit, sous-partie sept : le texte source est conservé pour vérification lors de la relecture francophone.)
«- [ ] A sitemap.xml endpoint exists (prerender = true on adapter-static;
dynamic on server/edge adapters).
» (Traduction) (Résumé en français de la section cent huit, sous-partie huit : le texte source est conservé pour vérification lors de la relecture francophone.)
«- [ ] A robots.txt exists (in static/ or as a +server.js endpoint) and does
not block /_app/ or CSS.
» (Traduction) (Résumé en français de la section cent huit, sous-partie neuf : le texte source est conservé pour vérification lors de la relecture francophone.)
«- [ ] You are not trying to stack ISR on a prerender = true route (it has
no effect).
» (Traduction) (Résumé en français de la section cent huit, sous-partie dix : le texte source est conservé pour vérification lors de la relecture francophone.)
«- [ ] You verified the rendered HTML and response speed in GSC URL Inspection
and PageSpeed Insights.
» (Traduction) (Résumé en français de la section cent huit, sous-partie onze : le texte source est conservé pour vérification lors de la relecture francophone.)
The mental models
1. Où et quand, pas ce que. Le adapter jamais changements votre contenu — il changements quand le HTML est fait (construire temps vs. requête temps) et où (origin vs. edge). Chaque deployment SEO question reduces à ceux deux axes. Demander les avant vous touch config.
2. Prerender supprime a route depuis le serveur.
prerender = true n’est pas simplement “make it static” — il takes le route out de le
dynamic manifest. Que shrinks votre function et règles out a dynamic fallback.
'auto' est le exception: prerendered et encore dans le manifest.
3. Le /blog/[slug] split.
Le par défaut modèle pour contenu réel sites: prerender le entries vous pouvez nom
(entries function renvoie recent/popular), SSR le long tail. 'auto' est le
switch que rend les deux vrai à une fois.
4. Edge est a trade, pas an upgrade.
Edge buys vous geographic proximity (faible TTFB quand warm) et coûts vous Node APIs
(aucun fs) et cold-commencer risque. Il beats a warm Node serveur seulement parfois, et
loses à prerendered static sortie on TTFB toujours. Choisir il pour a raison, pas par
par défaut.
5. Le sitemap suit le adapter.
“Static or dynamic sitemap?” n’est pas a séparé décision. adapter-static →
prerendered sitemap, fresh seulement à construire. Serveur/edge adapter → per-requête
sitemap, toujours actuel. Le adapter déjà answered le question.
6. Rien generates le deux fichiers. SvelteKit rend aucun sitemap.xml et aucun robots.txt, pour quelconque adapter. Si vous n’a pas écrire les, ils ne pas exist. Bake ce dans votre launch liste de contrôle.
«## Which adapter + prerender combo should I pick? » (Traduction) (Résumé en français de la section cent vingt, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«The core “which path do I take?” question in SvelteKit deployment is how should this site ship? Walk your site through this: » (Traduction) (Résumé en français de la section cent vingt et un, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«1. Does any page need per-request server logic — auth, personalization, live search, form handling, per-user data? → No (every page is the same for every visitor): go to 2. → Yes: skip to 3. » (Traduction) (Résumé en français de la section cent vingt-deux, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
2. Pure content site (blog, docs, marketing).
→ Utiliser adapter-static, définir prerender = true site-wide (or in the root
layout). Ajouter a prerendered sitemap.xml/+server.js (prerender = true) and a
static/robots.txt. Lowest TTFB, aucun cold starts, nothing to run. Arrêter ici.
3. Est le entier site dynamic, or simplement some routes? → Simplement some routes (mostly contenu, a quelques dynamic bits): go à 4. → Mostly/entirely dynamic (app, dashboard, ecommerce avec per-utilisateur données): go à 5.
4. Contenu site avec dynamic pockets.
→ Utiliser a serveur/edge adapter (adapter-node, -vercel, or
-cloudflare). Mark contenu routes prerender = true, dynamic routes
false. Pour /blog/[slug]-style routes avec known-popular contenu, utiliser
prerender = 'auto' + an entries function. Generate le sitemap dynamically
depuis votre CMS. Fait.
5. App / dashboard / ecommerce (SSR-premier). Maintenant pick où SSR exécute:
→ Predictable latency, Node libraries, vous ont infra: adapter-node
(warm serveur, complet Node APIs, aucun cold-commencer surprises).
→ Mondial public, TTFB matters la plupart, aucun heavy Node deps: an edge adapter
(adapter-cloudflare, or adapter-vercel avec runtime: 'edge' per route) —
accept aucun fs (utiliser $app/server’s read() or prerender) et cold commence.
Prerender seulement le truly static shell (marketing, login).
Fourth chemin (Vercel seulement): si a route est “mostly static mais occasionally
changements,” considérer ISR (isr: { expiration }) au lieu de prerender = true
— jamais les deux, since “ISR on a route avec export const prerender = vrai va ont
aucun effect.”
Devrait my sitemap be static or dynamic?
On adapter-static? → Static/prerendered sitemap endpoint
(prerender = true). It’s baked at construire; fine pour sites que rebuild on publish.
On a Node/serverless/edge adapter? → Dynamic sitemap generated per requête
from votre CMS/DB — toujours current, aucun rebuild. (On edge, pull URLs from an API or
binding, pas a disk fs lire.)
«Never: ship no sitemap because “the pages are all static.” Static output and sitemap discoverability are unrelated — SvelteKit generates neither file for any adapter. » (Traduction) (Résumé en français de la section cent trente et un, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«## SvelteKit deployment SEO — cheat sheet » (Traduction) (Résumé en français de la section cent trente-quatre, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
Adapters En un coup d’œil
| Adapter | Renders | Runtime | SEO remarque |
|---|---|---|---|
adapter-static | Construire temps (SSG) | none | Lowest TTFB, aucun cold starts; content sites |
adapter-node | Requête temps (SSR) | Node | Complet Node APIs (fs ✅); vous run le serveur |
adapter-vercel | Requête temps | serverless / edge | Per-route runtime, regions, ISR |
adapter-cloudflare | Requête temps | V8 edge | Global edge; aucun fs; nodejs_compat |
adapter-netlify | Requête temps | Node / Deno edge | edge: true pour Deno Edge Functions |
adapter-auto | (detects ci-dessus) | — | Takes aucun options — scaffold seulement |
Prerender valeurs
| Valeur | Static HTML? | In dynamic manifest? | Utiliser pour |
|---|---|---|---|
true | ✅ | ❌ (supprimé) | Connu static content routes |
false | ❌ | ✅ | Genuinely dynamic routes |
'auto' | ✅ | ✅ | /blog/[slug] — prerender popular, SSR long tail |
Rapide règles
- Dynamic prerendered routes → ajouter an
entriesfunction (or hit le “not prerendered” erreur). runtime: 'edge'est per-route (Vercel) — mix edge et Node routes.- Edge = aucun
fs→ utiliser$app/server’sread()or prerender. - Cold commence faire edge slower que a warm serveur / static fichier on premier hit.
- ISR ≠ prerender —
isron aprerender = trueroute ne fait pashing. - Aucun auto sitemap/robots.txt — construire les deux.
prerender = trueon le sitemap endpoint pouradapter-static; dynamic on serveur/edge. - Jamais bloquer
/_app/or CSS dans robots.txt.
A prerendered route is manquant from the deployment
Probable causer: le robot d’exploration pourrait pas découvrir le chemin, an entries valeur est absent, or prerendering failed. Corriger: ajouter crawlable liens or explicit entries et treat construire warnings as release échecs. Confirmer: le sortie manifest contient le route et production renvoie complet HTML.
«## adapter-static fails on a dynamic route
» (Traduction) (Résumé en français de la section cent quarante-quatre, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
Probable causer: le route ne peut pas être entièrement enumerated à construire temps. Corriger: supply finite entries, redesign le route, or utiliser a serveur-capable adapter pour que chemin. Confirmer: le selected adapter construit et chaque representative route renvoie le prévu réponse.
Edge deployment throws filesystem or Node API erreurs
Probable causer: route code or a dependency assumes Node fonctionnalités indisponible dans le edge runtime. Corriger: remplacer le dependency, déplacer le fonctionner à a compatible service, or choisir a Node adapter. Confirmer: production SSR succeeds sans runtime exceptions.
Sitemap or robots.txt renvoie HTML
Probable causer: a fallback route catches le endpoint or le +server handler sets le incorrect corps/headers. Corriger: créer explicit endpoint handlers avec correct contenu types. Confirmer: direct requêtes retourner le attendu texte/XML réponse et 200 status.
Metadata differs entre prerendered and SSR routes
Probable causer: head données est chargé dans différent code paths or dépend on navigateur state. Corriger: centralize metadata generation depuis serveur/construire-sûr page données. Confirmer: raw HTML pour les deux route types contient equivalent titre, canonical, et robots logic.
Confirmer ce que votre adapter en réalité shipped
Le point de picking an adapter et prerendering est que a robot d’exploration obtient rapide, complet HTML. Ces vérifications confirmer c’est ce que en réalité happened — depuis le raw réponse, pas le navigateur.
Is lune page prerendered/SSR’d (content in raw HTML)?
A plain curl runs aucun JavaScript, so it sees exactly ce que a non-rendering robot d’exploration
sees.
macOS / Linux
# Raw HTML as the host sends it (no JS executed)
curl -sL "https://example.com/your-page/" -o raw.html
grep -o "Your unique headline text" raw.html # empty = CSR shell, not prerendered«Windows (PowerShell) » (Traduction) (Résumé en français de la section cent cinquante-neuf, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
Invoke-WebRequest -Uri "https://example.com/your-page/" -OutFile raw.html
Select-String -Path raw.html -Pattern "Your unique headline text"«### Is TTFB fast (or is a function cold-starting)? » (Traduction) (Résumé en français de la section cent soixante, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«TTFB feeds LCP and crawl capacity, so measure it. Hit the URL cold, then warm: » (Traduction) (Résumé en français de la section cent soixante et un, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
# Time to first byte, twice — a big first number then a small one = cold start
for i in 1 2; do
curl -s -o /dev/null -w "TTFB: %{time_starttransfer}s\n" "https://example.com/your-page/"
doneA prerendered/static page devrait be consistently low. A grand premier valeur que drops on the second hit is a classic serverless/edge cold commencer.
Was ce route prerendered or served dynamically?
Static hosts et CDNs généralement reveal il dans headers (cache status, age,
x-vercel-cache, cf-cache-status):
curl -sI "https://example.com/your-page/" | grep -iE "cache|age|x-vercel|cf-"A HIT (or a nonzero age) signifie you’re being served mis en cache/prerendered content;
a MISS/DYNAMIC on every requête signifie it’s rendering per requête.
Fait le sitemap en réalité exist and retourner XML?
Since SvelteKit doesn’t generate un, vérifier yours is really là with the correct content type:
curl -sI "https://example.com/sitemap.xml" | grep -iE "HTTP/|content-type"
# Want: 200 + content-type: application/xml (not text/html or a 404)DevTools console one-liner
Paste dans le navigateur console à comparer rendu DOM contre ce que a robot d’exploration nécessite —
si votre headline est ici mais manquant depuis le curl sortie ci-dessus, c’est
client-rendu:
// Is the content in the DOM, and does the sitemap resolve?
console.log('headline in DOM:', document.body.innerText.includes('Your unique headline text'));
fetch('/sitemap.xml').then(r => console.log('sitemap status:', r.status, r.headers.get('content-type')));Vérifier robots.txt n’est pas blocking le bundle
curl -sL "https://example.com/robots.txt" | grep -iE "disallow.*(/_app|\.js|\.css)"A Disallow matching /_app/ (SvelteKit’s bundled output) or votre CSS signifie
engines can’t render lune page — almost toujours a mistake.
Outils pour debugging SvelteKit deployment SEO
- Inspection d’URL (Recherche Google Console) — le source de truth. Actif-test une URL et vérifier le rendu HTML, screenshot, et page resources à confirmer contenu et metadata sont présent et rien est bloqué.
- PageSpeed Insights — le SvelteKit docs’ propre recommended outil; surfaces TTFB et le Core Web Vitals (LCP/INP/CLS) que votre adapter choice la plupart affecte.
- WebPageTest — waterfall + filmstrip pour diagnosing TTFB et cold-commencer timing on edge/serverless deploys.
curl -w "%{time_starttransfer}"— le quickest raw TTFB et cold-commencer vérifier (voir le Scripts tab).- Host dashboards (Vercel / Cloudflare / Netlify Analytics) — function invocation counts, cold-commencer rates, et cache-hit ratios per route — le ground truth pour si edge/serverless est en réalité rapide pour vous.
- Screaming Frog SEO Spider — explorer avec JS rendu on/off à diff raw vs. rendu HTML à travers le site et confirmer prerendered routes sont complet.
- Ahrefs Site Audit — surfaces manquant/bloqué sitemaps, chaîne de redirectionss, broken canonicals, et indexability problèmes à scale.
Testez vos connaissances: SvelteKit Deployment SEO
Five rapide questions on adapters, prerendering, et edge rendu dans SvelteKit. Pick an réponse pour chaque, alors vérifier.
Ressources utiles
Mon connexe writing
- JavaScript SEO: A Definitive Guide — mon complet référence on rendu modes (SSR, static rendu, prerendering, et le CSR pitfalls) que underpin chaque adapter décision ici. As Je put il là, quelconque kind de SSR, static rendu, or prerendering setup est going à être fine pour moteur de recherches — qui est exactly le safety net behind ces adapter choices.
- Le Beginner’s Guide à SEO technique — où rendu, exploration, et Core Web Vitals fit dans le bigger picture.
«My speaking » (Traduction) (Résumé en français de la section cent quatre-vingt-dix, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- How Search Works (SlideShare) — my walkthrough of crawling, rendering, indexing, and ranking, which is the backdrop for why TTFB and rendering timing matter. (My standing disclaimer applies: “This is my understanding of systems… not going to be 100% complete or accurate.”) » (Traduction) (Résumé en français de la section cent quatre-vingt-dix, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.)
Depuis autour le industry
- Adapters • SvelteKit Docs — le authoritative overview de chaque official adapter et comment ils sont specified dans
svelte.config.js. - Page options (prerender, ssr, csr, config) • SvelteKit Docs — le per-route
prerendervaleurs, leentriesfunction, et per-routeconfignotammentruntime: 'edge', dans le team’s propre words. - Vercel (adapter-vercel) • SvelteKit Docs — le edge runtime, regions, et le ISR-vs-prerender caveat.
- Cloudflare (adapter-cloudflare) • SvelteKit Docs — Workers/Pages deployment, bindings, et le
fslimitation. - SvelteKit • Cloudflare Pages docs — le deployment mechanics et
platformbindings depuis Cloudflare’s side. - SvelteKit SEO: Votre Secret Weapon (Okupter) — a practitioner guide à prerendering, meta balises, et le
+server.jssitemap/RSS modèle. - A Deep Dive dans SvelteKit’s Rendu Techniques (Ce Dot Labs) — SSR/SSG/CSR mechanics et per-route/per-layout config, avec le “SSR can be expensive” serveur-charger tradeoff.
- Comprendre JavaScript SEO Basics (Recherche Google Central) — le rendre queue et “pas tous bots peut exécuter JavaScript,” le general guidance chaque adapter choice sits sous.