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 === synthetic404Route

View on GitHub (pinned to 4841521b5f)

Solutions

  1. Usually self-resolves via retry — check whether the final build succeeds and whether this page ultimately rendered.
  2. If retries exhaust, increase ssgRendererRetryCount / ssgRendererRetryDelay in quasar.config ssg options.
  3. Reduce renderer concurrency to lower resource pressure on the machine.
  4. 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

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


AI-assisted analysis of quasarframework/quasar@4841521b5f (2026-08-30). Data as JSON: /api/errors/2708c808b57619b4. Report an issue: GitHub.