expo-module

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

Updated Mar 27, 2026
One-click install
npx skills add https://github.com/gmackie/agent-skills --skill expo-module-gmackie
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: expo-module
Source: https://github.com/gmackie/agent-skills/tree/main/skills/expo-module
Command: npx skills add https://github.com/gmackie/agent-skills --skill expo-module-gmackie

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, which is error-prone without a structured reference for the Expo Modules API. ## 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 extending existing modules. - Native Module DSL Reference: Covers Name, Function, AsyncFunction, Property, Constant, Events, the type system (Records, Enums, Either types), and Shared Objects in both Swift and Kotlin. - Native Views, Lifecycle, and Config Plugins: Documents View and Prop definitions, EventDispatcher, AppDelegate subscribers, Android lifecycle listeners, expo-module.config.json autolinking, and config plugins that modify Info.plist and AndroidManifest.xml. - Use Case: When adding a key-value store backed by platform APIs to an Expo app, scaffold a local module with Function and AsyncFunction features, implement the Swift and Kotlin definitions, and expose typed TypeScript bindings. ## Quick Start Use the expo-module skill to scaffold a new local Expo native module with Swift and Kotlin support and implement its first async function.

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 native module for an Expo app?▼

Use 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 such as 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?▼

Run 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 host app's tooling, and skip dependency installation and example apps. Standalone modules have their own package.json, install dependencies, build TypeScript during scaffolding, and usually include an example app for testing.

Does Expo autolinking require manual native project configuration?▼

No. Expo autolinking discovers modules that include an expo-module.config.json file, so installing via npm and running pod install is sufficient. Local modules are resolved from the modules directory or the configured nativeModulesDir.

When should I not use the 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 such as @ExpoModule and @JS. For that migration, use the expo-migrate-module skill from the expo-experiments plugin instead.