feat: allow adapter Vite plugins to be either pre or post - #16711
Merged
Conversation
|
Install the latest version of pnpm add https://pkg.svelte.dev/@sveltejs/kit/c/d54f92a869222cf0568f54da62b0b16281827752Open in |
🦋 Changeset detectedLatest commit: d54f92a The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
teemingc
reviewed
Aug 10, 2026
… required, but the runtime treats them as optional, forcing adapter authors to always specify both.
This commit fixes the issue reported at packages/kit/src/exports/public.d.ts:75
## Bug
The new adapter `vite.plugins` option was typed with both sub-properties required:
```ts
vite?: {
plugins?: {
pre: Plugin[]; // required
post: Plugin[]; // required
};
};
```
However, the runtime in `packages/kit/src/exports/vite/index.js` (lines ~2059 and ~2070) consumes them with optional chaining and filters out falsy values:
```js
return /** @type {Plugin[]} */ (
[
svelte_config.kit.adapter?.vite?.plugins?.pre,
// ...SvelteKit's own plugins...
svelte_config.kit.adapter?.vite?.plugins?.post
].filter(Boolean)
);
```
Because of `?.` plus `.filter(Boolean)`, either `pre` or `post` being `undefined` is fully tolerated at runtime.
### Trigger
An adapter author who only wants to inject pre-plugins writes:
```ts
vite: { plugins: { pre: [myPlugin] } }
```
This is a valid, working configuration at runtime, but TypeScript reports an error because `post` is declared required (`Property 'post' is missing`). The author is forced to add `post: []` (and vice versa) purely to satisfy the types — an ergonomic regression from the previous `plugins?: Plugin[]` shape.
## Fix
Marked both `pre` and `post` as optional in the two generated/source type definitions so the types match the runtime's optional handling:
- `packages/kit/src/exports/public.d.ts`
- `packages/kit/types/index.d.ts`
```ts
plugins?: {
pre?: Plugin[];
post?: Plugin[];
};
```
The docs example (`documentation/docs/25-build-and-deploy/99-writing-adapters.md`) still shows both `pre: []` and `post: []`, which remains valid as an illustrative example now that each is individually optional.
Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>
Co-authored-by: teemingc <chewteeming01@gmail.com>
Rich-Harris
pushed a commit
that referenced
this pull request
Aug 10, 2026
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to version-3, this PR will be updated.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ `version-3` is currently in **pre mode** so this branch has prereleases rather than normal releases. If you want to exit prereleases, run `changeset pre exit` on `version-3`.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ # Releases ## @sveltejs/kit@3.0.0-next.18 ### Major Changes - breaking: separate adapter Vite plugins into `pre` and `post` ([#16711](#16711)) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
part of #16705
Please don't delete this checklist! Before submitting the PR, please make sure you do the following:
Tests
pnpm testand lint the project withpnpm lintandpnpm checkChangesets
pnpm changesetand following the prompts. Changesets that add features should beminorand those that fix bugs should bepatch. Please prefix changeset messages withfeat:,fix:, orchore:.