expo-module

Create Expo native modules and views using Swift, Kotlin, and TypeScript.

Updated Sep 8, 2026
One-click install
npx skills add https://github.com/bmiit145/leadBee --skill expo-module-bmiit145
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: expo-module
Source: https://github.com/bmiit145/leadBee/tree/main/mobile/.agents/skills/expo-module
Command: npx skills add https://github.com/bmiit145/leadBee --skill expo-module-bmiit145

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Building native functionality for Expo apps requires coordinating Swift, Kotlin, TypeScript, config plugins, and autolinking configuration across platforms, which is error-prone without a structured reference. ## Core Features & Use Cases - Module Scaffolding: Guides use of create-expo-module for local and standalone modules, including platform selection, feature examples, and add-platform-support for existing modules. - Native API Reference: Covers the module definition DSL (Name, Function, AsyncFunction, Property, Events), native views, shared objects, lifecycle hooks, and the full type system bridging Swift/Kotlin to JavaScript. - Config Plugins & Autolinking: Explains writing config plugins that modify Info.plist and AndroidManifest.xml, plus expo-module.config.json fields and autolinking resolution. - Use Case: When you need to wrap a platform SDK (camera, sensors, system APIs) for React Native, use this Skill to scaffold the module, implement the Swift and Kotlin definitions, and wire up TypeScript bindings. ## Quick Start Ask the assistant to scaffold a new local Expo module with a Function and AsyncFunction feature for both Apple and Android platforms.

Frequently Asked Questions about expo-module

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a new Expo native module?▼

Run npx create-expo-module with an explicit slug, choosing --local for app-specific modules or a standalone package for reuse. Pass --platform apple android and --features like Function or AsyncFunction to generate starter code, then replace the examples with your real implementation.

How do I add Android or iOS support to an existing Expo module?▼

Use npx create-expo-module add-platform-support with --platform android, apple, or web from the module root. It only adds platforms missing from expo-module.config.json, refuses to overwrite existing native directories, and works only with modules using the Expo Modules API DSL.

What is the difference between local and standalone Expo modules?▼

Local modules live inside one app, use the app's tooling, and skip dependency installation and example apps. Standalone modules have their own package.json, install dependencies, build TypeScript, and usually include an example app for testing and publishing to npm.

How do I send events from native code to JavaScript in Expo?▼

Declare events with Events("onChange") in the module definition, then call sendEvent from Swift or Kotlin with a payload dictionary. In JavaScript, subscribe with the useEvent hook or addListener, and use OnStartObserving and OnStopObserving to control event production.

When should I not use this Expo module skill?▼

Do not use it to migrate an existing Swift module from the definition DSL to the Expo Modules API 2.0 macros like @ExpoModule and @JS. For that migration, use the expo-migrate-module skill from the expo-experiments plugin instead.