Getting started
You can use svelte-spa-router in any project built with Svelte 5.
Install from NPM#
To add svelte-spa-router to your project:
# Using npm
npm install svelte-spa-router
# Using yarn
yarn install svelte-spa-router
# Using pnpm
pnpm install svelte-spa-routerDefine your routes#
Each route is a normal Svelte component, with the markup, scripts, bindings, etc. Any Svelte component can be a route.
The route definition is just a JavaScript dictionary (object) where the key is a string with the path (including parameters, etc), and the value is the route object.
For example:
import Home from './routes/Home.svelte'
import Author from './routes/Author.svelte'
import Book from './routes/Book.svelte'
import NotFound from './routes/NotFound.svelte'
const routes = {
// Exact path
'/': Home,
// Using named parameters, with last being optional
'/author/:first/:last?': Author,
// Wildcard parameter
'/book/*': Book,
// Catch-all
// This is optional, but if present it must be the last
'*': NotFound,
}Routes must begin with / (or * for the catch-all route).
Alternatively, you can also define your routes using custom regular expressions .
Note that the order matters! When your users navigate inside the app, the first matching path will determine which route to load. It’s important that you leave any “catch-all” route (e.g. a “Page not found” one) at the end.
Include the router view#
To display the router, in a Svelte component (usually App.svelte), first import the router component:
import Router from 'svelte-spa-router'Then, display the router anywhere you’d like by placing the component in the markup. For example:
<body>
<Router {routes}/>
</body>The routes prop is the dictionary defined above.
That’s it! You already have all that you need for a fully-functional routing experience.
Sample code#
Check out the code in the examples folder for some usage examples.
To run the samples, clone the repository, build the package, then start a sample:
# From the repo root: install deps and build the package
pnpm install
pnpm run build
# Navigate to a sample
cd examples/…
# For example
cd examples/basic-routing
# Start a development server
pnpm install
pnpm run devThe sample will be running at http://localhost:5173
Next steps#
- Navigate between pages with links and programmatically
- Read route parameters and the querystring
- Highlight active links
- Enable code splitting with dynamically-imported components