Hooks
List of built-in hooks. (You can create your own.)
See also: API > Settings.
Basics
data(): server (configurable) Called before the page is rendered, for fetching data.guard(): server (configurable) Protect pages from unprivileged access.onHydrationEnd(): client Called after the page is hydrated.onPageTransitionStart(): client Called upon page navigation, before the new page starts rendering.onPageTransitionEnd(): client Called upon page navigation, after the new page has finished rendering.onCreatePageContext(): server & client Hook called when apageContextobject is created.onCreateGlobalContext(): server & client Hook called when theglobalContextobject is created.
Pre-rendering
onBeforePrerenderStart(): server Called before the whole Pre-rendering process starts.onPrerenderStart(): server Global hook called when Pre-rendering starts.
vike-vue
onCreateApp(): server & clientvike-vueCalled after creating Vue'sappinstance.
Advanced
Most users don't need to know about these hooks.
onData(): server & client Called as soon aspageContext.datais available.onBeforeRender(): server (configurable) Called before the page is rendered, lower-level and usually for advanced integrations with data fetching tools.onRenderHtml(): server Called when a page is rendered to HTML on the server-side.onRenderClient(): client Called when a page is rendered on the client-side.onBeforeRoute(): server & client Called before the URL is routed to a page.onBeforeRenderClient(): client Called at the beginning ofonRenderClient().onAfterRenderClient(): client Called at the end ofonRenderClient().onBeforeRenderHtml(): server Called at the beginning ofonRenderHtml().onAfterRenderHtml(): server Called at the end ofonRenderHtml().
Upcoming
Potentially upcoming hooks:
- Feature Request #1979 — New hook
onRenderHtmlEnd() - Feature Request #1438 — New hook
onLog() - Feature Request #1525 — New hook
onRenderContent(): generate non-HTML files with arbitrary content
Lifecycle
The order in which hooks are called upon rendering a page. (The hook flow.)
Server start
- server
onCreateGlobalContext()
First render
- server
renderPage() - server
onBeforeRoute() - server Routing
- server
onCreatePageContext() - server
guard() - server
data() - server
onData() - server
onBeforeRender() - server
onRenderHtml() - client
onCreateGlobalContext() - client
onCreatePageContext() - client
onRenderClient() - client
onHydrationEnd()
Client-side navigation
- client
onPageTransitionStart() - client
onBeforeRoute() - client Routing
- client
onCreatePageContext() - server
renderPage() - server
onBeforeRoute() - server Routing
- server
onCreatePageContext() - server
guard() - server
data() - server
onBeforeRender() - client
onData() - client
onRenderClient() - client
onPageTransitionEnd()
Data hook environment
Select the following:
Server-only (default)if you use+data.jsor+onBeforeRender.js. (They run only on the server.)Client-onlyif you use+data.client.jsor+onBeforeRender.client.js. (They run only on the client.)Server & clientif you use+data.shared.jsor+onBeforeRender.shared.js. (They run on both the server and the client.)
Routing executes the Route Function of all your pages.
See also: