diff --git a/.version b/.version
index 311f78b6..ff76dbc5 100644
--- a/.version
+++ b/.version
@@ -1 +1 @@
-v2.13.0
\ No newline at end of file
+v2.14.0
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3c510430..3d4c0156 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
# Change Log
+## [v2.14.0](https://github.com/auth0/auth0-angular/tree/v2.14.0) (2026-10-27)
+[Full Changelog](https://github.com/auth0/auth0-angular/compare/v2.13.0...v2.14.0)
+
+**Added**
+- feat: add granular passkey APIs for signup and login [\#1114](https://github.com/auth0/auth0-angular/pull/1114) ([siddhikotak](https://github.com/siddhikotak))
+- feat: add identifier verification support for passkey signup [\#1106](https://github.com/auth0/auth0-angular/pull/1106) ([siddhikotak](https://github.com/siddhikotak))
+- feat: enforce IPSIE session_expiry ceiling on local session lifetime [\#1098](https://github.com/auth0/auth0-angular/pull/1098) ([siddhikotak](https://github.com/siddhikotak))
+
## [v2.13.0](https://github.com/auth0/auth0-angular/tree/v2.13.0) (2026-09-28)
[Full Changelog](https://github.com/auth0/auth0-angular/compare/v2.12.0...v2.13.0)
diff --git a/docs/assets/hierarchy.js b/docs/assets/hierarchy.js
index ff2f415f..73c9e01a 100644
--- a/docs/assets/hierarchy.js
+++ b/docs/assets/hierarchy.js
@@ -1 +1 @@
-window.hierarchyData = "eJyVlUtv2zAMgP+Lzupq2Zb8uA3ZAwXSdWi77VD0ICh0LFSRPMkeMBT570NcNJDtZFJOAZyP/kiRol+RNaZ3qH6ihOA8oThj+TNGFhoFopdGO1S/oozlhx/Nd4Bq9N10Q7c2W6nvujcEoxepN6hOKcNosArVSOoebMMFuOsF/6HtdwphJBR3DtWod5urwwuujkGHP1upNhY0qp+yInneY5QViZfFV+gfzQvoX7JvR0NcMufCInLaY5Qn1EvhZsVFCwHhG3RpyXlKDiXnKfF8ayO4euiN5VuYqklavqtHA7jrBXw2hbcHe4woIZMD1mCl+Gytsf8T+VzAMSmRphWmOcW0pJglBLM0wywnmDGCWUlwkSS4qBgu8/EoaFp5yT3KHZihDybncxclx4pRmvv9vm34PfwepIVNUDxnI06fFfNLFlvlAo6wlXRuu+tAx6mOZNjDEn+mPg59C7qXgh8uXVB2Ao8wptm8shXXApSKaNsJPMKY+zXeSuek3t5DY8G147IJT8uZmAg3O+F+EKYDF2v16Ahf6ftu9B+u5GZldCO3g43r6tmgsL1I/E/AymgNInw9fC7CUTHP8cPBp85034wWEBQt4LCtnM5Ow2M2y8XrrKQVLosClxXFFclwlY07taTVVL6WrvcunbERQ3Q2KqL4opgVr61Ragc63NQlHeGrZut81XKlQG/DrV3AYVtFsqntJ1jZ/I1ReWSEJ5uP0PFcvnAR28TTQSH7fv8PRTRoMw=="
\ No newline at end of file
+window.hierarchyData = "eJyVld9v2yAQx/8XnunqYsDYb1P2Q5WSdWq77aHqA3LOMQoBD5xJVZX/fXLSVThOBnmyZH+Pzx139/Urctb2HlVPjHBMSYbzonzGyEGjoe6VNR5VrygvyuFh5AZQhb7bbtvN7UqZu+4gwWitzBJVhHGMtk6jCinTg2tkDf56ov/Q9huNMKq19B5VqPfLq+GAq/eg4WOr9NKBQdVTLtjzDqNcsCCLr9A/2jWYX6pv94S0ZM6FJeS0w4iSLEjhdibrFiLAg+jSkmnOh5JpzgPe3NZSP/TWyRWM0TdE/EPvCeCvJ+KzKRxe7DBihI8u2IBT9WfnrPsfKNRFGKMSGeWY8RzzjGFOCOaUYc4p5oLhIuO4IBwLkmPBS3yTUTrcB6Nhho9qA3bbRzMMdRdlKPZNYDwPoItG3sPvrXKwjIKPtQktEPx401KrnIjjNJ6xY9pdByYN9a5M4BAScD5u+xZMr2o5bF4UdkKeQKSTymbS1KB1QttOyBOInIZTorxXZnUPjQPf7h0nPi1nYhLYI2d8O+ehth34VGqgjvOKLJzSW/NHarWcWdOo1daldfVsUAJ9ZFMzawzU8fUIdXGGIOHO//DwqbPdN2tqiIIm4gQaL8cOk+IsF9uZEAKXWYFLwnFJGS753lOFEGP4XPk+WDrrEobobFS8+DIrjoo3zmq9ARNv6lSdwBuNz6KRs1ZqDWYVb+1EnEAbGdGikT/BqeYlBRUoEzhj+wnv5YusU5t4OihOH/7Pod9K79fwsi/gzbeT/5mx2Fgyu91feXaa9Q=="
\ No newline at end of file
diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js
index 76d7247b..2cd2570b 100644
--- a/docs/assets/navigation.js
+++ b/docs/assets/navigation.js
@@ -1 +1 @@
-window.navigationData = "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"
\ No newline at end of file
+window.navigationData = "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"
\ No newline at end of file
diff --git a/docs/assets/search.js b/docs/assets/search.js
index 91b2508b..b8571530 100644
--- a/docs/assets/search.js
+++ b/docs/assets/search.js
@@ -1 +1 @@
-window.searchData = "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";
\ No newline at end of file
+window.searchData = "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";
\ No newline at end of file
diff --git a/docs/classes/AbstractNavigator.html b/docs/classes/AbstractNavigator.html
index 46ecf40f..904236b3 100644
--- a/docs/classes/AbstractNavigator.html
+++ b/docs/classes/AbstractNavigator.html
@@ -11,7 +11,7 @@
Provides Passkey (WebAuthn) authentication as Observables.
-
Both methods handle the full WebAuthn challenge-response flow internally.
-After a successful call, this updates the authentication state to ensure
-consistency with the standard authentication flows.
+
signup, continueSignup and login handle the full WebAuthn
+challenge-response flow internally. getSignupChallenge,
+getLoginChallenge and getTokenWithPasskey are granular APIs that let
+the app run the WebAuthn ceremony itself.
+
Methods that return tokens update the authentication state on success to
+ensure consistency with the standard authentication flows. The challenge
+methods do not change the authentication state.
Error thrown when exchanging a passkey credential for tokens fails.
Unlike the challenge errors, this carries mfa_token / mfa_requirements on
its cause when the server responds with mfa_required.
+
When identifier verification is required, isRetryable indicates whether the
+user entered a wrong OTP code. A retryable error means the caller should re-collect OTP
+codes for the identifiers in verificationRequired and retry getTokenByPasskey
+with the same credential and authSession. A non-retryable error is any other error,
+so check the error (for example with isMfaRequiredError) before starting a new flow.
-
+
Hierarchy
PasskeyError
PasskeyGetTokenError
+
Defined in node_modules/@auth0/auth0-auth-js/dist/index.d.ts:3312
Defined in node_modules/@auth0/auth0-auth-js/dist/index.d.ts:3334
Properties
+
+
OptionalReadonlyauthSession
+
authSession?:string
+
The auth session token to use when retrying. Only present when isRetryable
+is true.
+
Optionalbody
body?:string
@@ -73,19 +89,19 @@
Optional
+
Defined in node_modules/@auth0/auth0-auth-js/dist/index.d.ts:3279
Optionalcause
cause?:PasskeyGetTokenApiErrorResponse
+
Defined in node_modules/@auth0/auth0-auth-js/dist/index.d.ts:3313
code
code:string
+
Defined in node_modules/@auth0/auth0-auth-js/dist/index.d.ts:3267
Optionalheaders
headers?:Headers
@@ -93,7 +109,19 @@
Optional
+
Defined in node_modules/@auth0/auth0-auth-js/dist/index.d.ts:3275
+
+
ReadonlyisRetryable
+
isRetryable:boolean
+
true when Auth0 returned invalid_grant with an auth_session, meaning
+the session is still alive and the user can retry with corrected OTP codes.
+false for every other error, so check the error (for example with
+isMfaRequiredError) before starting a new flow.
+
Branch on this field — never on HTTP status code or error_description text,
+which are intentionally identical on retryable and terminal invalid_grant paths.
+
message
message:string
+
Defined in node_modules/@auth0/auth0-auth-js/dist/index.d.ts:3271
+
+
OptionalReadonlyverificationRequired
+
verificationRequired?: ("email"|"phone")[]
+
Identifiers that still require a valid OTP code. Only present when isRetryable
+is true and the failure was due to a wrong OTP code.
Thrown by signup() when the server requires identifier verification before
+passkey creation. Catch this error, collect OTP codes for each identifier in
+verificationRequired, then call passkey.continueSignup(codes) to complete
+the flow. The SDK retains the auth session internally — you do not need to
+pass it yourself.
Observable-based Passkey API client exposed by AuthService.passkey.
-
Wraps PasskeyApiClient from @auth0/auth0-spa-js. Both methods handle the
-full WebAuthn flow internally and update Angular auth state on success.
+
Wraps PasskeyApiClient from @auth0/auth0-spa-js. signup,
+continueSignup and login handle the full WebAuthn flow internally and
+update Angular auth state on success. getSignupChallenge,
+getLoginChallenge and getTokenWithPasskey are granular APIs for running
+the WebAuthn ceremony yourself.
All methods return Observable instead of Promise.
Continues a signup that was interrupted by identifier verification.
+Call this after signup() errors with PasskeyVerificationRequiredError,
+passing an OTP code for each identifier in verificationRequired.
+Updates isAuthenticated$ and user$ on success.
+
If a code is wrong and the session is still active, this errors with a
+PasskeyGetTokenError where isRetryable is true. Collect new codes for
+error.verificationRequired and call continueSignup() again; the same
+passkey is reused, so the user is not prompted again.
Step 1 of the granular login flow. Emits the authSession and a decoded
+publicKey (PublicKeyCredentialRequestOptions). Pass publicKey to
+navigator.credentials.get(), then hand the credential and authSession
+to getTokenWithPasskey().
Step 1 of the granular signup flow. Emits the authSession and a decoded
+publicKey (PublicKeyCredentialCreationOptions). Pass publicKey to
+navigator.credentials.create(), then hand the credential and
+authSession to getTokenWithPasskey().
+
If the connection requires identifier verification, verificationRequired
+lists the identifiers to verify. Collect the OTP codes before calling
+navigator.credentials.create() and pass them as verification to
+getTokenWithPasskey().
Step 2 of the granular flow. Accepts the raw PublicKeyCredential from
+either navigator.credentials.create() (signup) or
+navigator.credentials.get() (login).
+Updates isAuthenticated$ and user$ on success.
+
If an OTP code in verification is wrong and the session is still active,
+this errors with a PasskeyGetTokenError where isRetryable is true.
+Call getTokenWithPasskey() again with error.authSession, the same
+credential, and new codes for error.verificationRequired.
Continue a signup that was interrupted by identifier verification.
+
Call this after catching PasskeyVerificationRequiredError from signup(),
+collecting OTP codes from the user, and passing them here. The SDK
+internally retains the auth session — you do not need to pass it.
+
If the codes are wrong but the session is still alive, this throws a
+PasskeyGetTokenError with isRetryable: true. Collect new codes for
+error.verificationRequired and call continueSignup() again; the same
+passkey is reused, so the user is not prompted again.
Options for exchanging a signed passkey credential for tokens.
+
credential is the raw PublicKeyCredential produced by the WebAuthn
+ceremony — a creation credential (signup) or an assertion credential
+(login). The credential type (attestation vs assertion) is detected
+automatically during serialization.
OTP codes collected for identifier verification. Required when
+PasskeySignupChallenge.verificationRequired is non-empty. Keys are the
+identifier names (e.g. "email", "phone"); values are the OTP codes.
+Omit entirely when no verification is required.
A passkey login challenge ready for the WebAuthn ceremony.
+
publicKey is decoded (base64url → ArrayBuffer) and can be fed directly into
+a WebAuthn assertion ceremony . authSession must be retained and passed to getTokenWithPasskey().
A passkey signup challenge ready for the WebAuthn ceremony.
+
publicKey is decoded (base64url → ArrayBuffer) and can be fed directly into
+a WebAuthn credential creation ceremony. authSession must be retained and passed to getTokenWithPasskey().
Identifiers that require OTP verification before token issuance (e.g. ["email"]).
+Absent when no verification is required. Collect OTP codes for each identifier
+and pass them as verification to getTokenWithPasskey() — do NOT call
+navigator.credentials.create() until all codes have been collected.
Emits errors that occur during login, or when checking for an active session on startup.