expo-config-pluginslisted
Install: claude install-skill voidcorp-core/void-harness
# expo-config-plugins
Use when an Expo app needs functionality not available in JS — push notifications, camera, haptics, secure storage, or any native iOS/Android API. The Expo way: config plugins + Expo Modules. Ejecting to bare React Native is a one-way door — almost never the right answer.
## The decision tree
```
1. Is there an `expo-X` package on npm? → use it (e.g., expo-camera, expo-haptics)
2. Is there a community config plugin? → use it (search "expo-plugin" + your need)
3. Does it just need a Podfile / Manifest tweak? → write a custom config plugin (~30 lines)
4. Does it need new Swift/Kotlin code? → write an Expo Module
5. Truly nothing fits? → reconsider the requirement; ejecting last resort
```
Most teams hit (1) for 80% of needs and never go past (3).
## What a config plugin is
A function that mutates the native iOS/Android project files at build time. It does not run in the app — it runs in EAS Build / `expo prebuild`.
```ts
// app.config.ts
import { ConfigContext, ExpoConfig } from 'expo/config';
export default ({ config }: ConfigContext): ExpoConfig => ({
...config,
name: 'Solaar',
slug: 'solaar',
plugins: [
'expo-router',
'expo-secure-store',
[
'expo-build-properties',
{
ios: { deploymentTarget: '15.1', useFrameworks: 'static' },
android: { compileSdkVersion: 34, targetSdkVersion: 34 },
},
],
'./plugins/my-custom-plugin', // local