xref: /expo/docs/pages/modules/get-started.mdx (revision 4adc41ee)
1---
2title: 'Expo Modules API: Get started'
3sidebar_title: Get started
4description: Learn about getting started with Expo modules API.
5---
6
7import { BoxLink } from '~/ui/components/BoxLink';
8import { Terminal } from '~/ui/components/Snippet';
9
10There are two ways to get started with the Expo Module API: you can either initialize a new module from scratch or add the Expo Module API to an existing module. This guide will walk you through creating a new module from scratch, and the [Integrating in an existing library guide](/modules/existing-library) covers the latter case.
11
12## 1. Creating a new module
13
14To create a new Expo module from scratch, run the `create-expo-module` script as shown below.
15The script will ask you a few questions and then generate the native Expo module along with the example app for Android and iOS that uses your new module.
16
17<Terminal cmd={[`$ npx create-expo-module my-module`]} />
18
19## 2. Running the example project
20
21Navigate to the module directory and then open the Android and/or iOS example project by running the following commands:
22
23<Terminal cmd={[`$ cd my-module`, `$ npm run open:android`, `$ npm run open:ios`]} />
24
25Now, you can run the example project on your device or simulator/emulator. When the project compiles and runs, you will see "Hello world! ��" on the screen.
26
27> **Note:** If you're using Windows, you can open the example project by opening the **android** directory in Android Studio, but you cannot open the iOS project files.
28
29## 3. Making a change
30
31### Android
32
33Open up **MyModuleModule.kt** in Android Studio (<kbd>⌘ Cmd</kbd> + <kbd>O</kbd> or <kbd>Ctrl</kbd> + <kbd>O</kbd> and search for **MyModuleModule.kt**). Change the `hello` method to return a different string. For example, you can change it to return `"Hello world! ����"`. Rebuild the app and you should see your change.
34
35### iOS
36
37Open up **MyModuleModule.swift** in Xcode (<kbd>⌘ Cmd</kbd> + <kbd>O</kbd> or <kbd>Ctrl</kbd> + <kbd>O</kbd> and search for **MyModuleModule.swift**). Change the `hello` method to return a different string. For example, you can change it to return `"Hello world! ����"`. Rebuild the app and you should see your change.
38
39## Next steps
40
41Now that you've learned how to initialize a module and make simple changes to it, you can continue to a tutorial or dive right into the API reference.
42
43<BoxLink
44  title="Creating your first native module"
45  description="Create a simple, but complete, native module to interact with Android and iOS preferences APIs."
46  href="/modules/native-module-tutorial"
47/>
48
49<BoxLink
50  title="Module API Reference"
51  description="Outline for the Expo Module API and common patterns like sending events from native code to JavaScript."
52  href="/modules/module-api"
53/>
54