Expo Config Plugin for setting up Google Maps in react-native-maps on iOS. Created specifically to support Continuous Native Generation (CNG) workflow.
Continuous Native Generation (CNG) is a process for building an Expo app where your native projects are generated on-demand from your app.json and package.json, similar to how your node_modules are generated from your package.json.
You can add the native project directories (android and ios) to your .gitignore and/or delete the project at any time, then re-generate them from the Expo app config with npx expo prebuild whenever required. You might never even run prebuild on your own development machine if you use a cloud-based development workflow.
Using CNG can make upgrading to new versions of React Native much easier. It can simplify project maintenance and facilitate setting up complex features such as App Clips, share extensions, and push notifications. This is all made possible with config plugins. Learn more about CNG.
The official react-native-maps installation requires manual modifications to native iOS files that get wiped out when using CNG (npx expo prebuild --clean
). This plugin automatically handles:
- Adding Google Maps pod to Podfile
- Adding location permission to Info.plist
- Initializing Google Maps in AppDelegate
Why this is better than tweaking the generated native files yourself:
Here's Expo documentation on why tweaking the files yourself is not a good idea: docs.expo.dev/workflow/overview/#what-if-i-want-to-edit-the.
In other words, it will do the react-native-maps
installation instructions for you every time, so you can keep enjoying CNG!
npm install react-native-maps react-native-maps-expo-plugin
- Add plugin to your app.json/app.config.js:
{
"plugins": [
[
"react-native-maps-expo-plugin",
{
"googleMapsApiKey": "YOUR_GOOGLE_MAPS_API_KEY"
}
]
]
}
- Generate native code and build:
# Generate native code
npx expo prebuild
# Build and run on iOS
npx expo run:ios
# Or if using CNG workflow, use --clean to safely regenerate native files
npx expo prebuild --clean
npx expo run:ios
- Expo SDK 50 or newer
- react-native-maps installed in your project
- Go to Google Cloud Console
- Create or select a project
- Enable Maps SDK for iOS
- Create credentials (API key)
- Add restrictions to the API key (recommended)
MIT