type | title | description | sidebar | githubIntegrationURL | category | i18nReady | ||
---|---|---|---|---|---|---|---|---|
integration |
@astrojs/svelte |
Learn how to use the @astrojs/svelte framework integration to extend component support in your Astro project. |
|
renderer |
true |
import PackageManagerTabs from '/components/tabs/PackageManagerTabs.astro';
import Since from '/components/Since.astro';
This Astro integration enables rendering and client-side hydration for your Svelte 5 components. For Svelte 3 and 4 support, install @astrojs/svelte@5
instead.
Astro includes an astro add
command to automate the setup of official integrations. If you prefer, you can install integrations manually instead.
To install @astrojs/svelte
, run the following from your project directory and follow the prompts:
If you run into any issues, feel free to report them to us on GitHub and try the manual installation steps below.
First, install the @astrojs/svelte
package:
Most package managers will install associated peer dependencies as well. If you see a Cannot find package 'svelte'
(or similar) warning when you start up Astro, you'll need to install Svelte and TypeScript:
Then, apply the integration to your astro.config.*
file using the integrations
property:
import { defineConfig } from 'astro/config';
import svelte from '@astrojs/svelte';
export default defineConfig({
// ...
integrations: [svelte()],
});
And create a new file called svelte.config.js
in your project root directory and add the following code:
import { vitePreprocess } from '@astrojs/svelte';
export default {
preprocess: vitePreprocess(),
}
To use your first Svelte component in Astro, head to our UI framework documentation. You'll explore:
- 📦 how framework components are loaded,
- 💧 client-side hydration options, and
- 🤝 opportunities to mix and nest frameworks together
This integration is powered by @sveltejs/vite-plugin-svelte
. To customize the Svelte compiler, options can be provided to the integration. See the @sveltejs/vite-plugin-svelte
docs for more details.
You can set options either by passing them to the svelte
integration in astro.config.mjs
or in svelte.config.js
. The options in astro.config.mjs
will take precedence over the options in svelte.config.js
if both are present:
import { defineConfig } from 'astro/config';
import svelte from '@astrojs/svelte';
export default defineConfig({
integrations: [svelte({ extensions: ['.svelte'] })],
});
export default {
extensions: ['.svelte'],
};
If you're using SCSS or Stylus in your Svelte files, you can create a svelte.config.js
file so that they are preprocessed by Svelte, and the Svelte IDE extension can correctly parse the Svelte files.
import { vitePreprocess } from '@astrojs/svelte';
export default {
preprocess: vitePreprocess(),
};
This config file will be automatically added for you when you run astro add svelte
. See the @sveltejs/vite-plugin-svelte
docs for more details about vitePreprocess
.