expo-module

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

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

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 type system for Swift and Kotlin. - Configuration & Autolinking: Explains expo-module.config.json fields, config plugins for Info.plist and AndroidManifest.xml, and AppDelegate/Activity lifecycle subscribers. - Use Case: When adding a key-value store backed by native platform APIs to an Expo app, scaffold the module, implement Swift and Kotlin functions, and register it via autolinking without manual native project edits. ## Quick Start Ask the assistant to scaffold a new Expo native module with create-expo-module and implement a Swift and Kotlin function exposed to TypeScript.

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?

Use npx create-expo-module with an explicit slug, choosing --local for app-specific modules or a standalone package for reusable ones. Pass --platform and --features to control generated platforms and example code, then replace the scaffold 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 from the module root, passing --platform in non-interactive mode. It only adds platforms missing from expo-module.config.json and refuses to overwrite existing android or ios directories.

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, dependencies, build scripts, and usually an example app, suiting reuse or npm publishing.

Does Expo autolinking require manual native project configuration?

No. Expo autolinking discovers modules with an expo-module.config.json file automatically. Standalone modules resolve from dependencies, and local modules resolve from the modules directory or the configured nativeModulesDir.

When should I not use this skill for Expo modules?

Do not use it to migrate an existing Swift module from the definition DSL to the Expo Modules API 2.0 macros. Use the expo-migrate-module skill from the expo-experiments plugin for that migration instead.