diff --git a/.changeset/weak-pumpkins-train.md b/.changeset/weak-pumpkins-train.md
new file mode 100644
index 0000000000..f55588ecf9
--- /dev/null
+++ b/.changeset/weak-pumpkins-train.md
@@ -0,0 +1,7 @@
+---
+"@clerk/clerk-js": patch
+"@clerk/elements": patch
+"@clerk/types": patch
+---
+
+Update types to account for null second factors
diff --git a/packages/clerk-js/src/core/resources/SignIn.ts b/packages/clerk-js/src/core/resources/SignIn.ts
index 614080077d..7756286155 100644
--- a/packages/clerk-js/src/core/resources/SignIn.ts
+++ b/packages/clerk-js/src/core/resources/SignIn.ts
@@ -57,7 +57,7 @@ export class SignIn extends BaseResource implements SignInResource {
status: SignInStatus | null = null;
supportedIdentifiers: SignInIdentifier[] = [];
supportedFirstFactors: SignInFirstFactor[] = [];
- supportedSecondFactors: SignInSecondFactor[] = [];
+ supportedSecondFactors: SignInSecondFactor[] | null = null;
firstFactorVerification: VerificationResource = new Verification(null);
secondFactorVerification: VerificationResource = new Verification(null);
identifier: string | null = null;
@@ -339,7 +339,7 @@ export class SignIn extends BaseResource implements SignInResource {
this.supportedIdentifiers = data.supported_identifiers;
this.identifier = data.identifier;
this.supportedFirstFactors = deepSnakeToCamel(data.supported_first_factors) as SignInFirstFactor[];
- this.supportedSecondFactors = deepSnakeToCamel(data.supported_second_factors) as SignInSecondFactor[];
+ this.supportedSecondFactors = deepSnakeToCamel(data.supported_second_factors) as SignInSecondFactor[] | null;
this.firstFactorVerification = new Verification(data.first_factor_verification);
this.secondFactorVerification = new Verification(data.second_factor_verification);
this.createdSessionId = data.created_session_id;
diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoAlternativeMethods.tsx b/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoAlternativeMethods.tsx
index e9c45c063d..31fa74cfe8 100644
--- a/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoAlternativeMethods.tsx
+++ b/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoAlternativeMethods.tsx
@@ -51,17 +51,18 @@ const AlternativeMethodsList = (props: AlternativeMethodsProps & { onHavingTroub
gap={3}
>
- {supportedSecondFactors.sort(backupCodePrefFactorComparator).map((factor, i) => (
- onFactorSelected(factor)}
- />
- ))}
+ {supportedSecondFactors &&
+ supportedSecondFactors.sort(backupCodePrefFactorComparator).map((factor, i) => (
+ onFactorSelected(factor)}
+ />
+ ))}
{onBackLinkClick && (
diff --git a/packages/clerk-js/src/ui/components/SignIn/utils.ts b/packages/clerk-js/src/ui/components/SignIn/utils.ts
index 7b743908ff..60c84bf828 100644
--- a/packages/clerk-js/src/ui/components/SignIn/utils.ts
+++ b/packages/clerk-js/src/ui/components/SignIn/utils.ts
@@ -135,7 +135,7 @@ export function factorHasLocalStrategy(factor: SignInFactor | undefined | null):
}
// The priority of second factors is: TOTP -> Phone code -> any other factor
-export function determineStartingSignInSecondFactor(secondFactors: SignInFactor[]): SignInFactor | null {
+export function determineStartingSignInSecondFactor(secondFactors: SignInFactor[] | null): SignInFactor | null {
if (!secondFactors || secondFactors.length === 0) {
return null;
}
diff --git a/packages/elements/src/internals/machines/sign-in/utils/starting-factors.ts b/packages/elements/src/internals/machines/sign-in/utils/starting-factors.ts
index 5903b37f7a..adb724898a 100644
--- a/packages/elements/src/internals/machines/sign-in/utils/starting-factors.ts
+++ b/packages/elements/src/internals/machines/sign-in/utils/starting-factors.ts
@@ -94,7 +94,7 @@ function determineStrategyWhenOTPIsPreferred(factors: SignInFirstFactor[], ident
}
// The priority of second factors is: TOTP -> Phone code -> any other factor
-export function determineStartingSignInSecondFactor(secondFactors: SignInSecondFactor[]) {
+export function determineStartingSignInSecondFactor(secondFactors: SignInSecondFactor[] | null) {
if (!secondFactors || secondFactors.length === 0) {
return null;
}
diff --git a/packages/types/src/signIn.ts b/packages/types/src/signIn.ts
index 9158bee4af..ddd6323b39 100644
--- a/packages/types/src/signIn.ts
+++ b/packages/types/src/signIn.ts
@@ -73,7 +73,7 @@ export interface SignInResource extends ClerkResource {
*/
supportedIdentifiers: SignInIdentifier[];
supportedFirstFactors: SignInFirstFactor[];
- supportedSecondFactors: SignInSecondFactor[];
+ supportedSecondFactors: SignInSecondFactor[] | null;
firstFactorVerification: VerificationResource;
secondFactorVerification: VerificationResource;
identifier: string | null;