Svelte Updates & Release Notes

Follow

38 updates curated from 27 sources by the Releasebot Team. Last updated: Oct 2, 2026

Get this feed:
  • Oct 1, 2026
    • Date parsed from source:
      Oct 1, 2026
    • First seen by Releasebot:
      Oct 2, 2026
    Svelte logo

    Svelte

    What’s new in Svelte: October 2026

    Svelte ships SvelteKit 3 and sv 1.0, making community add-ons official, adding migration help, and bringing zero-config Render deploys plus final breaking changes. It also notes Svelte 5.57.1 bug fixes and parser performance work, with Svelte Summit Ljubljana on the way.

    SvelteKit 3 and sv 1.0 have arrived, official community add-ons and Svelte Summit Ljubljana

    SvelteKit 3 is here! Check out the announcement post for the highlights, then run sv migrate to handle most of the upgrade for you. sv itself hit 1.0 on the same day, making the community add-on API official. Below you’ll find the last round of changes that landed before 3.0 - adapter API updates, zero-config deploys to Render and a few final breaking changes.

    Svelte Summit is also back for Svelte’s 10th birthday! It’s happening in Ljubljana on November 19-20 with talks from Rich Harris, Elliott Johnson, Paolo Ricciuti, Stanislav Khromov, pngwn and more. In-person and virtual tickets are available at sveltesummit.com.

    Svelte itself had a quiet month - 5.57.1 is all bug fixes and parser performance work. Per usual, there’s still plenty in the showcase... so let’s dive in!

    What’s new in SvelteKit 3

    • Adapters now receive the Svelte config as a function argument when adding Vite plugins (3.0.0-next.27, #16986)
    • Adapters can override getRequest and setResponse during vite dev and vite preview, so local requests behave more like the target platform (3.0.0-next.27, Docs, #16753)
    • Node: static assets are now served from tables recorded at build time instead of sirv ([email protected], Docs, #16908)
    • Netlify: the split and edge options can now be used together ([email protected], Docs, #17045)
    • adapter-auto now supports zero-config deployments to Render ([email protected], Docs, #16850)
    • svelte-package now rewrites import aliases like #lib into relative imports, and warns when a .server. file or server directory doesn’t import a server-only module ([email protected], #16360, #16266)
    • Breaking changes from the final prereleases:
      • The server now errors when a client-requested single-flight mutation refresh isn’t handled. Use ignore() or ignoreAll() on requested to skip a refresh on purpose (3.0.0-next.27, Docs, #16892)
      • Environment variables are now populated before instrumentation.server.js is evaluated, and the adapter instrumentation API has been updated to match (3.0.0-next.27, Docs, #16303)
      • builder.generateManifest has been replaced with builder.generateServerInstance and builder.manifest, and the Server constructor and SSRManifest type are no longer public (3.0.0-next.27, Docs, #16875, #16876)
      • Query parameters beginning with x-sveltekit- are now rejected (3.0.0-next.28, #17125)
      • Cloudflare: the platform object has been removed. Bindings now come from an emulated cloudflare:workers module instead ([email protected], Docs, #16754)
      • Node: only static assets present at build time are served, they’re validated with content-hash ETags instead of Last-Modified, and they only respond to GET and HEAD requests ([email protected], Docs, #16908)
      • Netlify: static files are now written based on the publish adapter option rather than reading netlify.toml ([email protected], Docs, #17078)

    Upgrading an existing app? The migration guide covers every breaking change in 3.0. For all the bug fixes that went into the release, check out the SvelteKit / Adapter CHANGELOGs.

    What’s new in the Svelte CLI and AI Tools

    • The drizzle add-on can now set up SQLite with Node’s built-in node:sqlite module ([email protected], Docs, #1206)
    • sv 1.0 is out! New projects use SvelteKit 3 and #lib, and sv migrate sveltekit-3 upgrades existing apps ([email protected], Docs, #1138)
    • The community add-on API is now official, and sv create can scaffold a new add-on from the addon template ([email protected], Docs, #1308)
    • @sveltejs/enhanced-img is now available as an official add-on via sv add enhanced-img ([email protected], Docs, #1300)
    • The Svelte OpenCode plugin now supports OpenCode V2 ([email protected], #258)

    For all the bug fixes and performance improvements that went into Svelte 5.57.1 this month, check out the Svelte compiler’s CHANGELOG. CLI and AI tools updates can be found in the Svelte CLI and ai-tools releases.

    That’s it for this month! Let us know if we missed anything on Reddit or Discord.

    Until next time 👋🏼!

    Original source
  • Oct 1, 2026
    • Date parsed from source:
      Oct 1, 2026
    • First seen by Releasebot:
      Oct 1, 2026
    Svelte logo

    Svelte

    SvelteKit 3 is here

    Svelte ships SvelteKit 3.0, bringing a polished major update with stronger type safety, easier migrations, and key changes like vite.config.ts config, the #lib alias, improved environment variables, simpler service workers, and better error handling.

    Version 3.0 of SvelteKit, the official application framework for Svelte, is now available.

    If you’ve used earlier versions of SvelteKit, everything will feel very familiar — it’s the same framework with a little more polish, a little more type safety, and a little less junk. We’ve made migration as seamless as we can with the sv migrate command...

    npx sv migrate sveltekit-3 --tasks all --confirm
    

    ...which will automatically migrate as much of your codebase as possible, and generate a TODO list for everything else. (If you’re agentically inclined, your robot friends will make short work of it.)

    To create a new app, run sv create:

    npx sv create my-new-app
    

    As with any major version bump there are a handful of breaking changes to be aware of, which are covered in the migration guide (or, more briefly, in the recent release candidate announcement).

    Quick highlights

    • configuration now lives in vite.config.ts instead of svelte.config.js
    • the $lib alias is now #lib, making use of standard subpath imports
    • environment variables are more powerful and easier to use
    • service workers are less boilerplatey
    • error handling is improved across the board

    Are remote functions ready yet?

    Not quite. But it’s our top priority!

    Remote functions are a set of utilities for secure, efficient, type-safe client-server communication. You’ve likely seen some version of this idea in other frameworks, but we think you’re going to prefer this one.

    Using them requires Async Svelte, which for now requires an experimental flag. Bear with us.

    Join us in Ljubljana next month

    This is as good a place as any to remind everyone that the next in-person Svelte Summit is taking place on November 19-20 in the lovely town of Ljubljana, Slovenia. Among other things it will be a celebration of Svelte’s 10th birthday, and we’d love to share some cake with you.

    Original source
  • All of your release notes in one feed

    Join Releasebot and get updates from Svelte and hundreds of other software products.

    Create account
  • Sep 18, 2026
    • Date parsed from source:
      Sep 18, 2026
    • First seen by Releasebot:
      Sep 19, 2026
    Svelte logo

    Svelte

    Svelte fixes a wide range of runtime, SSR, parser, and accessibility issues while improving performance. This patch improves event cleanup, global CSS handling, server rendering, reactive state behavior, and ARIA support across the framework.

    Patch Changes

    • fix: cancel deferred event listeners during cleanup (#18749)
    • fix: preserve global CSS in components without scopable elements (#18793)
    • fix: reduce SSR render result garbage collection (#18798)
    • fix: resolve the fallback of an each block in the enclosing scope (#18803)
    • perf: speed up parser interactions with Acorn or avoid them where possible (#18740)
    • fix: prevent effect tree of batches from interfering with each other (#18508)
    • fix: serialize input default values during server rendering (#18733)
    • fix: remove WAS_MARKED flag in favor of Set (#18127)
    • fix: throw set_context_after_init when setContext is called after an await during SSR (#18739)
    • fix: make Object.hasOwn reactive for state proxy ownership changes (#18838)
    • fix: keep $state.eager when used as a variable initializer (#18809)
    • perf: avoid regex matching in parser where possible (#18736)
    • fix: in non-async mode, only push variable to current_sources when active_reaction is updating (#18550)
    • fix: recognise aria-braillelabel and aria-brailleroledescription as known ARIA attributes (#18765)
    Original source
  • August 2026
    • No date parsed from source.
    • First seen by Releasebot:
      Aug 31, 2026
    Svelte logo

    Svelte

    What’s new in Svelte: September 2026

    Svelte releases new SvelteMap methods, context and form improvements, while SvelteKit 3 moves closer to launch with release candidate updates, routing and adapter changes, and a smoother migration path in sv for Kit 3 and AI tooling.

    New SvelteMap methods in Svelte 5.57, more SvelteKit 3 iteration and sv 1.0 previews SvelteKit 3 migrations

    This month, Svelte 5.57 shipped with new SvelteMap methods and a few quality-of-life additions while SvelteKit 3 got closer to the finish line with its Release Candidate.
    The sv CLI also got a new ai-tools add-on that replaces the old mcp one, and sv@next now ships a task-based sveltekit-3 migration for existing apps.
    Let’s dive a bit deeper!

    What’s new in Svelte

    • SvelteMap now has getOrInsert and getOrInsertComputed methods for the common “read or initialize” pattern (5.57.0, Docs, #18728)
    • createContext now returns a third has function so you can check whether a context has been set without triggering the get error (5.57.0, Docs, #18472)
    • now supports the defaultValue attribute, so the select reverts to that value on form reset (5.57.0, #18591)
    • svelte/server now exports the RenderOutput, SyncRenderOutput, Csp, and Sha256Source types for typing server render output and CSP sources (5.57.0, #18648)

    For the full list of patches and bug fixes, see the Svelte CHANGELOG.

    What’s new in SvelteKit 3’s RC

    Prereleases have kept rolling on the @next line this month, adding a few more features and refining the surface:
    • Enhanced cross-page form actions now navigate to the action page on success and failure, matching native form behavior (3.0.0-next.17, breaking, #16684)
    • Adapter Vite plugins can now be split into pre and post groups so adapters can run transforms at the right point in the pipeline (3.0.0-next.18, breaking, #16711)
    • Files with + prefixes are now ignored during routing if their names contain test, spec, or stories, so colocated tests don’t accidentally become routes (3.0.0-next.19, #16715)
    • Development-server response logging is now nicer to read and routes through Vite’s logger so it respects logLevel and customLogger (3.0.0-next.20/25, #16744, #16858)
    • defineParams and the associated types have moved to @sveltejs/kit/params (3.0.0-next.19, breaking, #16716)
    • +server.js files can now export a QUERY HTTP method handler (3.0.0-next.24, #16782)
    • The preload filter for fonts now receives the project-relative source filename so you can filter by directory or component (3.0.0-next.24, #16443)
    • Adapters can call the new applyReroute helper for split serverless function deployments (3.0.0-next.25, #16665)

    For the meantime, all of the SvelteKit 3 docs live on next.svelte.dev, and the full changelog is on the version-3 branch. The stable 2.x line kept moving too with three patch releases (2.70.1, 2.70.2, 2.70.3) - see the SvelteKit CHANGELOGs for the details.

    What’s new in the Svelte CLI and Language Tools

    • The mcp add-on has been replaced with a broader ai-tools add-on that can set up the Svelte plugin (Claude Code, opencode) or pick individual tools (MCP server, skills, sub-agents) per client ([email protected], Docs, #1050)
    • @sveltejs/sv-utils picks up isKit3, resolveLibPrefix and libSubpathImports helpers so add-ons can transparently handle SvelteKit 2 and 3 ([email protected], #1199)
    • sv migrate has been reworked to prepare for the SvelteKit 3 migration - it now lists tasks, ships a sveltekit-3 task that bumps dependencies and rewrites $lib to #lib, adds an $app/state task, delegates the older migrations to svelte-migrate@1, and creates a list of changes a developer or agent should resolve if they cannot be migrated automatically ([email protected], Docs, #1138, #1241, #1249)
    • Newly created projects use #lib (Node subpath imports) instead of $lib, matching SvelteKit 3 ([email protected], #1185)
    • Community add-ons no longer require a scoped package name ([email protected], #1216)
    • The experimental add-on is now scoped to enabling experimental features, and the versions option value was renamed to kit-3 ([email protected], breaking, #1241, #1185)
    • Vite plugin gets a dynamicCompileOptions argument for the current Vite environment, useful when you want to compile differently for the client, server or SSR environment ([email protected], #1386)
    • svelte2tsx and svelte-check learn about SvelteKit 3’s flattened config structure so the type generation and diagnostics keep working through the migration ([email protected]/[email protected]/[email protected], #3104, #3106)

    Want to dive deeper? Check out the Svelte CLI, language-tools, and ai-tools releases.

    That’s it for this month! Let us know if we missed anything on Reddit or Discord.
    Until next time 👋🏼!

    Original source
  • Aug 28, 2026
    • Date parsed from source:
      Aug 28, 2026
    • First seen by Releasebot:
      Aug 29, 2026
    Svelte logo

    Svelte

    Svelte ships a broad release with new server exports, a createContext helper, defaultValue support for select, and SvelteMap insertion helpers. It also brings many fixes and performance wins across SSR, hydration, transitions, custom elements, and compiler output.

    Minor Changes

    • feat: export RenderOutput, SyncRenderOutput, Csp and Sha256Source from svelte/server (#18648)
    • feat: add has function to createContext (#18472)
    • feat: support defaultValue on <select> (#18591)
    • feat: add getOrInsert/getOrInsertComputed to SvelteMap (#18728)

    Patch Changes

    • fix: block template store subscriptions on the promise that assigns the store (#18582)
    • fix: route $derived teardown errors through invoke_error_boundary (#18486)
    • fix: track SvelteDate snapshots in reactions (#18700)
    • fix: remove <svelte:head> anchors on unmount (#18697)
    • fix: warn on undeclared shorthand event handlers on <svelte:window>, <svelte:document> and <svelte:body> (#18480)
    • perf: reuse the cached value in the <option>/<select> value guard (#18713)
    • fix: prevent malformed AST output for <select> with static value attribute (#18449)
    • fix: apply ownership mutation ignores to binding assignments (#18718)
    • fix: prevent onoutroend from firing twice when compilerOptions.hmr is true (#18655)
    • fix: preserve whitespace after inline elements when printing (#18685)
    • perf: fold SSR block-open markers into the branch's first push (#18712)
    • fix: run onDestroy callbacks when a server render throws (#18585)
    • fix: report derived_invalid_export for export let x = $derived(...) in runes mode (#18692)
    • fix: never apply class hash to elements inside <svelte:head> (#18160)
    • fix: keep defaultChecked on hydrated radio inputs with spread attributes (#18701)
    • fix: accept onfocusin/onfocusout in a11y_mouse_events_have_key_events (#18689)
    • perf: O(n²)→O(n) Map lookups for legacy $: reactive statement ordering (#18602)
    • fix: distinct memoizer on style/class directives (#18466)
    • fix: measure nested transitions before applying their starting styles (#18647)
    • fix: don't turn component instances stored in $state into state proxies (#18646)
    • perf: emit $.only_child for elements with a single child (#18717)
    • fix: omit bind:focused from SSR output (it has no HTML attribute) (#18724)
    • fix: more robust rendering of Svelte custom element slots (#18710)
    • perf: optimize simple object destructuring in @const tags (#18390)
    • fix: properly apply static textarea value attribute during CSR (#18727)
    • fix: end a restored reaction context at the end of its synchronous segment (#18694)
    • fix: keep the dependencies of a reaction that throws, so deriveds it read are neither leaked nor stuck in their error (#18703)
    • fix: don't resurrect outroing elements when an ancestor block is paused and resumed (#18431)
    • perf: use $.comment() for single-comment templates (#18714)
    • chore: move @types/trusted-types to devDependencies (#18730)
    • perf: store setters cache as Set instead of Array (#18251)
    • fix: transform derived assignments and select function bindings correctly during server-side rendering (#18669)
    • fix: keep boolean attributes with an empty string value when rendering attribute objects on the server (#18721)
    • fix: sync SvelteURL port signal when the protocol setter clears the port (#18705)
    • fix: block declaration tags and {@const} on async values read inside closures (#18393)
    • fix: avoid css tree-shaking for exported Snippet (#18540)
    • perf: treat <img loading> as a static element again (#18711)
    • fix: prevent selectedcontent mutation from changing the selected option (#18495)
    • fix: avoid NaN keyframe values in slide transition for elements without a layout box (#18430)
    • fix: preserve line feed character references in attribute values (#18691)
    • fix: decode uppercase-X hex numeric character references (&#X...;) (#18708)
    • chore: clarify when $effect.pre runs relative to DOM updates (#18534)
    • fix: scope SSR boundary failed snippets to their boundary (#18593)
    Original source
  • Similar to Svelte with recent updates:

  • Aug 20, 2026
    • Date parsed from source:
      Aug 20, 2026
    • First seen by Releasebot:
      Aug 20, 2026
    Svelte logo

    Svelte

    Svelte ships a patch release with SSR, CSS, and reactivity fixes, including better selector printing, improved custom property handling, more reliable event and derived state behavior, and linear async blocker analysis performance.

    Patch Changes

    • fix: preserve CSS escape sequences when printing selectors (#18667)
    • fix: parse :nth-child(2n of.foo) where of is not followed by whitespace (#18611)
    • fix: transform expressions inside labeled statements during server compilation (#18617)
    • docs: clarify that context lookup includes the current component and all ancestors (#18581)
    • fix: apply CSS custom properties with falsy values on components (#18634)
    • fix: correctly print {#await ... catch x} et al (#18645)
    • fix: ignore comments of Program node during migration script (#18656)
    • fix: reliably resolve append_style to its correct root (#18614)
    • fix: clean up removed capture event handlers from spread attributes (#18618)
    • fix: don't corrupt renderer type during SSR's legacy bind: retry loop (#18616)
    • fix: treat concise arrow function bodies as implicit returns when calculating blockers (#18613)
    • fix: give effect teardowns the value from before the first write in a flush (#18620)
    • fix: avoid double-calling a derived reference when destructuring $derived of another $derived during server-side rendering (#18668)
    • fix: preserve namespaces in CSS type selectors (#18678)
    • fix: increment private state fields through a non-this receiver (#18622)
    • chore: deduplicate client and server context helpers (#18580)
    • fix: release last_propagated_event after event propagation settles so it no longer retains the last event's target subtree (#18569)
    • fix: allow custom elements to receive async values as props (#18661)
    • fix: strip comments from inline style values in linear time (#18553)
    • fix: prevent declaration comments from breaking server derived references (#18641)
    • perf: make async blocker analysis scale linearly with the number of top-level references (#18549)
    • fix: preserve short-circuiting for logical assignments to private state fields (#18594)
    Original source
  • Aug 13, 2026
    • Date parsed from source:
      Aug 13, 2026
    • First seen by Releasebot:
      Aug 13, 2026
    Svelte logo

    Svelte

    The SvelteKit 3 Release Candidate is here

    Svelte releases SvelteKit 3 in release candidate form with a major refresh for configs, aliases, TypeScript setup, service workers, environment variables, error handling, shallow routing, and Vite 8 support, while also previewing remote functions and migration tools.

    SvelteKit 3 is now in the Release Candidate phase

    If all goes well — meaning that people like you try it out and find that it works as expected — we will follow it up with a stable release in the near future, with no further breaking changes.

    But there are some breaking changes since SvelteKit 2. We’re taking advantage of this release to prune some of the weeds in the codebase and lay the groundwork for SvelteKit’s continued evolution, more on which below.

    To migrate an existing app, you can use the next version of sv migrate:

    npx sv@next migrate sveltekit-3 --tasks all --confirm
    

    This will automatically migrate as much of your code as possible. For everything else, it will generate a TODO list for you (or your clanker of choice) to work through. Wherever possible, SvelteKit will print useful diagnostic warnings and errors if you try to run code that hasn’t yet been updated.

    To create a new app, run sv create:

    npx sv@next create my-new-app
    

    What’s changed?

    For the full list of changes, consult the migration guide over on next.svelte.dev which is where the SvelteKit 3 documentation will live until the stable release. Most changes are fairly minor, but a few are worth calling out:

    Configuration now lives in vite.config.ts

    Previously, you would configure SvelteKit via a svelte.config.js file. This turned out to be limiting: it’s useful for the Vite plugin to have access to your config immediately rather than having to go through an asynchronous resolution process (which can’t begin until after we’ve resolved the entire Vite config, because tools like Vitest may run with a current working directory that isn’t the project root), and after all why wouldn’t we put the config in one place rather than two?

    The $lib alias is now #lib

    In SvelteKit 2, you would put shared code in src/lib and import it via a $lib alias. This is nicer than importing from ../../../../somewhere, which is what inevitably happens in larger codebases.

    But in modern projects, aliases are unnecessary, because we have something better: subpath imports. This Node feature is natively supported by tools like Vite and TypeScript, and it means we can delete the code that previously coordinated between them. There is one small gotcha: Node and TypeScript require that your subpath imports be unambiguous — instead of importing from #lib/foo, you will need to import from #lib/foo.ts or #lib/foo/index.ts.

    TypeScript configuration got simpler

    In SvelteKit 2, your tsconfig.json needed to extend the somewhat scruffy-looking ./.svelte-kit/tsconfig.json. In SvelteKit 3, you extend $app/tsconfig instead. This generated config file is written to node_modules/$app and contains configuration that is specific to your app. While it’s simpler than the SvelteKit 2 version (we no longer need to add the $lib alias to "paths", for example) it also includes more recommended compiler options, which means you can likely delete your own compilerOptions unless you have esoteric requirements.

    You should explicitly specify your include and exclude arrays, and the latter should include your service worker. Speaking of which:

    Service workers got a facelift

    Using service workers is nicer in SvelteKit 3. Instead of the weird $service-worker module, which exposed the necessary tools to perform offline caching (for example), you can now just import those things from $app/env, $app/paths, and the new $app/manifest module like in every other part of your app. You can also import self from $app/service-worker to get accurate typings for fetch events and so on, provided you create a tsconfig.json alongside your service worker that extends $app/tsconfig/service-worker.

    In future, we may expose helper functions for different caching strategies, so that it’s easier to build things like offline-friendly PWAs without running into barbed wire.

    Environment variables are more powerful

    SvelteKit already had arguably the most sophisticated and flexible environment variable handling of any framework. SvelteKit 3 takes it a step further with the explicit environment variables feature, which are no longer behind an experimental flag. The gist is that you define which environment variables your app depends on, in src/env.ts, and specify if they should be publicly available (in which case you can import them into code that will run in the client) and whether they should be resolved at build time (in which case they can be used for optimizations like dead code elimination) or when the app boots up. You can also use Standard Schema libraries to validate your environment variables.

    In exchange, you get effortless type-safe, secure, validated environment variables that can be auto-imported when you need them.

    Error handling is way better

    SvelteKit 2 was constrained by its support for Svelte 4, which didn’t have a concept of error boundaries. This meant that we could only display your +error.svelte components when errors occurred during load, not render. SvelteKit 3 requires Svelte 5, which means error handling can be made much more comprehensive and consistent.

    Another change is that all errors are piped through your handleError logic, including the ones you deliberately created with error(...) which were previously ignored on the assumption that you’d already done something with them. This gives you more flexibility with less hoop-jumping.

    Oh, and we apply sourcemaps to stack traces now. No biggie. (It’ll take a minute before every adapter can display properly sourcemapped stack traces in production, but this is the necessary first step.)

    Shallow routing now happens with goto

    Instead of using pushState and replaceState to use shallow routing, you now use goto with the shallow: true option. Shallow navigations now trigger beforeNavigate etc, and you can persist page state across a reload with persistState: true.

    Vite 8: Rolldown, and the Environment API

    SvelteKit 2 supported Vite 8, but SvelteKit 3 requires it. This means you get faster builds thanks to Rolldown.

    We’ve also adopted the Vite Environment API, which simplifies some of our build logic. One thing we don’t support is FetchableDevEnvironment — we tried to make this work, but ulimately concluded that it forces frameworks to absorb too much complexity. We think the problems it aims to solve (most notably, providing access to Cloudflare Workers bindings during local development) can be addressed in other ways, which we’re actively exploring.

    Remote functions

    If you’ve been following SvelteKit’s development over the last year, you’ve likely encountered remote functions. This, alongside async Svelte, is our vision for how client-server communication should be handled.

    We’re unreasonably excited about remote functions and can’t wait to use them everywhere. Frankly, they make everything else look a bit clunky, including SvelteKit’s load functions and actions.

    For now, though, they remain behind an experimental flag as we iron out the last few kinks.

    Send us your feedback

    As ever, we rely on your thoughts and your bug reports: if you have the opportunity to upgrade your apps and test out the new stuff, we and the rest of the Svelte community will be in your debt. Thank you!

    Original source
  • Aug 12, 2026
    • Date parsed from source:
      Aug 12, 2026
    • First seen by Releasebot:
      Aug 13, 2026
    Svelte logo

    Svelte

    Svelte fixes each batching, printer whitespace, attribute comments and CSS comment preservation.

    Patch Changes

    • fix: skip controlled each fast path while another batch is pending (#18625)
    • fix: better whitespace handling inside printer (#18638)
    • fix: don't duplicate comments in attributes (#18636)
    • fix: preserve CSS comments in the AST printer (#18637)
    Original source
  • Aug 1, 2026
    • Date parsed from source:
      Aug 1, 2026
    • First seen by Releasebot:
      Aug 1, 2026
    Svelte logo

    Svelte

    What’s new in Svelte: August 2026

    Svelte ships SvelteKit 3 preview updates with new $app modules, refreshAll, shallow routing and better error and form handling, while stable SvelteKit adds remote form submission state and a new env subpath. CLI and language tools also get usability and typing improvements.

    The SvelteKit 3 preview lands with new $app modules, zero-config error props and refreshAll

    The biggest news this month is the first @next releases of SvelteKit 3. Thirteen preview versions shipped in July: previewing new $app/manifest and $app/service-worker modules, improved API availability and type checking in service workers, tracing out of the experimental namespace, shallow routing baked into goto and a lot more. It's a prerelease, but it's worth trying out to see what's coming to SvelteKit!

    Alongside the preview releases, the stable line kept moving with submitted on remote forms and a new home for defineEnvVars. The language tools also picked up zero-config +error.svelte props so error pages get their page and error types with no extra setup.

    And, in case you missed it, Svelte Summit Ljubljana 2026 is happening November 19-20, with a workshop day on November 18, the day before the summit. Save the date!

    What's new in SvelteKit

    • Remote forms now expose a submitted property so you can react to the moment a form is submitted without waiting for the response (2.69.0, Docs, #14811)
    • defineEnvVars has moved from @sveltejs/kit to @sveltejs/kit/env so environment helpers live in a dedicated subpath (2.70.0, Docs, #16378)

    SvelteKit 3 preview

    The next major version has landed in @next. Here are the highlights from 3.0.0-next.5 through 3.0.0-next.13 that you'll actually want to try out:

    • Shallow routing is now built into goto via a new state option (with persistState: true to keep state across reloads), replacing pushState and replaceState (3.0.0-next.13, #16449)
    • goto's noScroll and keepFocus options (and their matching data-sveltekit-* attributes) collapse into a single reset option (3.0.0-next.13, #16558)
    • error(status, {...}) is deprecated in favor of error(status, message, {...}) so error messages are always required (3.0.0-next.13, #16540)
    • refreshAll replaces invalidateAll, which is now deprecated (3.0.0-next.8, #16289)
    • A new $app/manifest module exposes immutable, assets, prerendered and routes so you can introspect the build output at runtime (3.0.0-next.12, #16372)
    • A new $app/service-worker module replaces the old $service-worker, and $app/paths is now importable inside service workers (3.0.0-next.12, #16458, #16441)
    • SvelteKit now detects new deployments on data, remote and form action responses, on tab focus and on visibility change, with a default version.pollInterval of one hour (3.0.0-next.12, #16496)
    • Sourcemaps are now supported in production builds (3.0.0-next.11, #16412)
    • Tracing has moved out of the experimental namespace and the instrumentation flag has been removed (3.0.0-next.7, #16260)
    • Form fields pick up a dirty() helper and remote forms get a new field.touched() for better validation UX (3.0.0-next.6, #16208, #14692)

    Full preview details (including expected breaking changes) are in the SvelteKit 3 CHANGELOG.

    For all the features and bugfixes across the stable line and adapters, check out the SvelteKit CHANGELOGs.

    What's new in the Svelte CLI and Language Tools

    • sv now picks the right package manager more reliably, with detection that respects the lockfile in nested workspaces ([email protected], #1190)
    • Add-on authors can now call addOption during the setup phase to add options dynamically based on user choices ([email protected], #1042)
    • The prettier add-on now formats every file it generates, not just the ones it touches ([email protected], #1192)
    • The better-auth add-on has been bumped to Better Auth 1.6 and now uses the dedicated auth package ([email protected], #1058)
    • sv-utils gains defineEnv().importEnv for importing from the environment module without branching on mode, plus recognition of the nub package manager ([email protected]/0.3.2, #1150, #1187)
    • +error.svelte now gets its page and error props typed automatically, with no extra setup ([email protected]/[email protected], #3076)
    • svelte-language-server drops its lodash dependency for a smaller install and faster startup ([email protected], #3038)
    • The Svelte Inspector adds a context menu with the current component stack, making it easier to jump between parent and child components ([email protected], #1370)
    • The @sveltejs/opencode plugin now ships a TUI variant for terminal workflows ([email protected], #231)
    • @sveltejs/opencode also gains an autoupdate option so the plugin can keep itself current ([email protected], #238)

    Want to dive deeper? Check out the Svelte CLI and language-tools releases. For all the minor changes and bugfixes that came out in the Svelte compiler this month, you can read the full Svelte CHANGELOG.

    That's it for this month! Let us know if we missed anything on Reddit or Discord.

    Until next time 👋🏼!

    Original source
  • Jul 24, 2026
    • Date parsed from source:
      Jul 24, 2026
    • First seen by Releasebot:
      Jul 25, 2026
    Svelte logo

    Svelte

    Svelte fixes hydration failed boundaries and preserves select selection when spread attributes omit value.

    Patch Changes

    • fix: call onerror and provide a working reset when hydrating a failed boundary (#18556)
    • fix: preserve select selection when spread attributes omit value (#18561)
    Original source
  • Jul 20, 2026
    • Date parsed from source:
      Jul 20, 2026
    • First seen by Releasebot:
      Jul 21, 2026
    Svelte logo

    Svelte

    Svelte adds an indent option for print, giving developers more control over formatted output.

    Patch Changes

    chore: provide indent option for print (#18474)

    Original source
  • Jul 16, 2026
    • Date parsed from source:
      Jul 16, 2026
    • First seen by Releasebot:
      Jul 17, 2026
    Svelte logo

    Svelte

    Svelte patches performance and reconnect fixes for component compilation and derived state.

    Patch Changes

    • perf: skip unnecessary blocker analysis when compiling components without top-level await (#18548)
    • fix: rerun derived that had an abort controller on reconnection (#18551)
    Original source
  • Jul 14, 2026
    • Date parsed from source:
      Jul 14, 2026
    • First seen by Releasebot:
      Jul 15, 2026
    Svelte logo

    Svelte

    Svelte ships a patch update with a set of fixes for derived reactivity, SSR output, event handler warnings, keyed each destructuring, sourcemap chaining, tween abort cleanup, and other small compiler and runtime issues.

    Patch Changes

    • chore: drop dead code that make TSGO fail (#18496)
    • fix: don't (re)connect deriveds when read inside branch/root effects (#18527)
    • fix: skip unnecessary derived effect in earlier batch (#18525)
    • fix: avoid declaration tag warning in event handlers (#18500)
    • fix: abort deriveds own AbortSignal when it disconnects (#18400)
    • fix: ensure $state.eager() is correctly transormed for SSR output (#18530)
    • fix: correctly transform declaration tags during SSR (#18492)
    • fix: transform computed keys in keyed {#each} destructuring patterns (#18521)
    • fix: chain preprocessor sourcemaps with an empty sources[0] instead of dropping them (#18518)
    • fix: clear previous_task reference after abort in Tween to prevent memory leak on interrupted tweens (#18541)
    • fix: don't treat declaration tags as parts inside each blocks (#18507)
    Original source
  • Jul 1, 2026
    • Date parsed from source:
      Jul 1, 2026
    • First seen by Releasebot:
      Jul 3, 2026
    Svelte logo

    Svelte

    What’s new in Svelte: July 2026

    Svelte brings a major SvelteKit and tooling update with config now supported in vite.config, preview explicit environment variables, remote function and query improvements, and broader support for new {const ...} declaration tags across the CLI and language tools.

    SvelteKit config in vite.config, explicit env vars and new declaration tag support across the toolchain

    This month brought a real shift in how SvelteKit projects are configured. You can now define your SvelteKit config directly inside vite.config.js and skip svelte.config.js entirely. We also got the first preview of explicit environment variables, which will eventually replace $env/* modules in SvelteKit 3.

    On top of that, the language tools and the sv CLI both caught up with Svelte's new {const ...} declaration tags, so the whole toolchain is now in sync.

    Let's dive in!

    What's new in SvelteKit permalink

    What's new in SvelteKit

    • You can now pass your SvelteKit config directly to the Vite plugin, so a separate svelte.config.js is no longer required, as a preview of how Kit 3 will require config to live in vite.config.js (2.62.0, Docs, #15944)
    • Experimental explicit environment variables let you declare and type your env vars in one place, as a preview of how $env/* will work in SvelteKit 3 (2.63.0, Docs, #15934)
    • Remote function commands can now receive File objects directly, so you can upload files without manually wrapping them in FormData (2.64.0, Docs, #15978)
    • Remote queries can now refresh other queries, making it easier to invalidate related data after a mutation (2.65.0, Docs, #16012)
    • Prerendered .md and .mdx files are now precompressed alongside HTML, JS and CSS for faster delivery (2.66.0, Docs, #15893)
    • SvelteKit now warns when boolean fields in remote form schemas are not marked optional, which is a common cause of silent submit failures (2.66.0, Docs, #15804)
    • The new prerender.handleInvalidUrl option lets you customize how invalid URLs found during crawling are reported (2.67.0, Docs, #16088)
    • RemoteFormEnhanceInstance and RemoteFormEnhanceCallback are now exported types, so you can type your custom enhance callbacks directly (2.68.0, Docs, #15816)
    • Submitted submit fields now keep their value in the form action payload, which makes multi-button forms easier to handle on the server (2.68.0, Docs, #15979)

    For all the features and bugfixes that landed this month, check out the SvelteKit / Adapter CHANGELOGs.

    What's new in the Svelte CLI and Language Tools permalink

    What's new in the Svelte CLI and Language Tools

    • The Svelte CLI demo template now uses the new {const ...} declaration tag, so newly created projects show off the latest Svelte syntax ([email protected], #1110)
    • sv create now scaffolds projects against @sveltejs/kit ^2.62.0 and moves the Svelte config into the Vite plugin by default ([email protected], #1119)
    • A new experimental add-on lets you toggle experimental flags and opt into @next versions directly from the CLI ([email protected], #1121)
    • The drizzle and better-auth add-ons now support SvelteKit's new explicit environment variables ([email protected], #1122)
    • New defineEnv and svelteConfig helpers in @sveltejs/sv-utils make it easier to read and edit a project's Svelte config from add-ons ([email protected])
    • The Svelte language server, svelte-check, and svelte2tsx now understand Svelte 5's {const ...} declaration tags ([email protected]/[email protected]/[email protected], #3033)
    • CSS completions now work inside nested
    Original source
  • Jun 23, 2026
    • Date parsed from source:
      Jun 23, 2026
    • First seen by Releasebot:
      Jul 3, 2026
    Svelte logo

    Svelte

    Svelte fixes reactivity, URL searchParams, and TypeScript parsing bugs in a patch release.

    Patch Changes

    • fix: include wrapping parentheses in {@const} declarator end position (#18436)
    • fix: always unset reactivity context after restoring it (#18453)
    • fix: don't notify searchParams subscribers when the URL changes without affecting the search string (#18425)
    • fix: strip ? from optional parameters in <script lang="ts"> so generated JavaScript is valid (#18448)
    Original source
Releasebot

Curated by the Releasebot team

Releasebot is an aggregator of official product update announcements from hundreds of software vendors and thousands of sources.

Our editorial process involves the manual review and audit of release notes procured with the help of automated systems.