SvelteKit hosting in Europe
Push a SvelteKit app with adapter-static and it builds in Paris and goes live on Bunny.net's CDN, as a prerendered site or as a single-page app.
Two shapes, one adapter.
adapter-static builds SvelteKit either way. The difference is what sits behind a path that has no file of its own, and both work on every address we serve, previews and custom domains included.
Prerendered site
- Adapter fallback
- undefined
- Root +layout.js
- prerender = true
- /about answers with
- about.html · 200
- A missing path
- 404 · your 404.html if any
Marketing sites, docs, blogs. Every URL is real HTML for search engines and link previews.
Single-page app
- Adapter fallback
- '200.html'
- Root +layout.js
- ssr = false
- /about answers with
- 200.html · 200
- A missing path
- 200.html · 200
Apps behind a login, where routes depend on data that only exists in the browser.
What goes in svelte.config.js.
An example config. Swap adapter-auto for adapter-static, keep the output in build, and add the fallback line only if you are building a single-page app.
import adapter from '@sveltejs/adapter-static';/** @type {import('@sveltejs/kit').Config} */const config = {kit: {adapter: adapter({adapter-static, not adapter-auto.pages: 'build',The folder we upload.assets: 'build',fallback: '200.html',Only for a single-page app.}),},};export default config;
How long a build takes here.
The median build on deploybase, from build start to live, across every framework and every team. Counted on 25 September 2026.
- Mean, pulled up by a few long builds
- 78 s
- Builds timed
- 1,641
- Builds that succeed
- 81.5 %
- Time limit per build
- 15 min Free, 30 min paid
Failed builds are left out of the times: they measure how long we took to give up. There is no figure for SvelteKit alone yet; at our size it could point at one customer. The live numbers are on /open.
What SvelteKit does here that we cannot yet.
- Server rendering Server load functions, form actions and +server.js endpoints need a server. We serve files. Server code beside the site can be a function (beta), but SvelteKit does not deploy to it by itself.
- Your Node version Builds run Node 24. We do not read .nvmrc or the engines field yet.
- A build cache Nothing carries over between builds, so dependencies install from scratch each time.
Questions about SvelteKit on deploybase.
Something else? Write to support@deploybase.eu. A person answers.
Does deploybase run SvelteKit server-side rendering?
No. We serve the files adapter-static writes, with no Node process behind them. Server load functions, form actions and +server.js endpoints that run on each request have nothing to run them. If you need server code beside the site, put it in functions/, which is in beta on paid plans.
FunctionsMy project uses adapter-auto. Will it build?
It builds, but adapter-auto does not recognise deploybase, so it writes no site to build/ and the deploy fails on an empty folder. Install @sveltejs/adapter-static and use it in svelte.config.js instead.
How does a single-page app get its deep links?
Set fallback: '200.html' in the adapter options. We find 200.html in each deployment and serve it for any path that has no file of its own, so a hard reload on /settings/billing lands in your app. It works on production, preview and custom-domain addresses alike, with nothing to switch on.
Which package manager does the build use?
The one your lockfile names: pnpm, Yarn or npm, or the packageManager field in package.json if it is set. With a lockfile, dependencies install with install scripts switched off.
How is a SvelteKit site cached?
Files under /_app/immutable/ carry a hash in their name, so they are cached for a year. HTML is cached at the CDN and checked by the browser on every visit, and a new deploy clears it.
What does a build cost?
Build minutes. Free includes 200 a month, Starter 1,000, Pro 3,000 and Scale 10,000, and a failure on our side or a build you cancel never counts. The median build on deploybase takes 40 seconds.
PricingPut your SvelteKit app live.
Create a team on the free plan and connect the repository. The settings are already SvelteKit's.