quasarframework/quasar · warning
Failed to render SSG page for ${getSsgPageIdentifier(ssgPage
Error message
Failed to render SSG page for ${getSsgPageIdentifier(ssgPage)}. Retrying in ${ssgRendererRetryDelay}ms... (${retryCount}/${ssgRendererRetryCount}) What it means
Warning from renderPage during SSG builds when a page render fails but is retryable (err?.redirectUrl is undefined and retryCount < ssgRendererRetryCount). The page will be retried after ssgRendererRetryDelay ms; the message shows the attempt count out of the configured maximum. Suppressed when onSsgRendererError is 'ignore'.
Source
Thrown at app-vite/lib/modes/ssg/ssg-builder.js:621
!isNoPreloadMatcher?.(ssgPage.route)
)
if (typeof ssgPage.transformHtml === 'function') {
const result = await ssgPage.transformHtml(html)
if (typeof result === 'string') html = result
}
break
} catch (err) {
if (
err?.routeNotFound !== true &&
err?.redirectUrl === void 0 &&
retryCount < ssgRendererRetryCount
) {
retryCount++
if (onSsgRendererError !== 'ignore') {
warn(
`Failed to render SSG page for ${getSsgPageIdentifier(ssgPage)}.` +
` Retrying in ${ssgRendererRetryDelay}ms...` +
` (${retryCount}/${ssgRendererRetryCount})`
)
}
await new Promise(resolve => {
setTimeout(resolve, ssgRendererRetryDelay)
})
continue
}
if (err?.routeNotFound) {
await handleError({
err,
reason:
ssgPage.route === synthetic404RouteView on GitHub (pinned to 4841521b5f)
Solutions
- Usually self-resolves via retry — check whether the final build succeeds and whether this page ultimately rendered.
- If retries exhaust, increase ssgRendererRetryCount / ssgRendererRetryDelay in quasar.config ssg options.
- Reduce renderer concurrency to lower resource pressure on the machine.
- Fix the underlying flakiness (timeouts, failing external calls) indicated by the accompanying render error.
Example fix
// before (quasar.config)
ssg: {}
// after
ssg: {
ssgRendererRetryCount: 5,
ssgRendererRetryDelay: 2000
} Defensive patterns
Strategy: retry
Try / catch
try {
await renderPage(ssgPage)
} catch (err) {
if (err?.redirectUrl === undefined && attempts < maxRetries) {
await new Promise((r) => setTimeout(r, retryDelay))
return renderPage(ssgPage)
}
throw err
} Prevention
- Configure adequate ssgRendererRetryCount and ssgRendererRetryDelay.
- Reduce renderer concurrency on resource-constrained CI machines.
- Eliminate flaky external calls during prerender (mock or cache data fetches).
- Verify final build output actually contains retried pages.
When it happens
Trigger: A transient renderer failure (e.g. renderer process crash, timeout, navigation error) while prerendering an ssgPage, with retries still available and onSsgRendererError not 'ignore'.
Common situations: Slow pages exceeding renderer timeouts under heavy parallel rendering; flaky external data fetches during prerender; resource exhaustion (memory/CPU) on CI machines running many concurrent page renders.
Related errors
- Failed to render ${errorsEncountered} SSG page${errorsEncoun
- SSG build failed to render SSG page:
- Failed to render SSG page for ${getSsgPageIdentifier(ssgPage
- Render error for the above SSG page:
- quasar.config file > invalid Vite plugin specified (cannot f
AI-assisted analysis of quasarframework/quasar@4841521b5f (2026-08-30).
Data as JSON: /api/errors/2708c808b57619b4.
Report an issue: GitHub.