How to access a URL parameter in Sapper outside of script module
New Courses Coming Soon
Join the waiting lists
Suppose you’re building a Svelte application using Sapper, and you have a dynamic page route, for example /routes/[id].svelte
.
You want to get the dynamic part of the URL (the id
in this case), and you know you can get it in the preload()
function in the <script context="module">
part of the component:
<script context="module">
export async function preload({ params }) {
const { id } = params
}
</script>
But the problem is that you need to use it outside of preload()
, to perform something else.
The way to do so is to return it from preload
, and define it as a prop of the component, using the usual export *
syntax.
Here’s an example:
<script context="module">
export async function preload({ params }) {
const { id } = params
return { id }
}
</script>
<script>
export let id
if (typeof window !== 'undefined') {
alert(id)
}
</script>
→ Get my Svelte Handbook
Here is how can I help you:
- COURSES where I teach everything I know
- CODING BOOTCAMP cohort course - next edition in 2025
- THE VALLEY OF CODE your web development manual
- BOOKS 17 coding ebooks you can download for free on JS Python C PHP and lots more
- Interesting links collection
- Follow me on X