onBeforePrerenderStart()
hook
The onBeforePrerenderStart()
hook is executed upon pre-rendering your app.
It's only executed while pre-rendering and, consequently, never executed during development.
It's usually used for:
- Providing the list of URLs of parameterized routes.
If you have a pre-rendered page that has a parameterized route such as
/movie/@id
, then you need to provide a list of URLs such as/movie/1
,/movie/2
,/movie/3
, ...Instead of providing a list of URLs, if you want a parameterized route to be resolved dynamically on the client-side, then see the workaround at #1476 - Pre-rendered dynamic routes (static host deployment).
- Fetching data in bulk, in order to make pre-rendering execute faster.
For providing URLs
Most of the time, the onBeforePrerenderStart()
hook is used for providing the URLs of parameterized routes.
If you don't have any parameterized route, then you can pre-render your app without defining any
onBeforePrerenderStart()
hook.
The
onBeforePrerenderStart()
hooks are called when you run$ vite build
and, consequently, are never called in development.
For bulk data fetching
If you have a high number of pages that are to be pre-rendered, then running the command $ vite build
may become slow.
You can make pre-rendering significantly faster by providing the pageContext
of pages in onBeforePrerenderStart()
hooks.
Essentially, the onBeforePrerenderStart()
hook allows you to prefetch data for multiple pages at once.
Providing
pageContext
inonBeforePrerenderStart()
hooks should only be used for making pre-rendering faster and we recommend against usingonBeforePrerenderStart()
hooks for other purposes.For example, avoid providing additional
pageContext
values inonBeforePrerenderStart()
hooks that wouldn't otherwise exist. BecauseonBeforePrerenderStart()
hooks are never called in development and it's best to keep your app consistent between development and production.
Examples
React Example:
- /examples/react-full/pages/star-wars/index/+onBeforePrerenderStart.ts
- /examples/react-full/pages/hello/+onBeforePrerenderStart.ts
Vue Example:
- /examples/vue-full/pages/star-wars/index/+onBeforePrerenderStart.ts
- /examples/vue-full/pages/hello/+onBeforePrerenderStart.ts
TypeScript
Don't omit
ReturnType<OnBeforePrerenderStartAsync>
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.