demo · v137
WebAuthn error decoder
Pick a scenario; the decoder shows what your error handler used to see, what it sees from Chrome 137 onwards, and what to branch on. Includes a full matrix of every (extension × frame × activation) combination affected by the rename.
pre-Chrome 137
caught error
error.name
—
—
error.message hint
—
—
handler branch
—
—
Chrome 137+
caught error
error.name
—
—
error.message hint
—
—
handler branch
—
—
migration matrix
Every combination the v137 change touches. The highlighted row is the exact path being aligned: a payment credential created in a cross-origin iframe with no user activation. Everything else was already NotAllowedError.
| Extension | Frame | Activation | Pre-v137 | v137+ | Changed? |
|---|
the safe handler
Catch both names while you migrate. If you only check SecurityError, your fallback breaks the day Chrome 137 lands.
try {
await navigator.credentials.create({ publicKey, payment });
} catch (e) {
if (e.name === "NotAllowedError" || e.name === "SecurityError") {
promptUserActivation();
return;
}
throw e;
}