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.

ExtensionFrameActivationPre-v137v137+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;
}

see also