onBeforeRoute()
hook
The onBeforeRoute()
hook provides full control over routing.
It is usually used for internationalization:
export { onBeforeRoute }
function onBeforeRoute(pageContext) {
const { urlWithoutLocale, locale } = extractLocale(pageContext.urlPathname)
return {
pageContext: {
locale,
urlLogical: urlWithoutLocale
}
}
}
We can also use it to implement a custom router.
⚠️For use cases other than i18n, open a GitHub ticket or reach out on Discord:onBeforeRoute()
is purposely limited but the limitations can be lifted in order to unlock new capabilities.
Example:
TypeScript
export { onBeforeRoute }
import type { OnBeforeRouteSync } from 'vike/types'
const onBeforeRoute: OnBeforeRouteSync = (pageContext): ReturnType<OnBeforeRouteSync> => {
// ...
}
Don't omit
ReturnType<OnBeforeRouteSync>
otherwise TypeScript won't strictly check the return type.
See API >
pageContext
> Typescript for more information on how to extendpageContext
with your own extra properties.