X_PASSKEY_CHALLENGE_EXPIRED
Means
a passkey ceremony named a challenge that is unknown, already used or past its ttl
Typical cause
the response was replayed, the options were issued by another ceremony, or the person took longer than the challenge ttl
Fix
x errors explain X_PASSKEY_CHALLENGE_EXPIRED --json, then fetch fresh options and run the ceremony once: await passkeys.loginOptions()