Skip to content

@clerk/expo@3.2.2-9 Android build fails: Unable to find module dependency: 'ClerkExpo' #8514

@dampty

Description

@dampty

Preliminary Checks

Reproduction

https://github.com/dampty/test1

Publishable key

pk_test_c3VpdGVkLWdvcGhlci05Ny5jbGVyay5hY2NvdW50cy5kZXYk

Description

Steps to reproduce:

  1. Use an Expo / React Native app with @clerk/expo@3.2.2-9.
  2. Ensure the Android native project is generated / prebuilt with the @clerk/expo native module.
  3. Run an EAS iOS build, for example npx eas build -p ios.

Expected behavior:

The build is performed on EAS (https://expo.dev/). The build works correctly for Android, but not for iOS. The expected behavior is correct for both platforms.

Actual behavior:

Have error in EAS log files

❌ (ios/AIMoodDiary/ClerkViewFactory.swift:10:8)

8 | import ClerkKit
9 | import ClerkKitUI

10 | import ClerkExpo // Import the pod to access ClerkViewFactoryProtocol
| ^ Unable to find module dependency: 'ClerkExpo'
11 |
12 | // MARK: - View Factory Implementation
13 |

› Preparing AIMoodDiary » Info.plist

Environment

Using VM template "macos-sequoia-15.6-xcode-26.2" running macOS Sequoia 15.6.1
Installed software:
- Xcode 26.2 (17C52)
- Node.js 20.19.4
- Bun 1.3.8
- Yarn 1.22.22
- pnpm 10.28.2
- npm 10.9.3
- fastlane 2.231.1
- CocoaPods 1.16.2
- Ruby 3.2
- node-gyp 12.2.0
- Maestro 2.1.0

"dependencies": {
    "@amplitude/analytics-react-native": "^1.5.52",
    "@clerk/expo": "^3.2.2",
    "@convex-dev/react-query": "^0.1.0",
    "@expo-google-fonts/dm-sans": "^0.4.2",
    "@expo/vector-icons": "^15.1.1",
    "@gorhom/bottom-sheet": "^5.2.13",
    "@hookform/resolvers": "^5.2.2",
    "@likashefqet/react-native-image-zoom": "^4.3.0",
    "@logrocket/react-native": "^2.3.3",
    "@react-native-async-storage/async-storage": "2.2.0",
    "@react-native-community/datetimepicker": "8.6.0",
    "@react-native-community/netinfo": "11.5.2",
    "@react-native-community/slider": "5.1.2",
    "@react-native-firebase/analytics": "^24.0.0",
    "@react-native-firebase/app": "^24.0.0",
    "@react-native-picker/picker": "2.11.4",
    "@react-navigation/bottom-tabs": "^7.15.5",
    "@sentry/react-native": "~7.11.0",
    "@shopify/flash-list": "2.0.2",
    "@stardazed/streams-text-encoding": "^1.0.2",
    "@tanstack/react-query": "^5.100.9",
    "@zoontek/react-native-navigation-bar": "^1.1.1",
    "base64-arraybuffer": "^1.0.2",
    "buffer": "^6.0.3",
    "convex": "^1.37.0",
    "convex-helpers": "^0.1.116",
    "date-fns": "^4.1.0",
    "dayjs": "^1.11.20",
    "expo": "~55.0.23",
    "expo-application": "~55.0.14",
    "expo-asset": "~55.0.17",
    "expo-audio": "~55.0.14",
    "expo-auth-session": "~55.0.15",
    "expo-background-task": "~55.0.17",
    "expo-blur": "~55.0.14",
    "expo-build-properties": "~55.0.13",
    "expo-calendar": "~55.0.14",
    "expo-camera": "~55.0.18",
    "expo-checkbox": "~55.0.4",
    "expo-clipboard": "~55.0.13",
    "expo-constants": "~55.0.16",
    "expo-crypto": "~55.0.14",
    "expo-dev-client": "~55.0.32",
    "expo-device": "~55.0.16",
    "expo-document-picker": "~55.0.13",
    "expo-file-system": "~55.0.19",
    "expo-font": "~55.0.7",
    "expo-haptics": "~55.0.14",
    "expo-image": "~55.0.10",
    "expo-image-picker": "~55.0.20",
    "expo-insights": "~55.0.16",
    "expo-linear-gradient": "~55.0.13",
    "expo-linking": "~55.0.15",
    "expo-localization": "~55.0.13",
    "expo-location": "~55.1.9",
    "expo-maps": "~55.0.17",
    "expo-media-library": "~55.0.16",
    "expo-network": "~55.0.13",
    "expo-notifications": "~55.0.22",
    "expo-quick-actions": "^6.0.1",
    "expo-router": "~55.0.14",
    "expo-secure-store": "~55.0.13",
    "expo-sharing": "~55.0.18",
    "expo-speech-recognition": "^3.1.3",
    "expo-splash-screen": "~55.0.20",
    "expo-status-bar": "~55.0.6",
    "expo-symbols": "~55.0.8",
    "expo-system-ui": "~55.0.17",
    "expo-task-manager": "~55.0.15",
    "expo-tracking-transparency": "~55.0.13",
    "expo-updates": "~55.0.21",
    "expo-video": "~55.0.16",
    "expo-video-thumbnails": "~55.0.14",
    "expo-web-browser": "~55.0.15",
    "i18next": "^26.0.10",
    "jotai": "^2.20.0",
    "json2md": "^2.0.3",
    "lodash": "^4.18.1",
    "lottie-react-native": "~7.3.6",
    "nativewind": "^5.0.0-preview.2",
    "openai": "^6.36.0",
    "react": "19.2.0",
    "react-dom": "19.2.0",
    "react-hook-form": "^7.75.0",
    "react-i18next": "^17.0.7",
    "react-native": "0.83.6",
    "react-native-bouncy-checkbox": "^4.1.4",
    "react-native-calendars": "^1.1314.0",
    "react-native-collapsible-tab-view": "^8.0.1",
    "react-native-css": "^3.0.7",
    "react-native-date-picker": "^5.0.13",
    "react-native-ease": "^0.7.1",
    "react-native-error-boundary": "^3.1.0",
    "react-native-gesture-handler": "~2.30.0",
    "react-native-ios-context-menu": "^3.2.1",
    "react-native-ios-utilities": "^5.2.0",
    "react-native-markdown-display": "^7.0.2",
    "react-native-nitro-image": "^0.14.0",
    "react-native-nitro-modules": "^0.35.6",
    "react-native-pager-view": "8.0.0",
    "react-native-popup-menu": "^0.19.0",
    "react-native-purchases": "^10.1.0",
    "react-native-purchases-ui": "^10.1.0",
    "react-native-reanimated": "4.2.1",
    "react-native-render-html": "^6.3.4",
    "react-native-safe-area-context": "~5.6.2",
    "react-native-screens": "~4.23.0",
    "react-native-svg": "15.15.3",
    "react-native-svg-charts": "^5.4.0",
    "react-native-tab-view": "^4.3.0",
    "react-native-ui-datepicker": "^3.1.3",
    "react-native-uuid": "^2.0.4",
    "react-native-vision-camera": "^5.0.9",
    "react-native-web": "^0.21.2",
    "react-native-webview": "13.16.0",
    "react-native-worklets": "0.7.4",
    "react-native-worklets-core": "^1.6.3",
    "sass": "^1.99.0",
    "sonner-native": "^0.25.0",
    "uniwind": "^1.6.4",
    "zod": "^4.4.3",
    "zod-i18n-map": "^2.27.0"
}
    "plugins": [
      [
        "expo-build-properties",
        {
          "android": {
            "minSdkVersion": 26,
            "compileSdkVersion": 36,
            "targetSdkVersion": 36,
            "buildToolsVersion": "36.0.0",
            "jvmArgs": ["-Xmx3064m", "-XX:MaxMetaspaceSize=1024m"]
          },
          "ios": {
            "useFrameworks": "static",
            "deploymentTarget": "15.1",
            "podfileProperties": { "use_modular_headers!": true },
            "buildReactNativeFromSource": true,
            "forceStaticLinking": ["RNFBApp", "RNFBAuth", "RNFBFirestore", "ClerkExpo"]
          }
        }
      ],
      [
        "expo-router",
        {
          "origin": "http://localhost:8081"
        }
      ],
      [
        "expo-splash-screen",
        {
          "image": "./assets/images/splash-image.png",
          "imageWidth": 200,
          "resizeMode": "contain",
          "backgroundColor": "#FAF3F9"
        }
      ],
      [
        "expo-dev-client",
        {
          "launchMode": "most-recent"
        }
      ],
      [
        "expo-font",
        {
          "fonts": ["./assets/fonts/SpaceMono-Regular.ttf"]
        }
      ],
      [
        "expo-secure-store",
        {
          "configureAndroidBackup": true,
          "faceIDPermission": "Allow $(PRODUCT_NAME) to access your Face ID biometric data."
        }
      ],
      [
        "@clerk/expo",
        {
          "appleSignIn": false
        }
      ],
      [
        "expo-calendar",
        {
          "calendarPermission": "The app needs to access your calendar."
        }
      ],
      [
        "expo-camera",
        {
          "cameraPermission": "Allow $(PRODUCT_NAME) to access your camera",
          "microphonePermission": "Allow $(PRODUCT_NAME) to access your microphone",
          "recordAudioAndroid": true
        }
      ],
      ["@logrocket/react-native"],
      [
        "expo-image-picker",
        {
          "photosPermission": "The $(PRODUCT_NAME) app accesses your photos to let you share them with your friends.",
          "cameraPermission": "The $(PRODUCT_NAME) app accesses your videos to let you share them with your friends.",
          "microphonePermission": "The $(PRODUCT_NAME) app accesses your audios to let you share them with your friends."
        }
      ],
      [
        "expo-localization",
        {
          "supportedLocales": {
            "ios": ["en", "ru"],
            "android": ["en", "ru"]
          }
        }
      ],
      "expo-asset",
      [
        "expo-video",
        {
          "supportsBackgroundPlayback": true,
          "supportsPictureInPicture": true
        }
      ],
      [
        "expo-audio",
        {
          "microphonePermission": "Allow $(PRODUCT_NAME) to access your microphone."
        }
      ],
      [
        "expo-media-library",
        {
          "photosPermission": "Allow $(PRODUCT_NAME) to access your photos.",
          "savePhotosPermission": "Allow $(PRODUCT_NAME) to save photos.",
          "isAccessMediaLocationEnabled": true,
          "granularPermissions": ["audio", "photo", "video"]
        }
      ],
      [
        "expo-location",
        {
          "locationAlwaysAndWhenInUsePermission": "Allow $(PRODUCT_NAME) to use your location."
        }
      ],
      "expo-web-browser",
      [
        "expo-notifications",
        {
          "icon": "./assets/icons/notification.png",
          "color": "#ffffff",
          "defaultChannel": "default",
          "sounds": [
            "./assets/sounds/notification_sound.wav",
            "./assets/sounds/notification_sound_other.wav",
            "./assets/sounds/notification_ring.wav"
          ],
          "enableBackgroundRemoteNotifications": true
        }
      ],
      [
        "@sentry/react-native/expo",
        {
          "url": "https://sentry.io/",
          "note": "Use SENTRY_AUTH_TOKEN env to authenticate with Sentry.",
          "project": "mood-diary",
          "organization": "simple-inventions"
        }
      ],
      "@react-native-community/datetimepicker",
      "@sentry/react-native",
      [
        "expo-maps",
        {
          "requestLocationPermission": true,
          "locationPermission": "Allow $(PRODUCT_NAME) to use your location"
        }
      ],
      "expo-quick-actions",
      [
        "expo-tracking-transparency",
        {
          "userTrackingPermission": "This identifier will be used to deliver personalized ads to you."
        }
      ],
      "expo-background-task",
      "expo-sharing",
      "expo-image"
    ],

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