Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
243 commits
Select commit Hold shift + click to select a range
97eea56
wip
teemingc Mar 20, 2026
e5c72dd
Merge branch 'main' into fetchable-dev-environment
teemingc Mar 20, 2026
d248b16
Merge branch 'version-3' into fetchable-dev-environment
teemingc Mar 20, 2026
5346ed5
update before_handle type
teemingc Mar 20, 2026
013fa51
format
teemingc Mar 20, 2026
fa879ba
fix type
teemingc Mar 20, 2026
6f40268
format
teemingc Mar 21, 2026
49e07b9
fix test
teemingc Mar 21, 2026
c844a5f
dev only plugins
teemingc Mar 21, 2026
c5f22d7
format again
teemingc Mar 21, 2026
3e19d7c
no more cf pages test app
teemingc Mar 21, 2026
0a39981
fix lint
teemingc Mar 21, 2026
139c567
Merge branch 'version-3' into fetchable-dev-environment
teemingc Mar 22, 2026
96ca6d5
hooray ipc
teemingc Mar 23, 2026
a74f3c7
im so stupid
teemingc Mar 24, 2026
af7a216
Merge branch 'version-3' into fetchable-dev-environment
teemingc Mar 24, 2026
0a73d63
move server entry to file
teemingc Mar 24, 2026
9f0694a
only one config path as source of truth
teemingc Mar 24, 2026
585fc7a
deduplicate to_fs
teemingc Mar 24, 2026
8c875c9
clean up ipc
teemingc Mar 24, 2026
ca2adb6
add test todo
teemingc Mar 24, 2026
c3e5074
we did it?
teemingc Mar 24, 2026
95dc4b8
space
teemingc Mar 24, 2026
eadcb7a
whoops
teemingc Mar 24, 2026
f5396cb
run instrumentation if it exists
teemingc Mar 24, 2026
3c7138b
correctly serialise nodes
teemingc Mar 24, 2026
7897025
fix ts
teemingc Mar 24, 2026
0922686
Merge branch 'version-3' into fetchable-dev-environment
teemingc Mar 24, 2026
5db8285
changesets
teemingc Mar 24, 2026
ad2fe73
split cloudflare changes
teemingc Mar 24, 2026
a83420d
split cf changes
teemingc Mar 24, 2026
46aa98e
changeset
teemingc Mar 24, 2026
0b0cfaa
always provide ssr dev config
teemingc Mar 24, 2026
332a28f
leftover
teemingc Mar 24, 2026
4d21e64
leftover
teemingc Mar 24, 2026
6859adf
split into new pr
teemingc Mar 24, 2026
4f9d543
no need to generate types for internal
teemingc Mar 24, 2026
de27959
Merge branch 'version-3' into fetchable-dev-environment
teemingc Mar 24, 2026
48a1d41
fix up paths in error stack traces
teemingc Mar 24, 2026
195ddd7
fix relative paths on server
teemingc Mar 25, 2026
8528b99
promise with resolvers
teemingc Mar 25, 2026
0e068be
Merge branch 'version-3' into fetchable-dev-environment
teemingc Mar 26, 2026
4f5fa31
fix remotes detection
teemingc Mar 26, 2026
c15f3c2
fix remotes population
teemingc Mar 26, 2026
6a7bdf1
fix dev remotes analysis
teemingc Mar 26, 2026
1a423eb
fix reading files outside app root in dev
teemingc Mar 26, 2026
9787112
Merge branch 'version-3' into fetchable-dev-environment
teemingc Mar 26, 2026
81c18cd
fix vite globals being defined late
teemingc Mar 26, 2026
bc1bae7
todo
teemingc Mar 26, 2026
fb82c52
use file protocol
teemingc Mar 27, 2026
4865f81
forgot to stringify this
teemingc Mar 27, 2026
08770ae
timing issue
teemingc Mar 27, 2026
26d68b9
try to fix timing issues
teemingc Mar 27, 2026
810efdb
scope hot code
teemingc Mar 27, 2026
66d15b2
fix windows posix and drive letter issue
teemingc Mar 28, 2026
5bbf998
add comments
teemingc Mar 28, 2026
8fb8b8b
invalidate ssr manifest on file changes
teemingc Mar 31, 2026
fda77ef
Apply suggestion from @teemingc
teemingc Mar 31, 2026
011698a
Apply suggestion from @teemingc
teemingc Mar 31, 2026
7a90e03
move applyEnvironment hook
teemingc Mar 31, 2026
5305038
Merge branch 'version-3' into fetchable-dev-environment
teemingc Mar 31, 2026
886bdfc
revert
teemingc Mar 31, 2026
9e69f8a
don't think we need to change the preview server
teemingc Mar 31, 2026
9bb226f
fix loud ssr load module
teemingc Mar 31, 2026
08a9f62
format
teemingc Mar 31, 2026
c773b76
fix prerendering?
teemingc Mar 31, 2026
2e9f7a7
fix
teemingc Mar 31, 2026
ccbe06c
Merge branch 'version-3' into fetchable-dev-environment
teemingc Apr 2, 2026
33d52e1
Merge branch 'version-3' into fetchable-dev-environment
teemingc Apr 2, 2026
ea3034a
split out these changes for 15250
teemingc Apr 2, 2026
4ae4899
fix import
teemingc Apr 2, 2026
93ab144
and this one too
teemingc Apr 2, 2026
a2fa7c8
and theeeese too
teemingc Apr 2, 2026
25f4b05
line order
teemingc Apr 2, 2026
3373a34
remove module runner usage
teemingc Apr 3, 2026
02ae873
Merge branch 'version-3' into fetchable-dev-environment
teemingc Apr 3, 2026
22be360
Merge branch 'version-3' into fetchable-dev-environment
teemingc Apr 3, 2026
057b516
Merge branch 'version-3' into fetchable-dev-environment
teemingc Apr 4, 2026
5ee8b3f
move ssr manifest to file
teemingc Apr 4, 2026
fa52c38
chore: autofix lint
github-actions[bot] Apr 4, 2026
a2bf6ec
Revert "chore: autofix lint"
teemingc Apr 4, 2026
67be19c
Reapply "chore: autofix lint"
teemingc Apr 4, 2026
941c0c6
forgot this
teemingc Apr 4, 2026
909cb20
forgot to re-export respond
teemingc Apr 4, 2026
c9ed8a0
add root to matcher filepath
teemingc Apr 4, 2026
93569a7
fix
teemingc Apr 5, 2026
764b56e
Merge branch 'version-3' into fetchable-dev-environment
teemingc Apr 5, 2026
1026dcf
Merge branch 'version-3' into fetchable-dev-environment
teemingc Apr 6, 2026
d4cbc8c
fix
teemingc Apr 6, 2026
e274198
consider base path
teemingc Apr 6, 2026
419bf40
make it a public path
teemingc Apr 6, 2026
6ceb134
posixify
teemingc Apr 6, 2026
a5b6f7e
docs draft
teemingc Apr 6, 2026
c13f2f4
avoid node.js modules
teemingc Apr 6, 2026
b632257
docs?
teemingc Apr 6, 2026
8b41fbc
generate type
teemingc Apr 6, 2026
a6385d1
fixes
teemingc Apr 6, 2026
57b9291
fix types
teemingc Apr 6, 2026
028f34b
revert removing internal read
teemingc Apr 6, 2026
a9a509a
generate types
teemingc Apr 6, 2026
6ce7a8f
fix docs?
teemingc Apr 6, 2026
4b22aca
add types
teemingc Apr 6, 2026
d4b5f15
Merge branch 'version-3' into fetchable-dev-environment
teemingc Apr 23, 2026
c337119
port changes from cloudflare integration branch
teemingc Apr 23, 2026
200b919
delete
teemingc Apr 23, 2026
ca4f597
docs
teemingc Apr 23, 2026
3142fd5
docs
teemingc Apr 23, 2026
03b8bcb
try to fix build error test
teemingc Apr 23, 2026
dda5926
fix static file access during dev
teemingc Apr 23, 2026
2026619
fix prerender tests
teemingc Apr 24, 2026
e99e307
include base path when fetching against vite dev server
teemingc Apr 25, 2026
60c53d7
regenerate types
teemingc Apr 25, 2026
92e8a8e
try this
teemingc Apr 25, 2026
a2bfef8
manual escape
teemingc Apr 25, 2026
6d9d327
clean up import.meta.hot usage
teemingc Apr 25, 2026
cf6086f
correct escaping
teemingc Apr 25, 2026
3be94b7
allow optimizing server deps now that we use rolldown instead of esbuild
teemingc Apr 25, 2026
79d0542
is chai doing its own escaping? try escaping everything
teemingc Apr 25, 2026
3d6bbee
give up on chai api
teemingc Apr 25, 2026
8ec1aab
fix prerendering
teemingc Apr 25, 2026
0b2255e
oops don't reuse name
teemingc Apr 25, 2026
a00415e
avoid chai completely
teemingc Apr 25, 2026
4bdf831
regex hell
teemingc Apr 25, 2026
908a4a6
fix redirected prerendered pages
teemingc Apr 25, 2026
56daa19
revert
teemingc Apr 25, 2026
e55644a
fix prerender redirects for good
teemingc Apr 25, 2026
f23b300
revert to forked processes
teemingc Apr 26, 2026
23741e1
Merge branch 'version-3' into fetchable-dev-environment
teemingc Apr 26, 2026
a8c7be9
optional \r to accomodate windows
teemingc Apr 26, 2026
44e4075
update manifest data when file is changed
teemingc Apr 26, 2026
e4449c7
format
teemingc Apr 26, 2026
c35cbdd
Merge branch 'version-3' into fetchable-dev-environment
teemingc Apr 26, 2026
3aa39e5
add comment to explain
teemingc Apr 26, 2026
97e9c08
improve docs
teemingc Apr 26, 2026
a5507cb
Apply suggestion from @teemingc
teemingc Apr 27, 2026
f68d5ce
fix indentation
teemingc Apr 27, 2026
70bf8fb
Merge branch 'version-3' into fetchable-dev-environment
teemingc Apr 29, 2026
26b4e0c
Merge branch 'version-3' into fetchable-dev-environment
teemingc Apr 30, 2026
f490f88
breaking: move `adapter` to `vite.config.js` (#15780)
teemingc Apr 30, 2026
0f46b75
fix devalue not being imported
teemingc Apr 30, 2026
793c21d
resolve adapter from forked process
teemingc Apr 30, 2026
4bdf3a9
format
teemingc Apr 30, 2026
99c9c44
posixify
teemingc May 1, 2026
b90c07d
fix prerendering
teemingc May 1, 2026
0655fe3
Merge branch 'version-3' into fetchable-dev-environment
teemingc May 1, 2026
d21155e
try fix
teemingc May 1, 2026
32ab8b7
one more
teemingc May 1, 2026
8e57bee
fix
teemingc May 1, 2026
730ac1f
use peer vite
teemingc May 4, 2026
fb1af17
rename analysis entry file
teemingc May 4, 2026
d7bad87
improve error message
teemingc May 4, 2026
6ff5347
remove linebreak
teemingc May 4, 2026
d2a4f34
deduplicate get port, resolve vite peer, and posixify out dir
teemingc May 4, 2026
7a6d83c
use get_port utility
teemingc May 4, 2026
347ad4b
posixify
teemingc May 5, 2026
a6e6ebb
Merge branch 'version-3' into fetchable-dev-environment
teemingc May 5, 2026
47a0741
fix test assertion
teemingc May 5, 2026
d164941
syntax
teemingc May 5, 2026
1d28a02
fix
teemingc May 5, 2026
cd9fb7d
resolve runtime dir outside environment
teemingc May 7, 2026
aa388c5
Update documentation/docs/40-best-practices/07-images.md
teemingc May 14, 2026
65601e3
Update documentation/docs/40-best-practices/07-images.md
teemingc May 14, 2026
e05b368
Merge branch 'version-3' into fetchable-dev-environment
teemingc May 15, 2026
ef29b70
don't need this
teemingc May 15, 2026
c9ccd97
there are no functions in manifest data nodes
teemingc May 15, 2026
cdec269
revert unneeded change
teemingc May 15, 2026
aa3c4f5
revert
teemingc May 15, 2026
4f30cdb
revert unneeded build_server changes
teemingc May 15, 2026
ec78905
Merge branch 'version-3' into fetchable-dev-environment
teemingc May 18, 2026
8fb5bc1
revert
teemingc May 18, 2026
32ac950
Merge branch 'version-3' into fetchable-dev-environment
teemingc May 18, 2026
8254808
Merge branch 'version-3' into fetchable-dev-environment
teemingc May 18, 2026
31e6f29
clean up dev and preview
teemingc May 19, 2026
b6389f7
Merge branch 'version-3' into fetchable-dev-environment
teemingc May 21, 2026
41b6fe5
Merge branch 'version-3' into fetchable-dev-environment
teemingc May 24, 2026
1290eee
Merge branch 'version-3' into fetchable-dev-environment
teemingc May 24, 2026
1cb3805
Merge branch 'version-3' into fetchable-dev-environment
teemingc May 25, 2026
8ce0b54
Merge branch 'version-3' into fetchable-dev-environment
teemingc May 28, 2026
e64d61f
Merge branch 'version-3' into fetchable-dev-environment
teemingc May 29, 2026
2125dec
merge version-3
Rich-Harris Jun 4, 2026
94e03f9
fix
Rich-Harris Jun 5, 2026
f2c57bb
fix
Rich-Harris Jun 5, 2026
454ceda
fix
Rich-Harris Jun 5, 2026
2744283
Merge branch 'version-3' into fetchable-dev-environment
teemingc Jun 30, 2026
4967533
Merge branch 'version-3' into fetchable-dev-environment
teemingc Jun 30, 2026
12ebdc7
Merge branch 'version-3' into fetchable-dev-environment
teemingc Jun 30, 2026
66ffe7d
fixes
teemingc Jun 30, 2026
0b65957
remove vite client injection as its done elsewhere
teemingc Jun 30, 2026
9629cfc
generate types
teemingc Jun 30, 2026
0c4cf25
format
teemingc Jun 30, 2026
2fe4824
small diff
teemingc Jun 30, 2026
659f2e1
Merge branch 'version-3' into fetchable-dev-environment
teemingc Jul 3, 2026
356d32c
place adapter vite plugins first
teemingc Jul 3, 2026
6d9d965
Merge branch 'version-3' into fetchable-dev-environment
teemingc Jul 3, 2026
d6563cc
fix
teemingc Jul 3, 2026
3ad4a3b
another fix
teemingc Jul 3, 2026
10c8dad
Merge branch 'version-3' into fetchable-dev-environment
teemingc Jul 7, 2026
2eba57b
stringify define value
teemingc Jul 7, 2026
6de3f87
fix built params analysis
teemingc Jul 7, 2026
70d880b
Merge branch 'version-3' into fetchable-dev-environment
teemingc Jul 7, 2026
3f297ff
try to fix windows drive letter issue
teemingc Jul 8, 2026
969cd69
Merge branch 'version-3' into fetchable-dev-environment
teemingc Jul 8, 2026
d349af1
fix server asset during dev
teemingc Jul 8, 2026
6e1fc5b
oops
teemingc Jul 8, 2026
56097f9
has to be a peer dep
teemingc Jul 8, 2026
29ee450
fix
teemingc Jul 8, 2026
f8336c4
Merge branch 'version-3' into fetchable-dev-environment
teemingc Jul 8, 2026
de675c4
revert
teemingc Jul 8, 2026
90413af
Update state.svelte.js
teemingc Jul 8, 2026
cd917d6
clean up
teemingc Jul 8, 2026
e18f062
maybe this
teemingc Jul 8, 2026
1395673
bloody windows letter drives
teemingc Jul 8, 2026
9b51a0b
try to fix more window-isms
teemingc Jul 8, 2026
a739796
Merge branch 'version-3' into fetchable-dev-environment
teemingc Jul 8, 2026
83cdaad
good gosh
teemingc Jul 8, 2026
9f49523
always posixify
teemingc Jul 8, 2026
1cde440
it doesn't matter
teemingc Jul 8, 2026
f3a7f08
fix windows
teemingc Jul 8, 2026
3b54898
Merge branch 'version-3' into fetchable-dev-environment
teemingc Jul 9, 2026
f7ae279
Merge branch 'version-3' into fetchable-dev-environment
teemingc Jul 9, 2026
feccf28
Merge branch 'version-3' into fetchable-dev-environment
teemingc Jul 9, 2026
bcc0751
redundant
teemingc Jul 9, 2026
5530692
Merge branch 'version-3' into fetchable-dev-environment
teemingc Jul 9, 2026
528125a
revert
teemingc Jul 9, 2026
85d8171
unnecessary
teemingc Jul 9, 2026
ead23dd
revert
teemingc Jul 9, 2026
3444792
fix
teemingc Jul 9, 2026
0fadda7
Merge branch 'version-3' into fetchable-dev-environment
teemingc Jul 9, 2026
400790f
separate analysis and prerender changes
teemingc Jul 10, 2026
52db6b1
Delete short-chefs-stare.md
teemingc Jul 10, 2026
f9204a6
split
teemingc Jul 10, 2026
9f27bd2
firnat
teemingc Jul 10, 2026
13dea39
windowssssss
teemingc Jul 10, 2026
4547c7c
Merge branch 'version-3' into fetchable-dev-environment
teemingc Jul 13, 2026
5170566
Merge branch 'version-3' into fetchable-dev-environment
teemingc Jul 13, 2026
26290c4
Merge branch 'version-3' into fetchable-dev-environment
teemingc Jul 14, 2026
812865c
use listening address
teemingc Jul 14, 2026
80257c2
stringify
teemingc Jul 14, 2026
334b095
trailing slash
teemingc Jul 14, 2026
5da2226
use URL constructor
teemingc Jul 15, 2026
413e12b
merge version-3. sure hope i didn't mess it up
Rich-Harris Jul 18, 2026
5dcdc31
merge
Rich-Harris Jul 19, 2026
987889c
Merge branch 'version-3' into fetchable-dev-environment
Rich-Harris Jul 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/rich-wombats-flash.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@sveltejs/kit': major
---

breaking: remove `adapter.emulate`
51 changes: 42 additions & 9 deletions documentation/docs/25-build-and-deploy/99-writing-adapters.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,6 @@ export default function (options) {
async adapt(builder) {
// adapter implementation
},
async emulate() {
return {
async platform({ config, prerender }) {
// the returned object becomes `event.platform` during dev, build and
// preview. Its shape is that of `App.Platform`
}
}
},
supports: {
read: ({ config, route }) => {
// Return `true` if the route with the given `config` can use `read`
Expand All @@ -51,7 +43,7 @@ export default function (options) {
}
```

Of these, `name` and `adapt` are required. `emulate`, `vite.plugins` and `supports` are optional.
Of these, `name` and `adapt` are required. `vite.plugins` and `supports` are optional.

Within the `adapt` method, there are a number of things that an adapter should do:

Expand All @@ -66,3 +58,44 @@ Within the `adapt` method, there are a number of things that an adapter should d
- Put the user's static files and the generated JS/CSS in the correct location for the target platform

Where possible, we recommend putting the adapter output under the `build/` directory with any intermediate output placed under `.svelte-kit/[adapter-name]`.

## Configuring the development and preview experience

By default, SvelteKit runs your server code through a Node.js runtime when running `vite dev` and `vite preview`. You can change this behaviour by adding a Vite plugin that has a `configureServer` and `configurePreviewServer` hook to route requests to [a different runtime](https://vite.dev/guide/api-environment-runtimes).

The main Vite server environment SvelteKit uses is named `ssr`. You can change its settings by referencing it in the `config` hook of a Vite plugin.

```js
// @errors: 2304 1005 1109
config(userConfig) {
userConfig.environments.ssr = { ... }
}
```

You can also create your own server entry file by importing the `Server` class from `sveltekit:server`, the environment variables loaded by Vite through `env` from `sveltekit:env`, and your app-specific information as `manifest` from `sveltekit:server-manifest`.

```js
import { env } from 'sveltekit:env';
import { Server } from 'sveltekit:server';
import { manifest } from 'sveltekit:server-manifest';

const server = new Server(manifest);

await server.init({ env });

export default {
/**
* @param {Request} request
* @returns {Promise<Response>}
*/
async fetch(request) {
return await server.respond(request, {
getClientAddress: () => {
return request.headers.get('how-your-platform-exposes-the-remote-address')
}
});
}
}

import.meta.hot?.accept();
```
36 changes: 1 addition & 35 deletions packages/adapter-cloudflare/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { copyFileSync, existsSync, readFileSync, writeFileSync } from 'node:fs';
import path from 'node:path';
import process from 'node:process';
import { fileURLToPath } from 'node:url';
import { getPlatformProxy, unstable_readConfig } from 'wrangler';
import { unstable_readConfig } from 'wrangler';
import {
is_building_for_cloudflare_pages,
validate_worker_settings,
Expand Down Expand Up @@ -178,40 +178,6 @@ export default function (options = {}) {
writeFileSync(`${dest}/.assetsignore`, generate_assetsignore(), { flag: 'a' });
}
},
emulate() {
// we want to invoke `getPlatformProxy` only once, but await it only when it is accessed.
// If we would await it here, it would hang indefinitely because the platform proxy only resolves once a request happens
const get_emulated = async () => {
const proxy = await getPlatformProxy(options.platformProxy);
const platform = {
env: proxy.env,
ctx: proxy.ctx,
context: proxy.ctx, // deprecated in favor of ctx
caches: proxy.caches,
cf: proxy.cf
};
/** @type {Record<string, any>} */
const env = {};
const prerender_platform = /** @type {App.Platform} */ (/** @type {unknown} */ ({ env }));
for (const key in proxy.env) {
Object.defineProperty(env, key, {
get: () => {
throw new Error(`Cannot access platform.env.${key} in a prerenderable route`);
}
});
}
return { platform, prerender_platform };
};

let emulated;

return {
platform: async ({ prerender }) => {
emulated ??= await get_emulated();
return prerender ? emulated.prerender_platform : emulated.platform;
}
};
},
supports: {
read: () => true,
instrumentation: () => true
Expand Down
3 changes: 2 additions & 1 deletion packages/adapter-cloudflare/test/apps/workers/test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ test('worker', async ({ page }) => {
await expect(page.locator('h1')).toContainText('Sum: 3');
});

test('ctx', async ({ request }) => {
// TODO: re-enable once we add the vite cloudflare plugin
test.skip('ctx', async ({ request }) => {
const res = await request.get('/ctx');
expect(await res.text()).toBe('ctx works');
});
Expand Down
2 changes: 1 addition & 1 deletion packages/adapter-cloudflare/test/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export const config = {
command: process.env.DEV ? 'pnpm dev' : 'pnpm build && pnpm preview',
port: process.env.DEV ? 5173 : 8787
},
retries: process.env.CI ? 2 : number_from_env('KIT_E2E_RETRIES', 0),
retries: process.env.CI ? 0 : number_from_env('KIT_E2E_RETRIES', 0),

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Retries cause false-positives when Vite runs optimizeDeps e.g., it's not optimised the first try, Vite discovers it, then the second try succeeds. We could also set it to 2 only for non-dev tests

projects: [
{
name: 'chromium'
Expand Down
3 changes: 3 additions & 0 deletions packages/kit/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,9 @@
"types": "./types/index.d.ts",
"import": "./src/exports/internal/server/index.js"
},
"./internal/devalue": {
"import": "./src/exports/internal/devalue.js"
},
"./node": {
"types": "./types/index.d.ts",
"import": "./src/exports/node/index.js"
Expand Down
1 change: 1 addition & 0 deletions packages/kit/src/core/generate_manifest/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ export function generate_manifest({
appDir: ${s(build_data.app_dir)},
appPath: ${s(build_data.app_path)},
assets: new Set(${s(assets)}),
base: ${s(build_data.base)},
mimeTypes: ${s(mime_types)},
_: {
client: ${uneval(build_data.client)},
Expand Down
10 changes: 2 additions & 8 deletions packages/kit/src/core/postbuild/analyse.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import { extract_svelte_config, load_vite_config } from '../config/index.js';
import { forked } from '../../utils/fork.js';
import { ENDPOINT_METHODS } from '../../constants.js';
import { has_server_load, resolve_route } from '../../utils/routing.js';
import { check_feature } from '../../utils/features.js';
import { createReadableStream } from '@sveltejs/kit/node';
import { PageNodes } from '../../utils/page_nodes.js';

Expand Down Expand Up @@ -116,13 +115,8 @@ async function analyse({
const prerender = page?.prerender ?? endpoint?.prerender;

if (prerender !== true) {
for (const feature of list_features(
route,
manifest_data,
server_manifest,
tracked_features
)) {
check_feature(route.id, route_config, feature, config.adapter);

@teemingc teemingc Jul 10, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Had to temporarily remove this because the implementation has changed such that it only works inside the Vite environment. It's re-added in the PR stacked on top of this

for (const _ of list_features(route, manifest_data, server_manifest, tracked_features)) {
// TODO: check feature while inside the environment
}
}

Expand Down
5 changes: 1 addition & 4 deletions packages/kit/src/core/postbuild/prerender.js
Original file line number Diff line number Diff line change
Expand Up @@ -164,8 +164,6 @@ async function prerender({ hash, out, manifest_path, metadata, verbose, env, vit
return { prerendered, prerender_map };
}

const emulator = await config.adapter?.emulate?.();

/** @type {import('types').Logger} */
const log = logger({ verbose });

Expand Down Expand Up @@ -321,8 +319,7 @@ async function prerender({ hash, out, manifest_path, metadata, verbose, env, vit

// stuff in `static`
return readFileSync(join(config.files.assets, file));
},
emulator
}
});

const encoded_id = response.headers.get('x-sveltekit-routeid');
Expand Down
12 changes: 12 additions & 0 deletions packages/kit/src/core/utils.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/** @import { ViteDevServer } from 'vite' */
import fs from 'node:fs';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
Expand Down Expand Up @@ -112,3 +113,14 @@ export function list_files(dir, filter) {

return files;
}

/**
* Gets the listening address of a Vite dev server. Otherwise, it throws an error
* @param {ViteDevServer} server
* @returns {string}
*/
export function get_address(server) {
const address = server.resolvedUrls?.local?.[0];
if (!address) throw new Error('Failed to determine Vite dev server address');
return address;
}
3 changes: 3 additions & 0 deletions packages/kit/src/exports/internal/devalue.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// reexporting this allows us to use devalue from generated modules since importing
// devalue directly doesn't work unless the user has it in their package.json
export * from 'devalue';
17 changes: 1 addition & 16 deletions packages/kit/src/exports/public.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,6 @@ export interface Adapter {
*/
instrumentation?: () => boolean;
};
/**
* Creates an `Emulator`, which allows the adapter to influence the environment
* during dev, build and prerendering.
*/
emulate?: () => MaybePromise<Emulator>;
vite?: {
/**
* Plugins provided by the adapter are placed before any of SvelteKit's own plugins.
Expand Down Expand Up @@ -345,17 +340,6 @@ export interface Cookies {
serialize: (name: string, value: string, opts: import('cookie').SerializeOptions) => string;
}

/**
* A collection of functions that influence the environment during dev, build and prerendering
*/
export interface Emulator {
/**
* A function that is called with the current route `config` and `prerender` option
* and returns an `App.Platform` object
*/
platform?(details: { config: any; prerender: PrerenderOption }): MaybePromise<App.Platform>;
}

export interface KitConfig {
/**
* Your [adapter](https://svelte.dev/docs/kit/adapters) is run when executing `vite build`. It determines how the output is converted for different platforms.
Expand Down Expand Up @@ -1775,6 +1759,7 @@ export interface SSRManifest {
appPath: string;
/** Static files from `config.files.assets` and the service worker (if any). */
assets: Set<string>;
base: string;
mimeTypes: Record<string, string>;

/** @internal private fields */
Expand Down
Loading
Loading