Skip to content

Commit 86c28ae

Browse files
authored
Merge branch 'main' into fix-smart-quotes
2 parents c04f81c + b85787c commit 86c28ae

File tree

7 files changed

+124
-5
lines changed

7 files changed

+124
-5
lines changed
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
---
2+
title: "What's new in Svelte: September 2025"
3+
description: 'Deno support, await in consts and open telemetry support'
4+
author: Dani Sandoval
5+
authorURL: https://dreamindani.com
6+
---
7+
8+
In case you missed it, the main Svelte blog covered how to use [SvelteKit's new OpenTelemetry traces](https://svelte.dev/blog/sveltekit-integrated-observability) to reliably set up observability instrumentation using instrumentation.server.ts. This month's round up covers that release and a few other features that rolled out before and after it.
9+
10+
Plenty in the showcase, as well, so let's dive in!
11+
12+
## What's new in Svelte and Svelte CLI (sv)
13+
14+
- `await` is now allowed inside `@const` declarations (**[email protected]**, [Docs](https://svelte.dev/docs/svelte/await), [#16542](https://github.com/sveltejs/svelte/pull/16542))
15+
- The `sv add` command has been updated to remove the `--no-preconditions` and add `--no-git-check`. With this new flag, even if some files are dirty, no prompt will be shown (**[email protected]**, [Docs](https://svelte.dev/docs/cli/sv-add), [#650](https://github.com/sveltejs/cli/pull/650))
16+
17+
## What's new in SvelteKit and its adapters
18+
19+
- Deno is now supported as a supported package manager (**sveltejs/[email protected]**, [#14163](https://github.com/sveltejs/kit/pull/14163))
20+
- A new `instrumentation.server.ts` adds tracing and observability setup (**sveltejs/[email protected]**, [Docs](https://svelte.dev/docs/kit/observability), [#13899](https://github.com/sveltejs/kit/pull/13899))
21+
- The `--preserve-output` flag prevents deletion of the output directory before packaging (**sveltejs/[email protected]**, [Docs](https://svelte.dev/docs/kit/packaging), [#13055](https://github.com/sveltejs/kit/pull/13055))
22+
23+
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).
24+
25+
---
26+
27+
## Community Showcase
28+
29+
### Apps & Sites built with Svelte
30+
31+
- [Pollinate](https://apps.apple.com/us/app/pollinate-pollen-forecast/id6749463028) provides accurate forecasts designed for allergy sufferers who want to plan their day, or vacation, around pollen levels (Check out the [Reddit post](https://www.reddit.com/r/sveltejs/comments/1mk05ym/mobile_app_made_with_svelte_5_capacitor/) on how it was built)
32+
- [Ferndesk](https://ferndesk.com/) is a help center that is kept up to date automatically (the creator shared their demo on the [Svelte Reddit](https://www.reddit.com/r/sveltejs/comments/1mqe9ez/i_built_a_tool_that_keeps_your_help_center_up_to/))
33+
- [Wplace](https://wplace.live/) lets you paint whatever you want on a map of the world
34+
- [Domain Watcher](https://github.com/Scorpio3310/domain-watcher) is a domain availability monitor and expiration tracker built with SvelteKit & Cloudflare Workers
35+
- [Motley](https://trymotley.com/) is a local-first bookmarking/moodboard app
36+
- [TallyHo](https://tallyho.app/) is a simple time tracking for freelancers
37+
- [MenuScan](https://www.getmenuscan.app/) lets you take a picture of any restuarant menu and get access to the calorie and macro counts for each item
38+
- [Vibe Check](https://vibechecked.app/) provides quick, honest diagnostics for AI‑built apps
39+
- [Joyful](https://joyful.to/) is a simple way to write, design, and send beautiful newsletters
40+
- [Eagle Cite](https://eaglecite.com/) lets you highlight, organize, and search your citations in one place
41+
- [Volkara](https://volkara.stormlightlabs.org/) is a set of ADHD-Friendly Productivity Tools
42+
- [Simple Man Archive](https://simplemanarchive.com/) is an ASCII art archive where anyone can contribute by creating unique ASCII art
43+
- [Thirty](https://github.com/thirtycalendar/thirty) is an open-source AI calendar built on familiar foundations
44+
- [Timezones](https://time.tem.dev/) quickly shows and converts timezones across many locations
45+
46+
### Learning Resources
47+
48+
_Featuring Svelte Contributors and Ambassadors_
49+
50+
- [Compile Svelte 5 in your head](https://lihautan.com/compile-svelte-5-in-your-head) by Tan Li Hau
51+
- [Introducing SvelteKit Remote Functions](https://www.youtube.com/watch?v=0hy7PCbXyqs) by Simon Holthausen
52+
- [The Svelte MCP server](https://www.reddit.com/r/sveltejs/comments/1mju9yj/new_features_in_the_svelte_mcp_server_directly/) now allows you to directly reference documentation sections, and prompt templates
53+
54+
_This Week in Svelte_
55+
56+
- [Ep. 112](https://www.youtube.com/watch?v=GQLgq09-knM) — Storybook for Svelte Part 1
57+
- [Ep. 113](https://www.youtube.com/watch?v=aerlBIuinFQ) — Storybook for Svelte Part 2 - Docs
58+
- [Ep. 114](https://www.youtube.com/watch?v=FnUWuLQDCfM) — Changelog Review
59+
60+
_To Read_
61+
62+
- [Securing the supply chain at scale: Starting with 71 important open source projects](https://github.blog/open-source/maintainers/securing-the-supply-chain-at-scale-starting-with-71-important-open-source-projects/) by GitHub
63+
- [Epicenter (YC S25)](https://www.reddit.com/r/sveltejs/comments/1mjqq3t/update_epicenter_yc_s25_just_sponsored_our_first/) is sponsoring Svelte maintainers to spend their time half pushing local-first OSS forward with Epicenter and half building their dream projects
64+
- [Project Two: Creating Mobile app using Tauri + Svelte](https://minosiants.com/blog/two-project) by Kaspar Minosiants
65+
- [Ways to use Anime.js with Svelte](https://brandonma.dev/blog/animejs-svelte/) by Brandon Ma
66+
- [Svelte, Markdown, and the Magic of Web Components](https://www.sh4jid.me/blog/svelte-markdown-and-the-magic-of-web-components) by Shajid Hasan
67+
68+
_To Watch_
69+
70+
- [SvelteKit Remote Functions are INSANE! Type-Safe Full Stack in Minutes](https://www.youtube.com/watch?v=Xbdiwq_88iE) by Tyler Codes
71+
- [Deploy a SvelteKit Application to Cloudflare Workers with Drizzle & D1](https://www.youtube.com/watch?v=ZZaExhqW5II) by Jilles Soeters
72+
73+
### Libraries, Tools & Components
74+
75+
- [EXE](https://github.com/Hugo-Dz/exe) is a build tool to distribute your full-stack web app as a single executable binary with zero runtime dependencies
76+
- [Svelte Sortable List](https://github.com/rodrigodagostino/svelte-sortable-list) is a comprehensive package for creating accessible, sortable lists in Svelte applications
77+
- [Markdown UI](https://github.com/BlueprintLabIO/markdown-ui) turns static docs into interactive experiences - instantly
78+
- [Tark UI](https://www.tarkui.com/) provides beautiful UI components built with Ark UI and Tailwind
79+
- [Uniface Element](https://github.com/ticatec/uniface-element) is a comprehensive enterprise-grade UI component library built with Svelte 5, designed for modern web applications
80+
- [microfolio](https://github.com/aker-dev/microfolio) is a modern static portfolio generator featuring a file-based content management system using folders and Markdown files
81+
- [Keycloakify](https://docs.keycloakify.dev/) is a tool for creating custom Keycloak themes, enabling you to modify the appearance and behavior of Keycloak's user interfaces
82+
- [PDJsonEditor](https://github.com/podosoft-dev/pdjsoneditor) is a powerful JSON visualization and editing tool with both a code editor and interactive graph views
83+
- [Show & Svelte](https://github.com/retrotheft/show-and-svelte) lets you create fully interactive presentations with Svelte
84+
- [wuchale](https://github.com/wuchalejs/wuchale) is a compile-time internationalization (i18n) toolkit that requires zero code changes
85+
- [svelte-overflow-fade](https://github.com/harshmandan/svelte-overflow-fade?tab=readme-ov-file) is a Svelte action and attachment for adding beautiful fade effects to overflowing content
86+
- [formshape](https://www.npmjs.com/package/formshape) is a type-safe form validation for SvelteKit Remote Functions using Standard Schema compatible validators
87+
- [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.
88+
- [vite-plugin-sveltekit-decorators](https://github.com/KiraPC/vite-plugin-sveltekit-decorators) is a Vite plugin that automatically decorates SvelteKit functions with customizable wrappers for logging, analytics, error handling, and more
89+
- [jetbrains-svelte-templates](https://github.com/ruben-sprengel/jetbrains-svelte-templates) is a compact collection of Live Templates for JetBrains IDEs (like WebStorm and IntelliJ IDEA Ultimate) designed to speed up your Svelte & SvelteKit development
90+
91+
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).
92+
93+
Until next time 👋🏼!

apps/svelte.dev/content/docs/kit/60-appendix/10-faq.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ How to setup rewrites in production will depend on your deployment platform. If
144144
/// file: src/routes/api/[...path]/+server.js
145145
/** @type {import('./$types').RequestHandler} */
146146
export function GET({ params, url }) {
147-
return fetch(`https://my-api-server.com/${params.path + url.search}`);
147+
return fetch(`https://example.com/${params.path + url.search}`);
148148
}
149149
```
150150

apps/svelte.dev/content/docs/svelte/07-misc/04-custom-elements.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ title: Custom elements
55

66
<!-- - [basically what we have today](https://svelte.dev/docs/custom-elements-api) -->
77

8-
Svelte components can also be compiled to custom elements (aka web components) using the `customElement: true` compiler option. You should specify a tag name for the component using the `<svelte:options>` [element](svelte-options).
8+
Svelte components can also be compiled to custom elements (aka web components) using the `customElement: true` compiler option. You should specify a tag name for the component using the `<svelte:options>` [element](svelte-options). Within the custom element you can access the host element via the [`$host`](https://svelte.dev/docs/svelte/$host) rune.
99

1010
```svelte
1111
<svelte:options customElement="my-element" />

packages/repl/src/lib/Output/Viewer.svelte

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@
270270
error = null;
271271
}
272272
} catch (e) {
273+
console.error(e); // make it show up in the console, too, not just the UI
273274
// @ts-ignore
274275
show_error(e);
275276
}

packages/repl/src/lib/Repl.svelte

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@
2525
onversion?: (version: string) => void;
2626
onchange?: () => void;
2727
download?: () => void;
28+
/**
29+
* Invoked whenever there's a bundler or runtime error
30+
*/
31+
onerror?: (error: Error) => void;
2832
}
2933
3034
let {
@@ -40,7 +44,8 @@
4044
previewTheme = 'light',
4145
onversion,
4246
onchange = () => {},
43-
download
47+
download,
48+
onerror
4449
}: Props = $props();
4550
4651
// TODO pass in real data
@@ -185,6 +190,18 @@
185190
$toggleable = mobile && orientation === 'columns' && embedded !== 'output-only';
186191
});
187192
193+
$effect(() => {
194+
if (runtime_error) {
195+
onerror?.(runtime_error);
196+
}
197+
});
198+
199+
$effect(() => {
200+
if (bundler.result?.error) {
201+
onerror?.(bundler.result.error as Error);
202+
}
203+
});
204+
188205
let runes = $derived(
189206
workspace.current.name.endsWith('.svelte.js') ||
190207
(workspace.current_compiled?.result?.metadata.runes ?? false)
@@ -235,7 +252,7 @@
235252
{injectedCSS}
236253
{previewTheme}
237254
{workspace}
238-
runtimeError={runtime_error}
255+
bind:runtimeError={runtime_error}
239256
/>
240257
</section>
241258
{/snippet}

packages/repl/src/lib/public.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { OutputChunk, RollupError } from '@rollup/browser';
2+
import type { CompileError } from 'svelte/compiler';
23

34
export interface BundleResult {
45
uid: number;

packages/repl/src/routes/v0.svelte

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,14 @@
1313
</script>
1414

1515
<main>
16-
<Repl bind:this={repl} embedded="output-only" />
16+
<Repl
17+
bind:this={repl}
18+
embedded="output-only"
19+
onerror={(error) => {
20+
// @ts-expect-error so that v0 can react to REPL errors
21+
window.__svelte_repl_onerror?.(error);
22+
}}
23+
/>
1724
</main>
1825

1926
<style>

0 commit comments

Comments
 (0)