demo ยท v139
WebGL Fallback Decision Lab
Chrome 139 stops silently replacing failed WebGL with SwiftShader. This lab probes the real canvas.getContext() path, then lets you force the null, software-renderer, and context-lost branches that production code now needs to handle.
fallback path lab
The live probe creates an actual WebGL context with the selected options and inspects its renderer string. Scenario controls then drive the same app-level decision tree so every fallback branch is visible without requiring a broken GPU.
42 plotted points
app decision
Not run
Run the probe to choose WebGL or a fallback.
context result
Not run
Context creation, null returns, and context loss appear here.
fallback renderer
Not run
Canvas 2D, SVG, or support messaging will be selected when WebGL cannot be used.
rendered output
probe log
awaiting probe
the production branch
const options = { failIfMajorPerformanceCaveat: true };
const gl = canvas.getContext("webgl2", options) ?? canvas.getContext("webgl", options);
if (!gl || rendererLooksLikeSoftware(gl)) {
renderCanvas2DFallback();
} else {
startWebGLScene(gl);
}