Skip to content

chore: replace netlify-cli with @netlify/dev#14686

Merged
teemingc merged 18 commits into
mainfrom
netlify-dev
Jan 16, 2026
Merged

chore: replace netlify-cli with @netlify/dev#14686
teemingc merged 18 commits into
mainfrom
netlify-dev

Conversation

@benmccann

@benmccann benmccann commented Oct 10, 2025

Copy link
Copy Markdown
Member

Removes over 3,500 lines from the lockfile

@changeset-bot

changeset-bot Bot commented Oct 10, 2025

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 72021fb

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@benmccann benmccann changed the title chore: replace netlify-cli with netlify dev package chore: replace netlify-cli with @netlify/dev Oct 10, 2025
@benmccann benmccann force-pushed the netlify-dev branch 2 times, most recently from 0ae8263 to 44c2d88 Compare October 10, 2025 16:02
@teemingc teemingc marked this pull request as ready for review January 15, 2026 08:58
@teemingc

teemingc commented Jan 15, 2026

Copy link
Copy Markdown
Member

We can't use srvx because it doesn't work on Node 18 and our test runners still run on that. I've switched it to use the built-in Node http server

@teemingc

Copy link
Copy Markdown
Member

One last wrinkle to iron out is that running the edge function tries to install deno and it fails in CI only:

  [WebServer] An error occurred while setting up the Netlify Edge Functions environment: Error: Failed to set up Deno for Edge Functions.
  [WebServer] Error: Command failed with ETXTBSY: /home/runner/.config/netlify/deno-cli/deno --version
  [WebServer] spawn ETXTBSY
  [WebServer] Downloaded to: /home/runner/.config/netlify/deno-cli/deno
  [WebServer] Platform: linux/x64
  [WebServer] 
  [WebServer] This may be caused by permissions, antivirus software, or platform incompatibility.
  [WebServer] 
  [WebServer] Try clearing the Deno cache directory and retrying:
  [WebServer]   /home/runner/.config/netlify/deno-cli
  [WebServer] 
  [WebServer] Supported Deno versions: ^2.2.4
  [WebServer] 
  [WebServer] To install Deno manually: https://ntl.fyi/install-deno

Comment thread .github/workflows/ci.yml
Comment on lines +233 to +236
# required for testing netlify edge functions
- uses: denoland/setup-deno@v2
with:
deno-version: ^2.2.4

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'm not very familiar with GitHub actions and CI. Installing deno this way solves our issue explained here #14686 (comment) . Does adding this have any implications I'm not aware of?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

not a fan of this. why can't it run on node? If we allow this, would we consider adding others for vercel, bun or whatnot in the future?

if we want to test the runtime part of adapters, it should probably be in a separate workflow to create tailored environments for the adapter. The one here is not really matching netlify at all as there's not only deno but a host of other things that isn't present there.

@teemingc teemingc Jan 15, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Netlify edge functions run on the Deno runtime so it tries to install it when spinning up a Netlify edge function for the preview server. Currently, we have workerd too for Cloudflare that's installed along with Wrangler when we run Cloudflare tests. I don't know why @netlify/dev doesn't work similarly.

So far, Vercel has nothing we can run locally so I think we're suppose to set up deployments for tests at some point (or maybe we should do this for all of them?)

Should we split up the adapter tests into their own workflows?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Wouldn't this also require deno for local testing? In this case it would have to be documented in our contributing and i think that makes an even stronger case for separating it out into a separate test script.

@teemingc teemingc Jan 15, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Surprisingly not. It just works when running it locally but not in CI due to permission settings. Maybe @serhalp can weigh in on how to best handle this. I'll dig into the @netlify/dev code later to see how it's handled

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

isolation is also about execution time and resources. why add deno to a test matrix with a node dimension if it's hardly used?

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.

I imagine the installation should get cached. Splitting into new jobs also means that we're paying some setup costs in each of the jobs which will burn more total CI minutes

@teemingc teemingc Jan 16, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I do wonder about Ben's point but I'm not sure where the greater cost lies. It does make a lot of sense to separate the build tests from the runtime tests (especially for cloudflare and netlify edge which will be the exact same in each node matrix). But I think we don't have many runtime tests yet to truly benefit from this.

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.

Ah, avoiding running them on multiple versions of Node when we don't even run them in Node is a pretty good argument. I hadn't thought about that. It will save us total CI minutes and probably finish faster on average, so I'd be in favor if it's something you want to take on

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I've created an issue for that here #15175 it will probably be useful when we have more Cloudflare/Netlify tests after we've added the environment API

Comment thread packages/adapter-netlify/test/preview.js Outdated
Comment thread packages/adapter-netlify/test/apps/basic/package.json Outdated

@benmccann benmccann left a comment

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.

I was going to approve this PR, but I can't since I'm the original author. Please consider this comment my approval and you can give it one on my behalf

@teemingc teemingc merged commit 9f12e7e into main Jan 16, 2026
23 of 25 checks passed
@teemingc teemingc deleted the netlify-dev branch January 16, 2026 16:51
KiraPC pushed a commit to KiraPC/sveltekit that referenced this pull request Feb 5, 2026
* chore: replace netlify-cli with netlify dev package

