Skip to content

Expo: supportedFirstFactors is always empty #6918

@mrj0

Description

@mrj0

Preliminary Checks

Reproduction

.

Publishable key

pk_test_c3VwZXJiLWtpdC00Ni5jbGVyay5hY2NvdW50cy5kZXYk

Description

When using the expo sdk and the signIn hook, the properties like supportedFirstFactors are always empty. This is needed so I can build by custom login screen similar to the web without hard coding the supported SSO providers.

Steps to reproduce:

  1. Add the hook
    const { signIn } = useSignIn();

  2. Step 2
    console.log('signIn supported', signIn?.supportedFirstFactors);

Expected behavior:

Should see a list of supported first factors similar to web, where I can run this in the console on the portal page:

Clerk.client.signIn.supportedFirstFactors

Actual behavior:

[]

As a work around I also tried to reload the resource:

    useEffect(() => {
        console.log('signIn supported', signIn?.supportedFirstFactors);
        if (signIn?.supportedFirstFactors?.length === 0) {
            void signIn.reload({});
        }
    }, [signIn?.supportedFirstFactors]);

this results in a GET request (not POST) and fails with status 405.

It seems like it should work similar to the web but I attempted to call this myself since it works with curl but ran afoul of some kind of browser check and can only get 401 responses for some reason.

Environment

