expo-module

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

Updated Sep 13, 2026
One-click install
npx skills add https://github.com/aadilmallick/myfitness-pal-clone --skill expo-module-aadilmallick
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: expo-module
Source: https://github.com/aadilmallick/myfitness-pal-clone/tree/main/.agents/skills/expo-module
Command: npx skills add https://github.com/aadilmallick/myfitness-pal-clone --skill expo-module-aadilmallick

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. This Skill provides the complete Expo Modules API workflow so you can scaffold, implement, and register native modules and views correctly. ## 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 Module DSL Reference: 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, view lifecycle hooks, AppDelegate subscribers, Android lifecycle listeners, and config plugins that modify Info.plist and AndroidManifest.xml. - Use Case: You need to wrap a platform SDK (e.g., a key-value store or sensor API) for your React Native app. Use this Skill to scaffold the module, implement the Swift and Kotlin definitions, and register it via expo-module.config.json for autolinking. ## Quick Start Use the expo-module skill to scaffold a new local Expo native module with a function and async function for iOS and Android.

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 apple android and --features like Function or AsyncFunction to generate starter code, then replace the examples with your real implementation.

How do I add a native view to an Expo module?

Define a View block in the module definition referencing an ExpoView subclass, then register Prop setters and Events inside it. On the TypeScript side, use requireNativeView to render it as a React component and dispatch events via EventDispatcher.

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. You just install the package and run pod install.

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

Run npx create-expo-module add-platform-support --platform android 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 Function and AsyncFunction in Expo modules?

Function runs synchronously and blocks the JS thread until completion, supporting up to 8 arguments. AsyncFunction returns a Promise and runs on a background thread by default, with an option to force main-queue execution via runOnQueue(.main).

When should I not use this skill for Expo module work?

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. That migration is handled by the separate expo-migrate-module skill from the expo-experiments plugin.