Skip to content

feat: add Expo config plugin - #709

Merged
jokerttu merged 5 commits into
mainfrom
expo-config-plugin
Nov 6, 2026
Merged

jokerttu merged 5 commits into
mainfrom
expo-config-plugin

Conversation

@jokerttu

@jokerttu jokerttu commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Adds an Expo config plugin, so Expo apps that generate their native projects with npx expo prebuild get the native setup the Navigation SDK needs, and an EXPO.md setup guide linked from the README. It builds on @kota113's work in #577, whose commit is kept with their authorship.

The plugin:

  • iOS: adds import GoogleMaps to AppDelegate.swift and passes the Info.plist GMSApiKey value, which Expo writes from ios.config.googleMapsApiKey, to GMSServices.provideAPIKey at launch.
  • Android: enables Jetifier and core library desugaring (desugar_jdk_libs_nio:2.1.5). The API key comes from Expo's android.config.googleMaps.apiKey.
  • Fails npx expo prebuild with a clear error when an API key is missing or AppDelegate.swift cannot be updated. Reading the app config never fails, so native builds work without the key environment variables.

The plugin's file changes are unit-tested with Node's built-in test runner (yarn test), which CI's test job now runs.

Verified by following EXPO.md in a new create-expo-app default-template app (Expo SDK 58, React Native 0.88.1, expo-router 58.0.30):

  • npx expo prebuild --clean, npx expo run:ios (iPhone 16 simulator, iOS 18.6), and npx expo run:android (emulator) succeed. On both platforms the map renders and init() returns ok.
  • On iOS, onLocationChanged reports a simulated location, setDestinations returns OK, and guidance follows the simulated route. This route flow was not run on Android.

Fixes #576

When squash-merging, keep @kota113's credit by adding this line to the commit body:

Co-authored-by: kota113 <kota113@keio.jp>

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I signed the CLA.
  • I listed at least one issue that this PR fixes in the description above.
  • I updated/added relevant documentation
  • I added new tests to check the change I am making
  • All existing and new tests are passing.

@illuminati1911 illuminati1911 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@jokerttu
jokerttu merged commit 1ce1b2f into main Nov 6, 2026
18 checks passed
@jokerttu
jokerttu deleted the expo-config-plugin branch November 6, 2026 05:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature request]: Expo plugins

4 participants