This guide is a practical runbook for diagnosing Renderify failures in production and local development.
- Validate security and dependency availability before execution:
pnpm cli -- probe-plan path/to/plan.json- If probe passes but render fails, run execution with strict env and inspect diagnostics:
RENDERIFY_SECURITY_PROFILE=strict \
RENDERIFY_RUNTIME_PREFLIGHT=true \
pnpm cli -- render-plan path/to/plan.json- If runtime source is involved (
plan.source), force browser sandbox and fail-closed:
RENDERIFY_RUNTIME_BROWSER_SANDBOX_MODE=worker \
RENDERIFY_RUNTIME_BROWSER_SANDBOX_FAIL_CLOSED=true \
pnpm playground- If dependency fetch is unstable, tune timeout/retry and fallback CDN list:
RENDERIFY_RUNTIME_REMOTE_FETCH_TIMEOUT_MS=15000 \
RENDERIFY_RUNTIME_REMOTE_FETCH_RETRIES=3 \
RENDERIFY_RUNTIME_REMOTE_FALLBACK_CDNS=https://esm.sh,https://cdn.jsdelivr.net \
pnpm playground| Symptom | Typical cause | Recommended fix |
|---|---|---|
Security policy rejected runtime plan: ... |
Plan violates policy (blocked tags, blocked source pattern, disallowed module host, budget policy) | Run probe-plan and inspect securityIssues. If intentional, adjust securityInitialization.overrides instead of disabling checks globally. |
Missing moduleManifest entry for bare specifier: ... |
Strict/balanced policy plus bare imports without manifest coverage | Keep autoPinLatestModuleManifest enabled for DX, or pre-generate/pin moduleManifest for deterministic production. |
Remote module URL is blocked by runtime network policy: ... |
Runtime fallback URL host is outside allowedNetworkHosts |
Align security allowlist with runtime fallback CDNs, or disable fallback (RENDERIFY_RUNTIME_JSPM_ONLY_STRICT_MODE=true for strict JSPM-only mode). |
Dependency preflight timed out |
Slow CDN/network and low fetch timeout | Increase RENDERIFY_RUNTIME_REMOTE_FETCH_TIMEOUT_MS; keep retries bounded (RENDERIFY_RUNTIME_REMOTE_FETCH_RETRIES) to avoid request storms. |
Worker sandbox timed out / Iframe sandbox timed out |
Source execution exceeded sandbox timeout | Raise RENDERIFY_RUNTIME_BROWSER_SANDBOX_TIMEOUT_MS, reduce source complexity, or optimize remote imports. |
Babel standalone is not available... |
Browser runtime source path used without Babel standalone in page scope | Load @babel/standalone before TSX/JSX execution, or provide a custom sourceTranspiler. |
Runtime execution timed out |
maxExecutionMs is too low for current plan/dependencies |
Increase plan.capabilities.maxExecutionMs (or runtime default), then profile root cause in dependencies/source. |
strict: internet-facing, untrusted model output, compliance-sensitive environments.balanced: default for most production workloads.relaxed: trusted internal tools and prototyping.
See docs/security.md for full policy details.
- Keep it enabled for rapid prototyping and playground flows.
- Disable it in production (
autoPinLatestModuleManifest: false) and provide pinnedmoduleManifestentries for deterministic deploys.
Use preflight probing:
pnpm cli -- probe-plan examples/runtime/recharts-dashboard-plan.jsonThis checks policy and dependency loadability without running component/source logic.
Common reasons:
- Different security profile (
strictvsbalanced). - Different fallback CDN configuration.
- Different browser runtime capabilities (
Worker/ShadowRealmavailability). - Different module versions when using latest auto-pin behavior.
Include:
- Plan snippet (
specVersion,imports,sourcesection,moduleManifestif present). - Security profile and runtime env variables.
- Full
probe-planoutput. - Runtime diagnostics from
execution.diagnostics. - Browser/version and whether sandbox mode was enabled.