← ClaudeAtlas

expo-config-pluginslisted

Add native functionality to an Expo app via config plugins, never by ejecting. Pick existing Expo modules first, write a custom plugin only when none fits. Document everything in app.config.ts.
voidcorp-core/void-harness · ★ 0 · Code & Development · score 76
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