expo-modules
Installation
SKILL.md
Great module standards
- Design native APIs as if you contributing W3C specs for the browser, take inspiration from modern web modules. eg
std:kv-storage,clipboard. - Aim for 100% backwards compatibility like the web.
- Create escape hatches for single-platform functionality.
- Avoid extraneous abstractions. Directly expose native functionality.
- Avoid unnecessary async methods. Use sync methods when possible.
- Prefer string union types for API options instead of boolean flags, enums, or multiple parameters. eg instead of
capture(options: { isHighQuality: boolean }), usecapture(options: { quality: 'high' | 'medium' | 'low' }). - Marshalling is awesome for platform-specific APIs.
- New Architecture only. NEVER support legacy React Native architecture.
- ALWAYS use only Expo modules API.
- Prefer Swift and Kotlin.
- Use optionality for availability checks as opposed to extraneous
isAvailablefunctions or constants. egsnapshot.capture?.()instead ofsnapshot.isAvailable && snapshot.capture(). - ALWAYS support the latest and greatest API features.
Example of a GREAT Expo module:
import { NativeModule } from "expo";
Related skills