Skip to content

Commit e172f75

Browse files
Merge branch 'main' into add-list-sections-endpoint
2 parents fb5ce23 + bea4ed6 commit e172f75

File tree

4 files changed

+118
-5
lines changed

4 files changed

+118
-5
lines changed
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
---
2+
title: "What's new in Svelte: October 2025"
3+
description: 'Improved Remote Functions, sv create from playgrounds and experimental async SSR'
4+
author: Dani Sandoval
5+
authorURL: https://dreamindani.com
6+
---
7+
8+
There were lots of improvements to remote functions this month - including new batching tools and improved performance via lazy discovery. For more info, check out the Docs and PR links in each bullet. Async SSR is also available for those who would like to try it out while it's still experimental. It's included when the config option in `svelte.config.js` has the `compilerOptions.experimental.async` setting enabled.
9+
10+
We've got a hefty showcase this month too, so let's dive in!
11+
12+
## What's new in Svelte, SvelteKit and Svelte CLI (sv)
13+
14+
- The `event` property is now included on popstate, link and form navigation (**[email protected]**, [#14307](https://github.com/sveltejs/kit/pull/14307))
15+
- The `%sveltekit.version%` placeholder can now be used in `app.html` to easily include the current SvelteKit version in the output (**[email protected]**, [Docs](https://svelte.dev/docs/kit/project-structure#Project-files-src), [#12132](https://github.com/sveltejs/kit/pull/12132))
16+
- You can now create projects from the Svelte playground with `npx sv create --from-playground <url>` (**[email protected]**, [#662](https://github.com/sveltejs/cli/pull/662))
17+
- Experimental async SSR is available in Svelte v5.39.3 and SvelteKit v2.43.0 or higher. You can opt-in via the `experimental.async` option. When this is enabled, it's possible to use `await` anywhere in your app, without wrapping it in a boundary with a pending snippet. You can find more information in the SvelteKit PR ([#14447](https://github.com/sveltejs/kit/pull/14447), Svelte PR is [#16748](https://github.com/sveltejs/svelte/pull/16748))
18+
19+
### Remote Functions
20+
21+
- The remote `set()` function can now be called on server queries and `query.refresh()` promises will now be automatically resolved on the server (**[email protected]**, [Docs](https://svelte.dev/docs/kit/remote-functions), [#14304](https://github.com/sveltejs/kit/pull/14304), [#14332](https://github.com/sveltejs/kit/pull/14332))
22+
- The new `query.batch` remote function lets you batch requests that happen within the same macrotask (**[email protected]**, [Docs](https://svelte.dev/docs/kit/remote-functions#query.batch), [#14272](https://github.com/sveltejs/kit/pull/14272))
23+
- Lazy discovery of remote functions improves detection and tree shaking for functions defined in `node_modules` (**[email protected]**, [#14293](https://github.com/sveltejs/kit/pull/14293))
24+
- The `form` remote function has been enhanced with schema support, `input` and `issues` properties (**[email protected]**, [Docs](https://svelte.dev/docs/kit/remote-functions#form), [#14383](https://github.com/sveltejs/kit/pull/14383))
25+
26+
For a full list of bug fixes in Svelte, SvelteKit and its adapters, check out their CHANGELOGs [here](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md) and [here](https://github.com/sveltejs/kit/tree/main/packages).
27+
28+
---
29+
30+
## Community Showcase
31+
32+
### Apps & Sites built with Svelte
33+
34+
- [Windframe](https://windframe.dev/) generates designs with AI or prebuilt templates to export as Tailwind CSS code for React, Vue, Svelte or HTML.
35+
- [pgpad](https://github.com/vrmiguel/pgpad) is a straightforward cross-platform database client
36+
- [Zippywords](https://www.zippywords.com/words/en) is a burst-typing game that's configurable with different languages (including the [Svelte 5 syntax](https://www.zippywords.com/code/Svelte%205)!)
37+
- [CBFC Watch](https://cbfc.watch/) is a data visualisation project with a searchable database of over 100K film censorship records in India ([GitHub](https://github.com/diagram-chasing/cbfc-watch))
38+
39+
_Spotted in the Wild_
40+
41+
- [The Apple TV website](https://tv.apple.com/) - ([Reddit post](https://www.reddit.com/r/sveltejs/comments/1n6i96i/the_appletv_website_uses_svelte/))
42+
- [Gimli Tailwind](https://gimli.app/tailwind) - ([Reddit post](https://www.reddit.com/r/sveltejs/comments/1nbmoeq/the_most_popular_devtools_extension_for/))
43+
- [The Mullvad VPN site](https://mullvad.net/en) - [Reddit post](https://www.reddit.com/r/sveltejs/comments/1nhe6t6/mullvad_vpn_uses_sveltekit_for_their_site/)
44+
45+
### Learning Resources
46+
47+
_Featuring Svelte Contributors and Ambassadors_
48+
49+
- [Introducing SvelteKit Remote Functions](https://www.youtube.com/watch?v=0hy7PCbXyqs) and [SvelteKit Remote Functions tips: Auth guards, managing async, query.batch](https://www.youtube.com/watch?v=z0f7NLPdLYE) by Simon Holthausen
50+
- [The Complete Svelte 5 Course For The Most Loved JavaScript Framework](https://www.youtube.com/watch?v=B2MhkPtBWs4) by Joy of Code (3+ hours of excellent content). Text version available [here](https://joyofcode.xyz/learn-svelte)
51+
- [Translate your Svelte and SvelteKit applications the easy way - full tutorial](https://www.youtube.com/watch?v=d0RPeuC4JL8) by Code with Stanislav
52+
- [How and why I built an MCP server for Svelte](https://khromov.se/how-and-why-i-built-an-mcp-server-for-svelte/) by Stanislav Khromov
53+
- [Svelte Radio](https://share.transistor.fm/s/a5f8c4c6) is back! Feat. Kevin, Brittney and Antony
54+
55+
_This Week in Svelte_
56+
57+
- [Ep. 115](https://www.youtube.com/watch?v=PHk7YFAFvfg) — Changelog review
58+
- [Ep. 116](https://www.youtube.com/watch?v=sTepLQwJIVo) — e18e.dev and NPM's supply chain attack
59+
- [Ep. 117](https://www.youtube.com/watch?v=E0xQXa4qQGY) — Formisch
60+
- [Ep. 118](https://www.youtube.com/watch?v=eBXjXfUiuiA) — Changelog review
61+
62+
_Svelte London - September 2025_
63+
64+
You can [watch the full video on YouTube](https://www.youtube.com/watch?v=odCWAAaTNSQ) or skip to the specific talks below:
65+
66+
- [Svelte on Cloudflare: Tips and guide](https://www.youtube.com/live/odCWAAaTNSQ?si=2Eej24zu2ZXUEljs&t=412) by Mark Ridge and Connor Adams
67+
- [Ultra-low Latency in SvelteKit](https://www.youtube.com/live/odCWAAaTNSQ?si=4Eyh2SUwA26waECz&t=2563) by Scott Phillips
68+
69+
_To Read_
70+
71+
- [Sharing some custom components that handle async state with less boilerplate in Svelte 5](https://www.reddit.com/r/sveltejs/comments/1niyflq/sharing_some_custom_components_that_handle_async/) by u/geokidev
72+
- [Rendering emails with Svelte](https://github.com/GauBen/svelte-emails) by Gautier Ben Aïm
73+
- [Integrate Keystatic CMS with SvelteKit to render Markdoc Content with Interactive Svelte Components](https://samuelplumppu.se/blog/keystatic-sveltekit-markdoc) by Samuel Plumppu
74+
75+
_To Watch_
76+
77+
- [Svelte Under The Hood](https://www.youtube.com/watch?v=GsjfEmTS4x8) by ~/in-depth
78+
79+
### Libraries, Tools & Components
80+
81+
_UI / UX_
82+
83+
- [SVAR Svelte v2.3](https://github.com/svar-widgets) now has TypeScript definitions to all its open-source Svelte UI components
84+
- [@dnd-kit](https://www.npmjs.com/package/@dnd-kit-svelte/svelte) is a lightweight React-like library for building performant and accessible drag and drop experiences
85+
- svelte-overflow-fade is a Svelte action and attachment for adding beautiful fade effects to overflowing content
86+
- [scratch-to-reveal-svelte](https://github.com/dellamora/scratch-to-reveal-svelte) is a simple and customizable scratch-to-reveal component for Svelte
87+
- [Svelte Streamdown](https://svelte-streamdown.beynar.workers.dev/) is a Svelte port of Streamdown by Vercel - an all in one markdown renderer, designed specifically for AI-powered streaming applications
88+
- [USAL JS](https://usal.dev/) is the "Ultimate Scroll Animation Library"
89+
90+
_Frameworks and Data Tools_
91+
92+
- [PrevelteKit](https://github.com/tbocek/preveltekit) is a lightweight, high-performance web application framework built on Svelte 5, featuring Server-Side Pre Rendering (SSPR) using Rsbuild and jsdom
93+
- [Apollo Runes](https://apollo-runes-docs.vercel.app/) is an Apollo Client for Svelte 5
94+
- [Formisch](https://github.com/fabian-hiller/formisch) is a schema-based, headless form library for JS frameworks
95+
- [Conformal](https://github.com/marcomuser/conformal) helps you work with native FormData by providing type-safe form submissions for the modern web
96+
- [Astro](https://astro.build), already supporting async Svelte out of the box, added support for server-rendered async Svelte in the [5.14 release](https://astro.build/blog/astro-5140/#async-rendering-support-for-svelte)
97+
- [LayerChart](https://github.com/techniq/layerchart/releases/tag/layerchart%402.0.0-next.39) had a packed update and introduced (among other things) a "vanilla CSS" (Tailwind opt-in) mode and support for other UI frameworks, and now also works in the [Svelte REPL / playground](https://svelte.dev/playground/c5e73cb55a0045cca83e74b5cdfa3b65?version=5.39.6)
98+
- [keystatic-sveltekit](https://github.com/Greenheart/keystatic-sveltekit) is a convenient way to integrate the open source Git-based Keystatic CMS with SvelteKit, featuring Markdoc content with interactive Svelte components and a modern editing UX
99+
100+
_Dev Tools and Vite Plugins_
101+
102+
- [wuchale](https://github.com/wuchalejs/wuchale) is a compile-time internationalization (i18n) toolkit that requires zero code changes
103+
- [SV Floating Console](https://www.npmjs.com/package/sv-console) is a floating console for Svelte applications that only appears in development mode
104+
- [magicons](https://github.com/propolies/magicons) is a fast, typesafe Icon wrapper that fixes bundling issues with large barrel exports in icon libraries
105+
- [Svelte-pops](https://svelte-pops.vercel.app/docs/overview) is a performant and easy to use popover manager for creating dialog and tooltips
106+
- [vite-plugin-svelte-inline-component](https://github.com/hanielu/vite-plugin-svelte-inline-component) lets you write tiny Svelte components straight inside your JavaScript / TypeScript tests using tagged‑template literals
107+
- [vite-plugin-sveltekit-decorators](https://github.com/KiraPC/vite-plugin-sveltekit-decorators) is a powerful Vite plugin that automatically decorates SvelteKit functions with customizable wrappers for logging, analytics, error handling, and more
108+
109+
That's it for this month! Let us know if we missed anything on [Reddit](https://www.reddit.com/r/sveltejs/) or [Discord](https://discord.gg/svelte).
110+
111+
Until next time 👋🏼!

apps/svelte.dev/content/docs/kit/98-reference/20-$app-server.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ See [Remote functions](/docs/kit/remote-functions#form) for full documentation.
8282

8383
```dts
8484
function form<Output>(
85-
fn: () => Output
85+
fn: () => MaybePromise<Output>
8686
): RemoteForm<void, Output>;
8787
```
8888

apps/svelte.dev/content/docs/svelte/03-template-syntax/12-bind.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ Since 5.6.0, if an `<input>` has a `defaultValue` and is part of a form, it will
9696
9797
## `<input bind:checked>`
9898

99-
Checkbox and radio inputs can be bound with `bind:checked`:
99+
Checkbox inputs can be bound with `bind:checked`:
100100

101101
```svelte
102102
<label>
@@ -118,6 +118,8 @@ Since 5.6.0, if an `<input>` has a `defaultChecked` attribute and is part of a f
118118
</form>
119119
```
120120

121+
> [!NOTE] Use `bind:group` for radio inputs instead of `bind:checked`.
122+
121123
## `<input bind:indeterminate>`
122124

123125
Checkboxes can be in an [indeterminate](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/indeterminate) state, independently of whether they are checked or unchecked:

apps/svelte.dev/content/docs/svelte/07-misc/02-testing.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ title: Testing
55

66
Testing helps you write and maintain your code and guard against regressions. Testing frameworks help you with that, allowing you to describe assertions or expectations about how your code should behave. Svelte is unopinionated about which testing framework you use — you can write unit tests, integration tests, and end-to-end tests using solutions like [Vitest](https://vitest.dev/), [Jasmine](https://jasmine.github.io/), [Cypress](https://www.cypress.io/) and [Playwright](https://playwright.dev/).
77

8-
## Unit and integration testing using Vitest
8+
## Unit and component tests with Vitest
99

1010
Unit tests allow you to test small isolated parts of your code. Integration tests allow you to test parts of your application to see if they work together. If you're using Vite (including via SvelteKit), we recommend using [Vitest](https://vitest.dev/). You can use the Svelte CLI to [setup Vitest](/docs/cli/vitest) either during project creation or later on.
1111

@@ -247,7 +247,7 @@ test('Component', async () => {
247247

248248
When writing component tests that involve two-way bindings, context or snippet props, it's best to create a wrapper component for your specific test and interact with that. `@testing-library/svelte` contains some [examples](https://testing-library.com/docs/svelte-testing-library/example).
249249

250-
### Component testing with Storybook
250+
## Component tests with Storybook
251251

252252
[Storybook](https://storybook.js.org) is a tool for developing and documenting UI components, and it can also be used to test your components. They're run with Vitest's browser mode, which renders your components in a real browser for the most realistic testing environment.
253253

@@ -289,7 +289,7 @@ You can create stories for component variations and test interactions with the [
289289
/>
290290
```
291291

292-
## E2E tests using Playwright
292+
## End-to-end tests with Playwright
293293

294294
E2E (short for 'end to end') tests allow you to test your full application through the eyes of the user. This section uses [Playwright](https://playwright.dev/) as an example, but you can also use other solutions like [Cypress](https://www.cypress.io/) or [NightwatchJS](https://nightwatchjs.org/).
295295

0 commit comments

Comments
 (0)