* update lockfile

* match modern netlify build output

* add doc

* remove srvx because it doesn't work with node 18

* format

* switch to node

* fix format and lint ignore

* no more srvx

* try installing deno for netlify edge in github action

* oops indentation

* pass port in through npm script

* remove port from npm script

* log when server started

* prettier

* generate types

---------

Co-authored-by: Tee Ming <[email protected]>
teemingc added a commit that referenced this pull request Feb 5, 2026
* fix(adapter-node): validate ORIGIN env var at startup (#14978)

- Add parse_origin() utility to validate and normalize origin URLs
- Server now fails fast with clear error for invalid ORIGIN
- Automatically normalize default ports and strip path/query/hash
- Add tests for origin validation

* add changeset

* chore(deps): update pnpm to v10.25.0 (#15043)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore: Test remote functions with full-async setup (#15033)

* checkpoint

* donesies

* fix: lockfile

* update svelte-check

* add .env for test app

* fix flaky test

* polyfill withResolvers

* chore(deps): update actions/upload-artifact action to v6 (#15057)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.26.0 (#15065)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix: make typescript an optional peer dependency (#15074)

Co-authored-by: Ben McCann <[email protected]>

* docs: update Wrangler command for Cloudflare Workers testing (#15077)

* chore(deps): update pnpm to v10.26.2 (#15072)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* docs: clarify remote function import (#15082)

Tiny detail to make it super clear the import is for remote functions.

* docs: update description for `static` folder (#15087)

Co-authored-by: Ben McCann <[email protected]>

* chore: upgrade Playwright (#15089)

* chore: Upgrade Playwright

* checkpoint, not sure what else is going wrong

* i have never been so happy to see a test failure

* fix lockfile maybe

* fix: remove playwright

* more flaky tests

* fix clicknav

* fix another flaky test

* improve further

* another clicknav usage

* chore: upgrade jws (#15095)

* chore: upgrade js-yaml (#15096)

* feat: expose `waitUntil` also for serverless runtime & add docs (#14725)

* improvement: expose `waitUntil` also for serverless runtime & add documentation

* changeset

* revert previous changes and add docs

* revert previous changes

* change changeset

---------

Co-authored-by: Tee Ming <[email protected]>

* chore(deps): update vitest monorepo to v4 (major) (#14789)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tee Ming <[email protected]>

* fix: avoid overridden Vite config warning with Vitest 4 (#15121)

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: teemingc <[email protected]>
Co-authored-by: Ben McCann <[email protected]>

* docs: remove `$lib` path customization (#14812)

* docs: remove `$lib` path customization

Updated documentation for $lib import alias in SvelteKit.

* Update documentation/docs/98-reference/26-$lib.md

Co-authored-by: Tee Ming <[email protected]>

* chore: remove deprecated comment

---------

Co-authored-by: Tee Ming <[email protected]>

* fix: use hasOwn check when deep-setting object properties (#15127)

* Version Packages (#15091)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: upgrade to pnpm 10.27.0 (#15128)

* fix: add `has(name, value)` overload for URLSearchParams (#15076)

* Add support for SearchParams.has(name, value) overload

* generate changeset

* Update .changeset/sharp-tires-work.md

---------

Co-authored-by: Elliott Johnson <[email protected]>
Co-authored-by: Elliott Johnson <[email protected]>

* Apply suggestions from code review

Co-authored-by: Tee Ming <[email protected]>

* fix: support instrumentation for `vite preview` (#15105)

The `instrumentation.server.js` file is now imported when running
`vite preview`. Unfortunately, since it's not the first thing that's
imported (all of Vite's depedencies are imported first), some
instrumentation that rely on monkey-patching imports might not work
properly, but at least we're importing it before the server code.
However, this matches the existing behaviour of `vite dev`.

See: https://github.com/sveltejs/kit/blob/51214794b40b2fc533b06cb8344e84e661f90be0/packages/kit/src/exports/vite/dev/index.js#L507-L513

* chore: run pnpm dedupe (#15134)

* fix: add `experimental.forkPreloads` flag (#15135)

* feat: add `experimental.enhancedPreloading` flag

Adds a new experimental flag to gate the use of Svelte's `fork` API for
preloading. The flag defaults to `false`, disabling the fork-based
preloading behavior until explicitly enabled.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>

* changeste

* chore: rename `enhancedPreloading` to `forkPreloads`

Co-Authored-By: Claude Opus 4.5 <[email protected]>

---------

Co-authored-by: Claude Opus 4.5 <[email protected]>

* chore: fix prettier ignoring source code in with build in the name (#15133)

* avoid prettier ignoring files that contain build in their name

* fix global ignore ignoring directories with build name

* prettier

* Update .prettierignore

* Update .prettierignore

* Version Packages (#15129)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* breaking: remove `buttonProps` from experimental remote form functions (#14622)

* breaking: remove `buttonProps` from experimental remote form functions

use e.g. `<button {...myForm.fields.action.as('submit', 'register')}>Register</button>` button instead

* fix

* error in dev on buttonProps access

* fix

* fix tests

* tweak

* regenerate

---------

Co-authored-by: Rich Harris <[email protected]>
Co-authored-by: Rich Harris <[email protected]>

* Revert "breaking: remove `buttonProps` from experimental remote form function…" (#15143)

This reverts commit 4f9870d.

* feat: add env vars for keepAliveTimeout and headersTimeout (#15125)

* Check for and apply timeouts for keepAlive and headers

* Update docs with new timeout env vars

* Add changeset for new timeouts

* Run the formatter

* Tweak the docs wording a bit

* Check for empty vars before parsing and validating

* Update documentation/docs/25-build-and-deploy/40-adapter-node.md

Co-authored-by: Tee Ming <[email protected]>

* Add a timeout_env helper with corresponding tests

* fix: convert adapter-node tests to TypeScript for project service compatibility

The tsconfig include pattern with brace expansion {js,ts} was not being
recognized by TypeScript's project service used by ESLint. Split into
separate patterns and converted test files to TypeScript.

* format

---------

Co-authored-by: Tee Ming <[email protected]>
Co-authored-by: Elliott Johnson <[email protected]>

* chore: Add AGENTS.md, symlink copilot instructions (#15145)

* chore: Add AGENTS.md, symlink copilot instructions

* clean up

* Version Packages (#15146)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: remove unused is_http_method helper and method set to (#15152)

* fix: avoid overriding Vite default `base` when running Vitest 4 (#14866)

* using same default base

* add changeset

* kit_base_path kit_paths_base ><

* Apply suggestion from @teemingc

---------

Co-authored-by: Tee Ming <[email protected]>

* docs: remove old references about `invalid.fieldName(...)` for issues (#15118)

* Initial plan

* docs: fix invalid() documentation to reflect actual API

Co-authored-by: teemingc <[email protected]>

* docs: add changeset for invalid() documentation fix

Co-authored-by: teemingc <[email protected]>

* Delete .changeset/brown-impalas-judge.md

* Clarify usage of invalid function in validation

Updated the explanation of the `invalid` function to include its origin from `@sveltejs/kit` and clarified its usage.

* Update documentation/docs/20-core-concepts/60-remote-functions.md

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: teemingc <[email protected]>
Co-authored-by: Tee Ming <[email protected]>
Co-authored-by: Rich Harris <[email protected]>

* fix: await initialization on every request to prevent race condition (#15161)

* fix(adapter-cloudflare): await initialization on every request to prevent race condition

* Create changeset

Changeset funny-pets-melt.md + version bump (patch)

* Apply suggestion from @teemingc

---------

Co-authored-by: Tee Ming <[email protected]>

* chore: Upgrade devalue (#15172)

* Merge commit from fork

* ensure decoded resolved path is compared with decoded url.pathname

* remote resources shouldn't be rerouted

* actually it doesn't matter because reroute doesn't run anyway

* add validations for node adapter host, protocol, and port

* edge case

* there

* changeset

* Update handler.js

Co-authored-by: Ben McCann <[email protected]>

* Update handler.js

Co-authored-by: Ben McCann <[email protected]>

* Update handler.js

* Update handler.js

Co-authored-by: Ben McCann <[email protected]>

* Update packages/adapter-node/src/handler.js

Co-authored-by: Ben McCann <[email protected]>

* wrap fetch call

* Apply suggestion from @teemingc

---------

Co-authored-by: Ben McCann <[email protected]>

* Merge commit from fork

* fix: Add length checks to remote forms

* don't pre-instantiate a huge buffer

* Update .changeset/thin-dodos-reply.md

Co-authored-by: Ben McCann <[email protected]>

* move errors to util function

* test: avoid preallocating remote form buffers

* test: make remote form allocation regression fail on old code

---------

Co-authored-by: Ottomated <[email protected]>
Co-authored-by: ottomated <[email protected]>
Co-authored-by: Ben McCann <[email protected]>
Co-authored-by: Junha Heo <[email protected]>

* chore: Upgrade svelte (#15173)

* lockfile

* Version Packages (#15162)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: fix lint errors (#15174)

* generate types

* format

* chore: replace `netlify-cli` with `@netlify/dev` (#14686)

* chore: replace netlify-cli with netlify dev package

* update lockfile

* match modern netlify build output

* add doc

* remove srvx because it doesn't work with node 18

* format

* switch to node

* fix format and lint ignore

* no more srvx

* try installing deno for netlify edge in github action

* oops indentation

* pass port in through npm script

* remove port from npm script

* log when server started

* prettier

* generate types

---------

Co-authored-by: Tee Ming <[email protected]>

* chore: update suggestion message (#15165)

* chore: upgrade dependencies (#15176)

* chore: prevent two concurrent running release workflows (#15160)

* Revert "Revert "breaking: remove `buttonProps` from experimental remote form …" (#15144)

This reverts commit 3305022.

* fix: compatibility with vite-plugin-svelte@7 (#15179)

* Version Packages (#15177)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: docs update on `vitePreprocess` (#15185)

* fix: don't send "Vary: Accept-Encoding" header when precompress=false (#15182)

* Disable sirv compression checks when precompress=false

* Add changeset

* Update .changeset/sweet-spoons-study.md

---------

Co-authored-by: Elliott Johnson <[email protected]>

* fix: include `hooks.server` and `hooks.universal` as entrypoints to give them stable manifest identifiers (#15178)

* fix: include `hooks.server` and `hooks.universal` as entrypoints to give them stable manifest identifiers

* changeset

* yep

* lockfile

---------

Co-authored-by: Tee Ming <[email protected]>

* fix: Skip failing tests on async (#15189)

* fix: preload links if href changes (#15191)

* test

* fix

* changeset

* docs: update cloudflare adapter package description and misc (#15164)

* simplify workers and pages distinction

* support workers ci in adapter auto

* add todo

* remove todo

* improve error message

* spacing

* Update packages/adapter-auto/index.js

Co-authored-by: Ben McCann <[email protected]>

* validate main key and fix relative import paths

* better comment

* allow spa static assets configuration

* add validation error reasons

* docs formatting

* make compatibility date generic

* mention workers ci

* grammar

* integrate #14871 thanks to penalosa

* add test for workers_ci

* format

* update test

* split out

* chore

* Update packages/adapter-cloudflare/package.json

Co-authored-by: Elliott Johnson <[email protected]>

---------

Co-authored-by: Chew Tee Ming <[email protected]>
Co-authored-by: Ben McCann <[email protected]>
Co-authored-by: Elliott Johnson <[email protected]>

* fix: ensure injected paths are prefixed with `./` (#15163)

* simplify workers and pages distinction

* support workers ci in adapter auto

* add todo

* remove todo

* improve error message

* spacing

* Update packages/adapter-auto/index.js

Co-authored-by: Ben McCann <[email protected]>

* validate main key and fix relative import paths

* better comment

* allow spa static assets configuration

* add validation error reasons

* docs formatting

* make compatibility date generic

* mention workers ci

* grammar

* integrate #14871 thanks to penalosa

* add test for workers_ci

* format

* update test

* split out adapter-auto changes

* remove unrelated changes

* this too

---------

Co-authored-by: Chew Tee Ming <[email protected]>
Co-authored-by: Ben McCann <[email protected]>

* docs: convert `picklist` options to a `const` array (#14616)

* fix: prevent isr routes from handling remote function calls (#15085) (#15098)

* fix: prevent isr routes from handling remote function calls (#15085)

* add changeset for observability changes

* fix: improve `fields` type for generic components (#14974)

* fix: improves fields type for generic components

* changeset

* fix generated types

* cleaner type for intellisense

---------

Co-authored-by: Elliott Johnson <[email protected]>

* Version Packages (#15186)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: upgrade dependencies (#15201)

* chore(deps): update dependency @netlify/edge-functions to v3 (#14772)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore: add closing angle bracket (#15205)

* fix: reexport browser/dev from esm-env (#15206)

* chore: upgrade netlify/dev library (#15210)

* fix: ensure CSS URLs are correct when inlining client stylesheets (#15153)

* add fix and test
format

* add unit test

* changeset

* add test for inlining conditionally rendered component css

* format

* Apply suggestion from @teemingc

* Apply suggestion from @teemingc

* Update css.js

* handle whitespace, add some additional test cases

* add failing test for assets in static dir

* bump svelte

* this should just work

* fix lockfile

* ok its working now

* last fix

* format

* push wip

* tests are passing

* split tests

* rename parser to parse

* hoist regexes

* use test.each

* add test for content and comments

* rename assets to paths_assets

* add tests for escaped characters

* add test for encoded characters

* safeguard against trailing slashes

* decode vite asset filenames

* a bit of clean up

* oops

* tippex comments

* tippex strings

* tippex wip

* harden comment and escaped character tests

* account for nested app dir

* bump svelte

* chore: fix tippex and add test cases

---------

Co-authored-by: Elliott Johnson <[email protected]>
Co-authored-by: Rich Harris <[email protected]>

* fix: use validated args in batch resolver (#15215)

Co-authored-by: Elliott Johnson <[email protected]>
Co-authored-by: Rishab49 <[email protected]>

* chore(deps): update dependency set-cookie-parser to v3 (#15155)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix: only match rest params with matchers when the matcher matches (#15216)

* chore: restore previous explicit version for magic-string dependency in package.json of public packages (#15217)

* fix: emit script CSP nonces when  is present if  is also present (#15221)

* Update pnpm-workspace.yaml (#15218)

* fix(kit): properly handle percent-encoded anchors during prerendering (#15231)

* fix(kit): properly handle percent-encoded anchors during prerendering

* changelog

* Apply suggestion from @GauBen

* improve tests

---------

Co-authored-by: Elliott Johnson <[email protected]>

* feat: export type Picture in enhanced-img (#15225)

* feat: export type Picture in enhanced-img

This type is part of public api, so it should be reexported.
Otherwise users have to explicitly add "vite-imagetools", or use hacks
like `typeof import('fake.jpg?enhanced').default`

This type is needed when using `import.meta.glob`, because by default it
is getting typed as `unknown`.

* Apply suggestion from @teemingc

Co-authored-by: Tee Ming <[email protected]>

* tweak

---------

Co-authored-by: Elliott Johnson <[email protected]>
Co-authored-by: Tee Ming <[email protected]>

* handle pr review comments

* fix: address PR review comments

* chore: remove obsolete changesets consumed by releases

* Apply suggestion from @elliott-with-the-longest-name-on-github

Co-authored-by: Elliott Johnson <[email protected]>

* cleanup

* silly github

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Elliott Johnson <[email protected]>
Co-authored-by: Ondrej Čierny <[email protected]>
Co-authored-by: Ben McCann <[email protected]>
Co-authored-by: Tee Ming <[email protected]>
Co-authored-by: Samuel Plumppu <[email protected]>
Co-authored-by: Scott Wu <[email protected]>
Co-authored-by: Leon Scherer <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: teemingc <[email protected]>
Co-authored-by: Hyunbin Seo <[email protected]>
Co-authored-by: Rich Harris <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Rory Duncan <[email protected]>
Co-authored-by: Elliott Johnson <[email protected]>
Co-authored-by: Alois Klink <[email protected]>
Co-authored-by: Claude Opus 4.5 <[email protected]>
Co-authored-by: Simon H <[email protected]>
Co-authored-by: Rich Harris <[email protected]>
Co-authored-by: Andrew Dailey <[email protected]>
Co-authored-by: jyc.dev <[email protected]>
Co-authored-by: Thomas LE JEUNE <[email protected]>
Co-authored-by: Ottomated <[email protected]>
Co-authored-by: ottomated <[email protected]>
Co-authored-by: Junha Heo <[email protected]>
Co-authored-by: Conduitry <[email protected]>
Co-authored-by: Dominik G. <[email protected]>
Co-authored-by: Patrick <[email protected]>
Co-authored-by: Chew Tee Ming <[email protected]>
Co-authored-by: Richard Smith <[email protected]>
Co-authored-by: Matt DeKok <[email protected]>
Co-authored-by: Rishab49 <[email protected]>
Co-authored-by: Gautier Ben Aïm <[email protected]>
Co-authored-by: blt-r <[email protected]>
Copilot AI pushed a commit to Stadly/kit that referenced this pull request Mar 6, 2026
* chore: replace netlify-cli with netlify dev package

* update lockfile

* match modern netlify build output

* add doc

* remove srvx because it doesn't work with node 18

* format

* switch to node

* fix format and lint ignore

* no more srvx

* try installing deno for netlify edge in github action

* oops indentation

* pass port in through npm script

* remove port from npm script

* log when server started

* prettier

* generate types

---------

Co-authored-by: Tee Ming <[email protected]>
Copilot AI added a commit to Stadly/kit that referenced this pull request Mar 6, 2026
* fix(adapter-node): validate ORIGIN env var at startup (sveltejs#14978)

- Add parse_origin() utility to validate and normalize origin URLs
- Server now fails fast with clear error for invalid ORIGIN
- Automatically normalize default ports and strip path/query/hash
- Add tests for origin validation

* add changeset

* chore(deps): update pnpm to v10.25.0 (sveltejs#15043)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore: Test remote functions with full-async setup (sveltejs#15033)

* checkpoint

* donesies

* fix: lockfile

* update svelte-check

* add .env for test app

* fix flaky test

* polyfill withResolvers

* chore(deps): update actions/upload-artifact action to v6 (sveltejs#15057)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.26.0 (sveltejs#15065)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix: make typescript an optional peer dependency (sveltejs#15074)

Co-authored-by: Ben McCann <[email protected]>

* docs: update Wrangler command for Cloudflare Workers testing (sveltejs#15077)

* chore(deps): update pnpm to v10.26.2 (sveltejs#15072)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* docs: clarify remote function import (sveltejs#15082)

Tiny detail to make it super clear the import is for remote functions.

* docs: update description for `static` folder (sveltejs#15087)

Co-authored-by: Ben McCann <[email protected]>

* chore: upgrade Playwright (sveltejs#15089)

* chore: Upgrade Playwright

* checkpoint, not sure what else is going wrong

* i have never been so happy to see a test failure

* fix lockfile maybe

* fix: remove playwright

* more flaky tests

* fix clicknav

* fix another flaky test

* improve further

* another clicknav usage

* chore: upgrade jws (sveltejs#15095)

* chore: upgrade js-yaml (sveltejs#15096)

* feat: expose `waitUntil` also for serverless runtime & add docs (sveltejs#14725)

* improvement: expose `waitUntil` also for serverless runtime & add documentation

* changeset

* revert previous changes and add docs

* revert previous changes

* change changeset

---------

Co-authored-by: Tee Ming <[email protected]>

* chore(deps): update vitest monorepo to v4 (major) (sveltejs#14789)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tee Ming <[email protected]>

* fix: avoid overridden Vite config warning with Vitest 4 (sveltejs#15121)

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: teemingc <[email protected]>
Co-authored-by: Ben McCann <[email protected]>

* docs: remove `$lib` path customization (sveltejs#14812)

* docs: remove `$lib` path customization

Updated documentation for $lib import alias in SvelteKit.

* Update documentation/docs/98-reference/26-$lib.md

Co-authored-by: Tee Ming <[email protected]>

* chore: remove deprecated comment

---------

Co-authored-by: Tee Ming <[email protected]>

* fix: use hasOwn check when deep-setting object properties (sveltejs#15127)

* Version Packages (sveltejs#15091)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: upgrade to pnpm 10.27.0 (sveltejs#15128)

* fix: add `has(name, value)` overload for URLSearchParams (sveltejs#15076)

* Add support for SearchParams.has(name, value) overload

* generate changeset

* Update .changeset/sharp-tires-work.md

---------

Co-authored-by: Elliott Johnson <[email protected]>
Co-authored-by: Elliott Johnson <[email protected]>

* Apply suggestions from code review

Co-authored-by: Tee Ming <[email protected]>

* fix: support instrumentation for `vite preview` (sveltejs#15105)

The `instrumentation.server.js` file is now imported when running
`vite preview`. Unfortunately, since it's not the first thing that's
imported (all of Vite's depedencies are imported first), some
instrumentation that rely on monkey-patching imports might not work
properly, but at least we're importing it before the server code.
However, this matches the existing behaviour of `vite dev`.

See: https://github.com/sveltejs/kit/blob/51214794b40b2fc533b06cb8344e84e661f90be0/packages/kit/src/exports/vite/dev/index.js#L507-L513

* chore: run pnpm dedupe (sveltejs#15134)

* fix: add `experimental.forkPreloads` flag (sveltejs#15135)

* feat: add `experimental.enhancedPreloading` flag

Adds a new experimental flag to gate the use of Svelte's `fork` API for
preloading. The flag defaults to `false`, disabling the fork-based
preloading behavior until explicitly enabled.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>

* changeste

* chore: rename `enhancedPreloading` to `forkPreloads`

Co-Authored-By: Claude Opus 4.5 <[email protected]>

---------

Co-authored-by: Claude Opus 4.5 <[email protected]>

* chore: fix prettier ignoring source code in with build in the name (sveltejs#15133)

* avoid prettier ignoring files that contain build in their name

* fix global ignore ignoring directories with build name

* prettier

* Update .prettierignore

* Update .prettierignore

* Version Packages (sveltejs#15129)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* breaking: remove `buttonProps` from experimental remote form functions (sveltejs#14622)

* breaking: remove `buttonProps` from experimental remote form functions

use e.g. `<button {...myForm.fields.action.as('submit', 'register')}>Register</button>` button instead

* fix

* error in dev on buttonProps access

* fix

* fix tests

* tweak

* regenerate

---------

Co-authored-by: Rich Harris <[email protected]>
Co-authored-by: Rich Harris <[email protected]>

* Revert "breaking: remove `buttonProps` from experimental remote form function…" (sveltejs#15143)

This reverts commit 4f9870d.

* feat: add env vars for keepAliveTimeout and headersTimeout (sveltejs#15125)

* Check for and apply timeouts for keepAlive and headers

* Update docs with new timeout env vars

* Add changeset for new timeouts

* Run the formatter

* Tweak the docs wording a bit

* Check for empty vars before parsing and validating

* Update documentation/docs/25-build-and-deploy/40-adapter-node.md

Co-authored-by: Tee Ming <[email protected]>

* Add a timeout_env helper with corresponding tests

* fix: convert adapter-node tests to TypeScript for project service compatibility

The tsconfig include pattern with brace expansion {js,ts} was not being
recognized by TypeScript's project service used by ESLint. Split into
separate patterns and converted test files to TypeScript.

* format

---------

Co-authored-by: Tee Ming <[email protected]>
Co-authored-by: Elliott Johnson <[email protected]>

* chore: Add AGENTS.md, symlink copilot instructions (sveltejs#15145)

* chore: Add AGENTS.md, symlink copilot instructions

* clean up

* Version Packages (sveltejs#15146)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: remove unused is_http_method helper and method set to (sveltejs#15152)

* fix: avoid overriding Vite default `base` when running Vitest 4 (sveltejs#14866)

* using same default base

* add changeset

* kit_base_path kit_paths_base ><

* Apply suggestion from @teemingc

---------

Co-authored-by: Tee Ming <[email protected]>

* docs: remove old references about `invalid.fieldName(...)` for issues (sveltejs#15118)

* Initial plan

* docs: fix invalid() documentation to reflect actual API

Co-authored-by: teemingc <[email protected]>

* docs: add changeset for invalid() documentation fix

Co-authored-by: teemingc <[email protected]>

* Delete .changeset/brown-impalas-judge.md

* Clarify usage of invalid function in validation

Updated the explanation of the `invalid` function to include its origin from `@sveltejs/kit` and clarified its usage.

* Update documentation/docs/20-core-concepts/60-remote-functions.md

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: teemingc <[email protected]>
Co-authored-by: Tee Ming <[email protected]>
Co-authored-by: Rich Harris <[email protected]>

* fix: await initialization on every request to prevent race condition (sveltejs#15161)

* fix(adapter-cloudflare): await initialization on every request to prevent race condition

* Create changeset

Changeset funny-pets-melt.md + version bump (patch)

* Apply suggestion from @teemingc

---------

Co-authored-by: Tee Ming <[email protected]>

* chore: Upgrade devalue (sveltejs#15172)

* Merge commit from fork

* ensure decoded resolved path is compared with decoded url.pathname

* remote resources shouldn't be rerouted

* actually it doesn't matter because reroute doesn't run anyway

* add validations for node adapter host, protocol, and port

* edge case

* there

* changeset

* Update handler.js

Co-authored-by: Ben McCann <[email protected]>

* Update handler.js

Co-authored-by: Ben McCann <[email protected]>

* Update handler.js

* Update handler.js

Co-authored-by: Ben McCann <[email protected]>

* Update packages/adapter-node/src/handler.js

Co-authored-by: Ben McCann <[email protected]>

* wrap fetch call

* Apply suggestion from @teemingc

---------

Co-authored-by: Ben McCann <[email protected]>

* Merge commit from fork

* fix: Add length checks to remote forms

* don't pre-instantiate a huge buffer

* Update .changeset/thin-dodos-reply.md

Co-authored-by: Ben McCann <[email protected]>

* move errors to util function

* test: avoid preallocating remote form buffers

* test: make remote form allocation regression fail on old code

---------

Co-authored-by: Ottomated <[email protected]>
Co-authored-by: ottomated <[email protected]>
Co-authored-by: Ben McCann <[email protected]>
Co-authored-by: Junha Heo <[email protected]>

* chore: Upgrade svelte (sveltejs#15173)

* lockfile

* Version Packages (sveltejs#15162)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: fix lint errors (sveltejs#15174)

* generate types

* format

* chore: replace `netlify-cli` with `@netlify/dev` (sveltejs#14686)

* chore: replace netlify-cli with netlify dev package

* update lockfile

* match modern netlify build output

* add doc

* remove srvx because it doesn't work with node 18

* format

* switch to node

* fix format and lint ignore

* no more srvx

* try installing deno for netlify edge in github action

* oops indentation

* pass port in through npm script

* remove port from npm script

* log when server started

* prettier

* generate types

---------

Co-authored-by: Tee Ming <[email protected]>

* chore: update suggestion message (sveltejs#15165)

* chore: upgrade dependencies (sveltejs#15176)

* chore: prevent two concurrent running release workflows (sveltejs#15160)

* Revert "Revert "breaking: remove `buttonProps` from experimental remote form …" (sveltejs#15144)

This reverts commit 3305022.

* fix: compatibility with vite-plugin-svelte@7 (sveltejs#15179)

* Version Packages (sveltejs#15177)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: docs update on `vitePreprocess` (sveltejs#15185)

* fix: don't send "Vary: Accept-Encoding" header when precompress=false (sveltejs#15182)

* Disable sirv compression checks when precompress=false

* Add changeset

* Update .changeset/sweet-spoons-study.md

---------

Co-authored-by: Elliott Johnson <[email protected]>

* fix: include `hooks.server` and `hooks.universal` as entrypoints to give them stable manifest identifiers (sveltejs#15178)

* fix: include `hooks.server` and `hooks.universal` as entrypoints to give them stable manifest identifiers

* changeset

* yep

* lockfile

---------

Co-authored-by: Tee Ming <[email protected]>

* fix: Skip failing tests on async (sveltejs#15189)

* fix: preload links if href changes (sveltejs#15191)

* test

* fix

* changeset

* docs: update cloudflare adapter package description and misc (sveltejs#15164)

* simplify workers and pages distinction

* support workers ci in adapter auto

* add todo

* remove todo

* improve error message

* spacing

* Update packages/adapter-auto/index.js

Co-authored-by: Ben McCann <[email protected]>

* validate main key and fix relative import paths

* better comment

* allow spa static assets configuration

* add validation error reasons

* docs formatting

* make compatibility date generic

* mention workers ci

* grammar

* integrate sveltejs#14871 thanks to penalosa

* add test for workers_ci

* format

* update test

* split out

* chore

* Update packages/adapter-cloudflare/package.json

Co-authored-by: Elliott Johnson <[email protected]>

---------

Co-authored-by: Chew Tee Ming <[email protected]>
Co-authored-by: Ben McCann <[email protected]>
Co-authored-by: Elliott Johnson <[email protected]>

* fix: ensure injected paths are prefixed with `./` (sveltejs#15163)

* simplify workers and pages distinction

* support workers ci in adapter auto

* add todo

* remove todo

* improve error message

* spacing

* Update packages/adapter-auto/index.js

Co-authored-by: Ben McCann <[email protected]>

* validate main key and fix relative import paths

* better comment

* allow spa static assets configuration

* add validation error reasons

* docs formatting

* make compatibility date generic

* mention workers ci

* grammar

* integrate sveltejs#14871 thanks to penalosa

* add test for workers_ci

* format

* update test

* split out adapter-auto changes

* remove unrelated changes

* this too

---------

Co-authored-by: Chew Tee Ming <[email protected]>
Co-authored-by: Ben McCann <[email protected]>

* docs: convert `picklist` options to a `const` array (sveltejs#14616)

* fix: prevent isr routes from handling remote function calls (sveltejs#15085) (sveltejs#15098)

* fix: prevent isr routes from handling remote function calls (sveltejs#15085)

* add changeset for observability changes

* fix: improve `fields` type for generic components (sveltejs#14974)

* fix: improves fields type for generic components

* changeset

* fix generated types

* cleaner type for intellisense

---------

Co-authored-by: Elliott Johnson <[email protected]>

* Version Packages (sveltejs#15186)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: upgrade dependencies (sveltejs#15201)

* chore(deps): update dependency @netlify/edge-functions to v3 (sveltejs#14772)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore: add closing angle bracket (sveltejs#15205)

* fix: reexport browser/dev from esm-env (sveltejs#15206)

* chore: upgrade netlify/dev library (sveltejs#15210)

* fix: ensure CSS URLs are correct when inlining client stylesheets (sveltejs#15153)

* add fix and test
format

* add unit test

* changeset

* add test for inlining conditionally rendered component css

* format

* Apply suggestion from @teemingc

* Apply suggestion from @teemingc

* Update css.js

* handle whitespace, add some additional test cases

* add failing test for assets in static dir

* bump svelte

* this should just work

* fix lockfile

* ok its working now

* last fix

* format

* push wip

* tests are passing

* split tests

* rename parser to parse

* hoist regexes

* use test.each

* add test for content and comments

* rename assets to paths_assets

* add tests for escaped characters

* add test for encoded characters

* safeguard against trailing slashes

* decode vite asset filenames

* a bit of clean up

* oops

* tippex comments

* tippex strings

* tippex wip

* harden comment and escaped character tests

* account for nested app dir

* bump svelte

* chore: fix tippex and add test cases

---------

Co-authored-by: Elliott Johnson <[email protected]>
Co-authored-by: Rich Harris <[email protected]>

* fix: use validated args in batch resolver (sveltejs#15215)

Co-authored-by: Elliott Johnson <[email protected]>
Co-authored-by: Rishab49 <[email protected]>

* chore(deps): update dependency set-cookie-parser to v3 (sveltejs#15155)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix: only match rest params with matchers when the matcher matches (sveltejs#15216)

* chore: restore previous explicit version for magic-string dependency in package.json of public packages (sveltejs#15217)

* fix: emit script CSP nonces when  is present if  is also present (sveltejs#15221)

* Update pnpm-workspace.yaml (sveltejs#15218)

* fix(kit): properly handle percent-encoded anchors during prerendering (sveltejs#15231)

* fix(kit): properly handle percent-encoded anchors during prerendering

* changelog

* Apply suggestion from @GauBen

* improve tests

---------

Co-authored-by: Elliott Johnson <[email protected]>

* feat: export type Picture in enhanced-img (sveltejs#15225)

* feat: export type Picture in enhanced-img

This type is part of public api, so it should be reexported.
Otherwise users have to explicitly add "vite-imagetools", or use hacks
like `typeof import('fake.jpg?enhanced').default`

This type is needed when using `import.meta.glob`, because by default it
is getting typed as `unknown`.

* Apply suggestion from @teemingc

Co-authored-by: Tee Ming <[email protected]>

* tweak

---------

Co-authored-by: Elliott Johnson <[email protected]>
Co-authored-by: Tee Ming <[email protected]>

* handle pr review comments

* fix: address PR review comments

* chore: remove obsolete changesets consumed by releases

* Apply suggestion from @elliott-with-the-longest-name-on-github

Co-authored-by: Elliott Johnson <[email protected]>

* cleanup

* silly github

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Elliott Johnson <[email protected]>
Co-authored-by: Ondrej Čierny <[email protected]>
Co-authored-by: Ben McCann <[email protected]>
Co-authored-by: Tee Ming <[email protected]>
Co-authored-by: Samuel Plumppu <[email protected]>
Co-authored-by: Scott Wu <[email protected]>
Co-authored-by: Leon Scherer <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: teemingc <[email protected]>
Co-authored-by: Hyunbin Seo <[email protected]>
Co-authored-by: Rich Harris <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Rory Duncan <[email protected]>
Co-authored-by: Elliott Johnson <[email protected]>
Co-authored-by: Alois Klink <[email protected]>
Co-authored-by: Claude Opus 4.5 <[email protected]>
Co-authored-by: Simon H <[email protected]>
Co-authored-by: Rich Harris <[email protected]>
Co-authored-by: Andrew Dailey <[email protected]>
Co-authored-by: jyc.dev <[email protected]>
Co-authored-by: Thomas LE JEUNE <[email protected]>
Co-authored-by: Ottomated <[email protected]>
Co-authored-by: ottomated <[email protected]>
Co-authored-by: Junha Heo <[email protected]>
Co-authored-by: Conduitry <[email protected]>
Co-authored-by: Dominik G. <[email protected]>
Co-authored-by: Patrick <[email protected]>
Co-authored-by: Chew Tee Ming <[email protected]>
Co-authored-by: Richard Smith <[email protected]>
Co-authored-by: Matt DeKok <[email protected]>
Co-authored-by: Rishab49 <[email protected]>
Co-authored-by: Gautier Ben Aïm <[email protected]>
Co-authored-by: blt-r <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants