This repository is a collection of assorted Expo config plugins for configuring the npx expo prebuild
command. It is meant to be a temporary home for packages that don't have a built-in Config Plugin.
-
We prefer packages to ship their own Expo config plugin. This helps ensure that plugin and package versions are always aligned, and that new features are made available in both the package and plugin simultaneously. If packages haven't adopted config plugins yet, the community can add a package here as a temporary home.
-
All packages here are community maintained. They are not maintained by Expo. Feel free to improve docs, packages, tests, etc.
-
We maintain a one-to-one mapping between native packages and
@config-plugins/*
. This means there should be no general utility packages here — those are better suited for a different repository or npm namespace.
These days, most React Native libraries have a built-in Config Plugin if needed. The following are some examples of libraries that have a built-in Config Plugin — this is far from an exhaustive list, but if you're looking to learn from existing packages, this is a good place to start.
- React Native Firebase (
@react-native-firebase/perf
,@react-native-firebase/app
,@react-native-firebase/crashlytics
) - react-native-google-cast
- react-native-nfc-manager
- react-native-health
- @react-native-mapbox-gl/maps
- @logrocket/react-native
- @sentry/react-native
- @leanplum/react-native-sdk
- react-native-fbsdk-next
- @stripe/stripe-react-native
- @react-native-voice/voice
- react-native-imglysdk
- @viro-community/react-viro -- Guide
- react-native-msal
- react-native-spotlight-search
- newrelic-react-native-agent
- react-native-videoeditorsdk
- notifee
- App Clips
- iOS Safari Extensions
- react-native-ble-plx
- ... and many more
In some cases, libraries will ship plugins as separate packages. For example:
- onesignal-expo-plugin (for use with
react-native-onesignal
)- Configures iOS Notification Service Extensions for rich push notification and custom notification actions.
- @lyrahealth-inc/react-native-orientation-plugin (for use with
react-native-orientation-plugin
) - airship-expo-plugin (for use with
urbanairship-react-native
) - config-plugin-react-native-intercom (for use with
intercom-react-native
) - @allboatsrise/expo-marketingcloudsdk (for use with
react-native-marketingcloudsdk
) - @ouvio/react-native-background-location-plugin (for use with
react-native-background-location-plugin
) - expo-community-flipper (for use with Flipper)
- expo-appcenter (for use with
appcenter
) - expo-react-native-freshchat (for use with
react-native-freshchat-sdk
) - react-native-keyevent-expo-config-plugin (for use with
react-native-keyevent
) - watermelondb-expo-plugin (for use with
@nozbe/watermelondb
) - ... and many more
Just install and rebuild! If a package doesn't require any futher setup then it most likely doesn't need an Expo config plugin. Most packages work without a config plugin (including packages not listed below):
- react-native-share
- @react-native-menu/menu
- react-native-blurhash
- react-native-app-shortcuts
- react-native-multiple-image-picker
@shopify/flash-list
- ... and many more
See the contributing guide.