expo-module

Create native Expo modules and views in Swift, Kotlin, and TypeScript using the Expo Modules API.

16|1|Updated May 5, 2026
One-click install
npx skills add https://github.com/AIBiz-Automatyzacje/workspace-template-mobile --skill expo-module-aibiz-automatyzacje
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: expo-module
Source: https://github.com/AIBiz-Automatyzacje/workspace-template-mobile/tree/main/.claude/skills/expo-module
Command: npx skills add https://github.com/AIBiz-Automatyzacje/workspace-template-mobile --skill expo-module-aibiz-automatyzacje

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Building native functionality for Expo apps requires bridging Swift, Kotlin, and TypeScript with correct scaffolding, autolinking configuration, and lifecycle wiring, which is error-prone when done manually. This Skill provides the complete reference and workflow for writing native modules and views with the Expo Modules API. ## Core Features & Use Cases - Module Scaffolding: Guides create-expo-module usage for local and standalone modules, platform selection, feature examples, and add-platform-support for extending existing modules. - Module Definition DSL: Covers Name, Function, AsyncFunction, Property, Constant, Events, Records, Enums, Either types, and Shared Objects in both Swift and Kotlin. - Native Views & Config Plugins: Documents View/Prop/EventDispatcher patterns, view lifecycle hooks, AppDelegate subscribers, Android lifecycle listeners, and config plugins that modify Info.plist and AndroidManifest.xml. - Use Case: Wrap a platform SDK (e.g., a Bluetooth sensor library) as an Expo module with async functions and events, then expose it to React Native through typed TypeScript bindings. ## Quick Start Ask the assistant to scaffold a new local Expo module named key-value-store with apple and android platforms and Function and AsyncFunction features, then implement the native code.

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 in Expo?

Run npx create-expo-module with an explicit slug, choosing --local for app-specific modules or a standalone package for reuse. Select platforms with --platform (apple, android, web) and feature examples with --features, then replace the generated example code with your real implementation.

How do I write Swift and Kotlin functions callable from React Native?

Define them in the module definition DSL using Function for synchronous calls or AsyncFunction for Promise-based calls running on a background thread. In Kotlin, AsyncFunction supports coroutines via the Coroutine block, and you can force main-queue execution with .runOnQueue(.main) in Swift.

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 any module containing an expo-module.config.json file, resolving standalone modules from dependencies and local modules from the modules directory or nativeModulesDir. Just install via npm and run pod install for iOS.

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.

When should I not use the Expo Modules API DSL?

The add-platform-support command does not support older module formats that predate the Expo Modules API DSL. For migrating an existing Swift module from the definition DSL to Expo Modules API 2.0 macros, use the separate expo-migrate-module skill from the expo-experiments plugin instead.