[SDK49] Error when using PROVIDER_GOOGLE on iOS

Error Message “ERROR react-native-maps: AirGoogleMaps dir must be added to your xCode project to support GoogleMaps on iOS”

I’ve been using a MapView in my application as shown:

  <SView flex={1}>
          <MapView
            provider={PROVIDER_GOOGLE}
            style={{ width: "100%", height: "100%" }}
            initialRegion={{
              latitude: {latitude},
              longitude: {longitude},
              latitudeDelta: 0.01,
              longitudeDelta: 0.01,
            }}
          >
            {renderMarkers()}
          </MapView>
  </SView>

For some reason after installing expo-dev-client, and creating a development-simulator build, I’m getting the error “AirGoogleMaps dir must be added to your Xcode project to support GoogleMaps on iOS.” The map displayed fine before I was using the expo-dev-client, but not the map won’t even display. I’ve never had to play around in Xcode when working with the expo-dev-client managed workflow, and wanted to know if anyone has figured out a fix to this?

Details

  1. Expo SDK Version: 49.0.5
  2. iOS
  3. MapView
 react-native-maps: AirGoogleMaps dir must be added to your xCode project to support GoogleMaps on iOS. 
    at MapView (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:233661:22)
    at RCTView
    at View (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:40428:43)
    at anonymous (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:183364:50)
    at RCTView
    at View (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:40428:43)
    at anonymous (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:183364:50)
    at ScreenWrapper
    at SearchScreen (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:233305:46)
    at Route (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:141484:24)
    at Route(search) (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:141790:24)
    at StaticContainer (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:136776:17)
    at EnsureSingleNavigator (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:133572:24)
    at SceneView (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:136681:22)
    at RCTView
    at View (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:40428:43)
    at DebugContainer (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:141120:36)
    at MaybeNestedStack (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:138366:23)
    at RCTView
    at View (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:40428:43)
    at RNSScreen
    at anonymous (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:98867:62)
    at Suspender (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140765:22)
    at Suspense
    at Freeze (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140784:23)
    at DelayedFreeze (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140374:22)
    at InnerScreen (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140422:36)
    at Screen (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140697:36)
    at SceneView (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:138410:22)
    at Suspender (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140765:22)
    at Suspense
    at Freeze (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140784:23)
    at DelayedFreeze (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140374:22)
    at RNSScreenStack
    at ScreenStack (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140394:25)
    at NativeStackViewInner (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:138591:22)
    at RCTView
    at View (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:40428:43)
    at SafeAreaProviderCompat (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140149:25)
    at NativeStackView
    at PreventRemoveProvider (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:135653:25)
    at NavigationContent (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:136464:22)
    at anonymous (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:136479:27)
    at NativeStackNavigator (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:131541:18)
    at anonymous (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:141420:38)
    at DynamicLayout
    at Route (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:141484:24)
    at Route((search)) (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:141790:24)
    at StaticContainer (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:136776:17)
    at EnsureSingleNavigator (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:133572:24)
    at SceneView (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:136681:22)
    at RCTView
    at View (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:40428:43)
    at RCTView
    at View (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:40428:43)
    at Background (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:138858:21)
    at Screen (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140196:71)
    at RNSScreen
    at anonymous (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:98867:62)
    at Suspender (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140765:22)
    at Suspense
    at Freeze (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140784:23)
    at DelayedFreeze (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140374:22)
    at InnerScreen (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140422:36)
    at Screen (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140697:36)
    at MaybeScreen (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:145458:24)
    at RNSScreenNavigationContainer
    at ScreenContainer (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140551:31)
    at MaybeScreenContainer (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:145446:23)
    at RCTView
    at View (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:40428:43)
    at SafeAreaProviderCompat (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140149:25)
    at BottomTabView (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:142693:30)
    at PreventRemoveProvider (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:135653:25)
    at NavigationContent (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:136464:22)
    at anonymous (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:136479:27)
    at BottomTabNavigator (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:142603:18)
    at anonymous (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:141420:38)
    at TabLayout (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:235748:55)
    at Route (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:141484:24)
    at Route((tabs)) (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:141790:24)
    at StaticContainer (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:136776:17)
    at EnsureSingleNavigator (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:133572:24)
    at SceneView (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:136681:22)
    at RCTView
    at View (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:40428:43)
    at DebugContainer (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:141120:36)
    at MaybeNestedStack (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:138366:23)
    at RCTView
    at View (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:40428:43)
    at RNSScreen
    at anonymous (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:98867:62)
    at Suspender (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140765:22)
    at Suspense
    at Freeze (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140784:23)
    at DelayedFreeze (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140374:22)
    at InnerScreen (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140422:36)
    at Screen (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140697:36)
    at SceneView (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:138410:22)
    at Suspender (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140765:22)
    at Suspense
    at Freeze (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140784:23)
    at DelayedFreeze (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140374:22)
    at RNSScreenStack
    at ScreenStack (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140394:25)
    at NativeStackViewInner (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:138591:22)
    at RCTView
    at View (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:40428:43)
    at SafeAreaProviderCompat (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:140149:25)
    at NativeStackView
    at PreventRemoveProvider (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:135653:25)
    at NavigationContent (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:136464:22)
    at anonymous (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:136479:27)
    at NativeStackNavigator (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:131541:18)
    at anonymous (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:141420:38)
    at QueryClientProvider (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:232574:23)
    at ThemeProvider (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:184582:38)
    at RCTView
    at View (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:40428:43)
    at Portal.Host (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:194311:36)
    at RCTView
    at View (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:40428:43)
    at SafeAreaProviderCompat (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:194596:25)
    at PaperProvider (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:186971:37)
    at ThemeProvider (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:183479:19)
    at RootLayoutNav (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:248444:55)
    at Provider (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:212587:50)
    at RootLayout (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:248415:44)
    at Try (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:145547:36)
    at Route (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:141484:24)
    at Route() (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:141790:24)
    at RNCSafeAreaProvider
    at SafeAreaProvider (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:139254:24)
    at RCTView
    at View (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:40428:43)
    at GestureHandlerRootView
    at GestureHandlerRootView
    at wrapper (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:152325:27)
    at EnsureSingleNavigator (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:133572:24)
    at BaseNavigationContainer (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:132165:28)
    at ThemeProvider (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:137777:21)
    at NavigationContainerInner (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:152648:26)
    at ContextNavigator (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:152345:24)
    at ExpoRoot (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:152316:30)
    at App
    at withDevTools(App) (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:130808:27)
    at ErrorToastContainer (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:130709:24)
    at ErrorOverlay
    at RCTView
    at View (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:40428:43)
    at RCTView
    at View (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:40428:43)
    at AppContainer (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:40285:36)
    at main(RootComponent) (http://192.168.0.68:8081/node_modules/expo-router/entry.bundle//&platform=ios&dev=true&hot=false&lazy=true:121126:28)

package.json

{
  "name": "bbb-mobile",
  "version": "1.0.0",
  "main": "expo-router/entry",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "web": "expo start --web"
  },
  "dependencies": {
    "@react-native-async-storage/async-storage": "1.18.2",
    "@react-navigation/native": "^6.1.7",
    "@react-navigation/native-stack": "^6.9.13",
    "@shopify/restyle": "^2.4.2",
    "@supabase/supabase-js": "^2.31.0",
    "@tanstack/react-query": "^4.32.6",
    "expo": "~49.0.5",
    "expo-constants": "~14.4.2",
    "expo-font": "^11.4.0",
    "expo-linking": "~5.0.2",
    "expo-router": "2.0.0",
    "expo-secure-store": "~12.3.1",
    "expo-status-bar": "~1.6.0",
    "expo-updates": "~0.18.11",
    "expo-web-browser": "~12.3.2",
    "react": "18.2.0",
    "react-hook-form": "^7.45.4",
    "react-native": "0.72.3",
    "react-native-elements": "^3.4.3",
    "react-native-gesture-handler": "~2.12.0",
    "react-native-paper": "^5.10.1",
    "react-native-reanimated": "~3.3.0",
    "react-native-safe-area-context": "4.6.3",
    "react-native-screens": "~3.22.0",
    "react-native-url-polyfill": "^2.0.0",
    "react-native-vector-icons": "^10.0.0",
    "react-native-maps": "1.7.1",
    "expo-dev-client": "~2.4.6",
    "expo-location": "~16.1.0"
  },
  "devDependencies": {
    "@babel/core": "^7.20.0",
    "@types/react": "~18.2.14",
    "typescript": "^5.1.3"
  },
  "private": true
}

eas.json

{
  "cli": {
    "version": ">= 4.1.2"
  },
  "build": {
    "development": {
      "developmentClient": true,
      "distribution": "internal",
      "channel": "development",
      "ios": {
        "resourceClass": "m-medium"
      }
    },
    "preview": {
      "distribution": "internal",
      "channel": "preview"
    },
    "development-simulator": {
      "developmentClient": true,
      "distribution": "internal",
      "channel": "development-simulator",
      "ios": {
        "simulator": true,
        "resourceClass": "m-medium"
      }
    },
    "production": {
      "channel": "production"
    }
  },
  "submit": {
    "production": {}
  }
}

Deleted node_modules, package-lock.json, and ran yarn install. It turns out, I was using environment variables in my app.config.ts file. I added these environment variables on my expo.dev project online, and made another development-simulator build to fix the issue.

This topic was automatically closed 20 days after the last reply. New replies are no longer allowed.