What Causes This Error?
This error occurs when you use the prerender export incorrectly. The prerender export must be export const prerender = true or export const prerender = false.
The Problem
---
// ❌ Using let instead of const
export let prerender = false;
// ❌ Not a boolean
export const prerender = 'false';
// ❌ Function instead of value
export const prerender = () => false;
// ❌ Variable export
const shouldPrerender = false;
export { shouldPrerender as prerender };
---
The Fix
Use Correct Syntax
---
// ✅ Static prerendering (default behavior)
export const prerender = true;
---
---
// ✅ Server-side rendering
export const prerender = false;
---
Common Scenarios
Server-Rendered Page
---
// src/pages/dashboard.astro
// ✅ Correct - renders on each request
export const prerender = false;
const user = await getUser(Astro.cookies.get('session'));
---
<h1>Welcome, {user.name}</h1>
Static Page (Default)
---
// src/pages/about.astro
// ✅ Correct - built at build time
export const prerender = true;
// Note: prerender = true is the default, so this is optional
---
<h1>About Us</h1>
API Endpoints
// src/pages/api/data.ts
// ✅ Correct for API routes
export const prerender = false;
export async function GET() {
return Response.json({ data: 'dynamic' });
}
In Hybrid Mode
// astro.config.mjs
export default defineConfig({
output: 'hybrid', // Static by default, SSR opt-in
});
---
// src/pages/static-page.astro
// Static by default in hybrid mode - no export needed
---
---
// src/pages/dynamic-page.astro
// ✅ Opt into SSR
export const prerender = false;
---
In Server Mode
// astro.config.mjs
export default defineConfig({
output: 'server', // SSR by default, static opt-in
});
---
// src/pages/dynamic-page.astro
// SSR by default in server mode - no export needed
---
---
// src/pages/static-page.astro
// ✅ Opt into prerendering
export const prerender = true;
---
Dynamic Value Not Allowed
---
// ❌ Cannot use runtime values
const isDev = import.meta.env.DEV;
export const prerender = isDev;
// ✅ Must be static boolean literal
export const prerender = false;
---
In TypeScript Files
// src/pages/api/route.ts
// ✅ Type is inferred correctly
export const prerender = false;
// ✅ Or explicitly typed
export const prerender: boolean = false;
Multiple Exports
---
// ✅ prerender alongside other exports
export const prerender = false;
export function getStaticPaths() {
// Only used when prerender = true
return [{ params: { id: '1' } }];
}
---
Quick Checklist
- Use
export const prerender = true/false - Value must be boolean
trueorfalse - Cannot use variables or functions
- Must use
const, notlet - Default depends on
outputmode in config