Skip to content

Commit 02c7a68

Browse files
authored
[fix] Throw on invalid browser options (#6086)
* [fix] Throw on invalid browser options Throw error if browser.hydrate is false and brower.router is true. The router needs at least the router component to be hydrated, and we currently can't dynamically compile Svelte components as hydratable or not on case-by-case basis Closes #4382 * typo
1 parent 51b20ea commit 02c7a68

File tree

3 files changed

+26
-3
lines changed

3 files changed

+26
-3
lines changed

.changeset/ten-gorillas-itch.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/kit': patch
3+
---
4+
5+
Throw error if browser.hydrate is false and browser.router is true

packages/kit/src/core/config/index.spec.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,19 @@ test('fails if kit.appDir ends with slash', () => {
246246
}, /^config\.kit\.appDir cannot start or end with '\/'. See https:\/\/kit\.svelte\.dev\/docs\/configuration$/);
247247
});
248248

249+
test('fails if browser.hydrate is false and browser.router is true', () => {
250+
assert.throws(() => {
251+
validate_config({
252+
kit: {
253+
browser: {
254+
hydrate: false,
255+
router: true
256+
}
257+
}
258+
});
259+
}, /^config\.kit\.browser\.router cannot be true if config\.kit\.browser\.hydrate is false$/);
260+
});
261+
249262
test('fails if paths.base is not root-relative', () => {
250263
assert.throws(() => {
251264
validate_config({

packages/kit/src/core/config/options.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,14 @@ const options = object(
107107
return input;
108108
}),
109109

110-
browser: object({
111-
hydrate: boolean(true),
112-
router: boolean(true)
110+
browser: validate({ hydrate: true, router: true }, (input, keypath) => {
111+
const value = object({ hydrate: boolean(true), router: boolean(true) })(input, keypath);
112+
if (!value.hydrate && value.router) {
113+
throw new Error(
114+
'config.kit.browser.router cannot be true if config.kit.browser.hydrate is false'
115+
);
116+
}
117+
return value;
113118
}),
114119

115120
csp: object({

0 commit comments

Comments
 (0)