Packages: +1
+
Progress: resolved 1, reused 0, downloaded 1, added 1, done

  System:
    OS: Linux 6.16 Debian GNU/Linux forky/sid
    CPU: (32) x64 AMD Ryzen 9 9950X 16-Core Processor
    Memory: 17.38 GB / 60.43 GB
    Container: Yes
    Shell: 5.3.3 - /bin/bash
  Binaries:
    Node: 20.19.1 - ~/.local/share/mise/installs/node/20.19.1/bin/node
    npm: 10.8.2 - ~/.local/share/mise/installs/node/20.19.1/bin/npm
    pnpm: 10.18.0 - ~/projects/vinovest/mobile-portfolio-client/node_modules/.bin/pnpm
    Deno: 2.4.2 - ~/.local/share/mise/installs/deno/2.4.2/bin/deno
  Browsers:
    Chrome: 140.0.7339.185
  npmPackages:
    @babel/core: ^7.20.0 => 7.27.1 
    @babel/plugin-proposal-unicode-property-regex: ^7.18.6 => 7.18.6 
    @clerk/clerk-expo: ^2.16.0 => 2.16.0 
    @fawazahmed/react-native-read-more: ^3.0.3 => 3.0.4 
    @react-native-async-storage/async-storage: 2.1.2 => 2.1.2 
    @react-native-community/cli: ^18.0.0 => 18.0.0 
    @react-native-community/netinfo: 11.4.1 => 11.4.1 
    @react-native-masked-view/masked-view: 0.3.2 => 0.3.2 
    @react-navigation/bottom-tabs: ^6.5.20 => 6.6.1 
    @react-navigation/native: ^6.1.17 => 6.1.18 
    @react-navigation/native-stack: ^6.9.26 => 6.11.0 
    @react-navigation/stack: ^6.3.29 => 6.4.1 
    @reduxjs/toolkit: ^2.2.2 => 2.8.2 
    @sentry/react-native: ~6.14.0 => 6.14.0 
    @stripe/stripe-react-native: 0.45.0 => 0.45.0 
    @types/d3-scale: ^4.0.9 => 4.0.9 
    @types/d3-shape: ^3.1.7 => 3.1.7 
    @types/jest: ^29.5.12 => 29.5.14 
    @types/react: ~19.0.0 => 19.0.14 
    @types/redux-logger: ^3.0.13 => 3.0.13 
    axios: ^1.6.8 => 1.12.2 
    babel-plugin-parameter-decorator: ^1.0.16 => 1.0.16 
    babel-plugin-root-import: ^6.6.0 => 6.6.0 
    d3-scale: ^4.0.2 => 4.0.2 
    d3-shape: ^3.2.0 => 3.2.0 
    dotenv: ^16.4.7 => 16.5.0 
    expo: 53.0.23 => 53.0.23 
    expo-application: ~6.1.5 => 6.1.5 
    expo-auth-session: ~6.2.1 => 6.2.1 
    expo-build-properties: ~0.14.8 => 0.14.8 
    expo-clipboard: ~7.1.5 => 7.1.5 
    expo-constants: ~17.1.7 => 17.1.7 
    expo-crypto: ^14.1.5 => 14.1.5 
    expo-dev-client: ~5.2.4 => 5.2.4 
    expo-device: ~7.1.4 => 7.1.4 
    expo-file-system: ~18.1.11 => 18.1.11 
    expo-font: ~13.3.2 => 13.3.2 
    expo-insights: ~0.9.3 => 0.9.3 
    expo-linear-gradient: ~14.1.5 => 14.1.5 
    expo-linking: ~7.1.7 => 7.1.7 
    expo-local-authentication: ^16.0.5 => 16.0.5 
    expo-localization: ~16.1.6 => 16.1.6 
    expo-secure-store: ~14.2.4 => 14.2.4 
    expo-splash-screen: ~0.30.10 => 0.30.10 
    expo-status-bar: ~2.2.3 => 2.2.3 
    expo-store-review: ~8.1.5 => 8.1.5 
    expo-tracking-transparency: ~5.2.4 => 5.2.4 
    expo-updates: ~0.28.17 => 0.28.17 
    expo-web-browser: ~14.2.0 => 14.2.0 
    formik: ^2.4.5 => 2.4.6 
    inversify: ^6.0.2 => 6.2.2 
    inversify-hooks: ^2.1.6 => 2.1.6 
    inversify-inject-decorators: ^3.1.0 => 3.1.0 
    jest: ^29.7.0 => 29.7.0 
    jest-circus: ^29.7.0 => 29.7.0 
    jest-junit: ^16.0.0 => 16.0.0 
    jest-watch-typeahead: ^2.2.2 => 2.2.2 
    jsonwebtoken: ^9.0.2 => 9.0.2 
    lottie-react-native: 7.2.2 => 7.2.2 
    mobx: ^6.13.7 => 6.13.7 
    mobx-react-lite: ^4.1.0 => 4.1.0 
    pnpm: ^10.18.0 => 10.18.0 
    posthog-react-native: ^4.7.0 => 4.7.0 
    prettier: ^3.2.5 => 3.5.3 
    react: 19.0.0 => 19.0.0 
    react-dom: 19.0.0 => 19.0.0 
    react-native: 0.79.5 => 0.79.5 
    react-native-animated-spinkit: ^1.5.2 => 1.5.2 
    react-native-confetti-cannon: ^1.5.2 => 1.5.2 
    react-native-currency-input: ^1.1.1 => 1.1.1 
    react-native-gesture-handler: ~2.24.0 => 2.24.0 
    react-native-intl-phone-field: ^0.3.0 => 0.3.0 
    react-native-keyboard-aware-scroll-view: ^0.9.5 => 0.9.5 
    react-native-linear-gradient: ^2.8.3 => 2.8.3 
    react-native-modalize: ^2.1.1 => 2.1.1 
    react-native-pager-view: 6.7.1 => 6.7.1 
    react-native-plaid-link-sdk: ^11.6.0 => 11.13.3 
    react-native-reanimated: ~3.17.4 => 3.17.5 
    react-native-redash: ^18.1.3 => 18.1.3 
    react-native-responsive-linechart: https://github.com/Vinovest/react-native-responsive-linechart/releases/download/v5.7.1-v4/react-native-responsive-linechart-5.7.1-v4.tgz => 5.7.1-v4 
    react-native-responsive-screen: ^1.4.2 => 1.4.2 
    react-native-safe-area-context: 5.4.0 => 5.4.0 
    react-native-screens: ~4.11.1 => 4.11.1 
    react-native-size-matters: ^0.4.2 => 0.4.2 
    react-native-skeleton-placeholder: ^5.2.4 => 5.2.4 
    react-native-svg: 15.11.2 => 15.11.2 
    react-native-webview: 13.13.5 => 13.13.5 
    react-query: ^3.39.3 => 3.39.3 
    react-redux: ^9.1.0 => 9.2.0 
    redux-logger: ^3.0.6 => 3.0.6 
    redux-persist: ^6.0.0 => 6.0.0 
    reflect-metadata: ^0.2.2 => 0.2.2 
    retry-axios: ^3.1.3 => 3.1.3 
    typescript: ~5.8.3 => 5.8.3 
    use-debounce: ^10.0.0 => 10.0.4 
    yup: ^1.4.0 => 1.6.1 
    yup-phone: ^1.3.2 => 1.3.2 
    zod: ^3.24.1 => 3.25.17

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-triageA ticket that needs to be triaged by a team member

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions