What's new in Svelte: June 2021
Progress towards SvelteKit 1.0 and tighter TypeScript/Svelte integrations in language tools
This month, we saw lots of contributions to SvelteKit and its docs. The language tools also got some new features, most notably deeper integration with Svelte files within JavaScript or TypeScript files. Let's jump into the updates...
New in SvelteKitsvelte.config.js
config files are now loaded in ESM format (.js
instead of.cjs
).- AMP pages will now use the rendered CSS, rather than emitted CSS
svelte-check
has been added to the TypeScript template (sveltejs/kit#1556)- Support for https keypair sveltejs/kit#1456
- Now bundling Vite with SvelteKit and using an upgraded version. Remove Vite from your
package.json
if it's there - Etags for binary responses sveltejs/kit#1382
- Renamed
$layout
to__layout
and$error
to__error
- Removed
getContext
in favor ofrequest.locals
- Renamed
.svelte
output directory to.svelte-kit
. Update your.gitignore
accordingly trailingSlash: 'never' | 'always' | 'ignore'
is now available in the config. This should make it easier to build sites that work with static hosting providers that expect a trailing slash forindex.html
pages, and provides an escape hatch for anyone that needs more complex behaviour.
adapter-netlify
got a fix sveltejs/kit#1467 and new documentation in the readme https://github.com/sveltejs/kit/tree/master/packages/adapter-netlify- The router will no longer intercept navigation for URLs that the app does not own. This fixes a crash for apps that have
<a>
elements on the page with the same origin but don't share a base path with the app. - Hash only changes are now handled by the router fixing the browser's "back" navigation between hash changes in some circumstances.
- Svelte 3.38.1 and 3.38.2 fixed an issue with hydration that was causing duplicate elements. If you're seeing this in your project, be sure to update the latest version!
- A new TypeScript plugin provides deeper integration with Svelte files within JavaScript or TypeScript files. This includes diagnostics, references and renaming of variables. It comes packaged with the VS Code extension but is turned off by default for now. You can enable it through this setting. We encourage you to test it out and provide feedback
- In the latest version of
svelte-check
you can now provide the path to yourtsconfig.json
orjsconfig.json
. Example:svelte-check --tsconfig "./tsconfig.json"
. This ensures the diagnostics are only run on files that are referenced in that config. It also runs diagnostics on JavaScript and/or TypeScript files which removes the need to run another check (liketsc --noEmit
) for non-Svelte files (svelte-check
version 1.6.0) - The VS Code extension and
svelte-check
got a new major release. Previously, properties that had no initializer (export let foo;
) were only required if the user was using both TypeScript and activatedstrict
mode. This is changed now: People using TypeScript, and those usingcheckJs
also in JavaScript files, will now always have these properties marked as required (svelte-check
version 2.0.0, extension version 105.0.0)
Community Showcase
Apps & Sites
- vidu is a minimal web analytics collector and dashboard
- River Runner is a virtual way to follow rivers downstream - built with Mapbox and Svelte.
- JSDoc Type Generator generates JSDoc types for valid JSON.
- pagereview.io is a website feedback tool that lets you leave comments directly on the site being reviewed.
- gamesroom.io is an online board game platform with video chat built-in.
- Greedy Goblin is a recipe app for old-school Runescape players.
- hashbrown.geopjr.dev is a GNOME-shell inspired webpage to learn about, explore the source code and download the Hashbrown GTK app (link to source).
Libraries, Tools & Components
- svelte-image-crop is a simple click'n'drag image cropping library using Web APIs.
- svelte-datepicker is a lightweight and inclusive date picker build with Svelte.
- svelte-regex-router is a simple, lightweight library for you to easily handle routes in your Svelte application.
- Svelte Micro is a light & reactive one-component router for Svelte.
- svelte-entity-store is to provide a simple, generic solution for storing collections of entity objects.
- svelte-animation-store is a store that is based on Svelte's tweened store, that lets you pause, continue, reset, replay, reverse or adjust speed of a tween.
Want to contribute a component? Submit a Component to the Svelte Society site by making a PR to this file.
See you next month!Did we miss something? Join us on Svelte Society, Reddit and Discord!