Concept Flow - Middleware patterns with hooks
Request Received
Run Hook 1 Middleware
Run Hook 2 Middleware
Run Final Handler
Send Response
Middleware hooks run in order on a request, each can modify or stop the flow before final handling.
import { beforeNavigate } from '$app/navigation'; beforeNavigate(() => { console.log('Middleware hook runs'); });
| Step | Hook Called | Action Taken | Next Step |
|---|---|---|---|
| 1 | beforeNavigate Hook | Logs 'Middleware hook runs' | Continue to next middleware or handler |
| 2 | No more hooks | Final handler runs | Send response |
| 3 | End | Response sent | Execution stops |
| Variable | Start | After Hook 1 | After Final Handler | Final |
|---|---|---|---|---|
| navigationAllowed | true | true | true | true |
| logMessages | [] | ['Middleware hook runs'] | ['Middleware hook runs'] | ['Middleware hook runs'] |
Middleware hooks run in order before final handlers. Each hook can modify or stop the flow. In Svelte, hooks like beforeNavigate intercept navigation. Hooks run first, then final handler executes. Use hooks to add logging, checks, or redirects.
onMount runsonMount runs once right after the component is added to the page.beforeUpdate and afterUpdate run on updates, onDestroy runs when component is removed.onMount -> Option BonMount [OK]onMount for code after component loads [OK]onMount with beforeUpdateonDestroy to run code on loadafterUpdate runs only onceonDestroy hook in a Svelte component?onDestroy as named exports from 'svelte'.onDestroy(() => { ... }).import { beforeUpdate, afterUpdate } from 'svelte';
beforeUpdate(() => console.log('Before update'));
afterUpdate(() => console.log('After update'));
let count = 0;
function increment() {
count += 1;
}beforeUpdate runs before every DOM update, afterUpdate runs after every DOM update.increment() changes count, triggering component update and both hooks logging messages.onDestroy? import { onDestroy } from 'svelte';
onDestroy = () => {
console.log('Cleanup');
};onDestroy instead of calling it with a callback.onDestroy must be called like onDestroy(() => { ... }) to register cleanup.afterUpdate runs after the DOM updates, perfect for logging post-change.onDestroy runs when component is removed, ideal for cleanup tasks.afterUpdate to log after DOM changes; use onDestroy for cleanup -> Option APass the test and this pattern moves unknown