diff --git a/.changeset/ten-gorillas-itch.md b/.changeset/ten-gorillas-itch.md new file mode 100644 index 000000000000..15790d6cbbbe --- /dev/null +++ b/.changeset/ten-gorillas-itch.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +Throw error if browser.hydrate is false and browser.router is true diff --git a/packages/kit/src/core/config/index.spec.js b/packages/kit/src/core/config/index.spec.js index 3cd626d4910c..e9d6e0e66c44 100644 --- a/packages/kit/src/core/config/index.spec.js +++ b/packages/kit/src/core/config/index.spec.js @@ -246,6 +246,19 @@ test('fails if kit.appDir ends with slash', () => { }, /^config\.kit\.appDir cannot start or end with '\/'. See https:\/\/kit\.svelte\.dev\/docs\/configuration$/); }); +test('fails if browser.hydrate is false and browser.router is true', () => { + assert.throws(() => { + validate_config({ + kit: { + browser: { + hydrate: false, + router: true + } + } + }); + }, /^config\.kit\.browser\.router cannot be true if config\.kit\.browser\.hydrate is false$/); +}); + test('fails if paths.base is not root-relative', () => { assert.throws(() => { validate_config({ diff --git a/packages/kit/src/core/config/options.js b/packages/kit/src/core/config/options.js index 9d89fd4ee6fe..c82f008d8253 100644 --- a/packages/kit/src/core/config/options.js +++ b/packages/kit/src/core/config/options.js @@ -107,9 +107,14 @@ const options = object( return input; }), - browser: object({ - hydrate: boolean(true), - router: boolean(true) + browser: validate({ hydrate: true, router: true }, (input, keypath) => { + const value = object({ hydrate: boolean(true), router: boolean(true) })(input, keypath); + if (!value.hydrate && value.router) { + throw new Error( + 'config.kit.browser.router cannot be true if config.kit.browser.hydrate is false' + ); + } + return value; }), csp: object({