xref: /expo/docs/pages/guides/using-flipper.mdx (revision 7b7829a6)
1---
2title: Use Flipper
3description: A guide on installing and configuring Flipper for debugging an Expo project.
4---
5
6import { Terminal } from '~/ui/components/Snippet';
7import ImageSpotlight from '~/components/plugins/ImageSpotlight';
8import { Collapsible } from '~/ui/components/Collapsible';
9import { Step } from '~/ui/components/Step';
10
11> **Warning** React Native no longer recommends Flipper ([RFC0641](https://github.com/react-native-community/discussions-and-proposals/blob/main/proposals/0641-decoupling-flipper-from-react-native-core.md)). Features from Flipper, such as React Developer Tools and the network inspector, are available directly through Expo CLI in SDK 49 and greater. [Learn more](/debugging/tools.mdx).
12
13[Flipper](https://fbflipper.com/) is a platform tool for debugging React Native projects on an emulator/simulator or a physical device. It supports projects running on Android and iOS and is available as a desktop application on macOS, Windows, and Linux.
14
15It offers various features such as a device log viewer, interactive native layout inspector, network inspector, local database inspector, crash reporter, and more. You can add more plugins available in the Flipper desktop app.
16
17## Prerequisites
18
19Before you get started, make sure you have the following installed on your computer:
20
21- [Flipper desktop app](https://fbflipper.com/)
22- [EAS CLI installed](/build/setup/#1-install-the-latest-eas-cli) and [logged in](/build/setup/#2-log-in-to-your-expo-account) to your Expo account
23- Debugging your Expo projects with Flipper requires creating a [development build](/develop/development-builds/introduction/) of your project
24
25<Step label="1">
26
27## Run setup doctor
28
29Open the Flipper desktop app and click the **Setup Doctor** button from the bottom left menu.
30
31<ImageSpotlight
32  alt="Setup Doctor modal in Flipper."
33  src="/static/images/using-flipper/setup-doctor.jpg"
34  style={{ maxWidth: 720 }}
35/>
36
37If any dependencies are missing, follow the instructions provided by Flipper to install them.
38
39</Step>
40
41<Step label="2">
42
43## Install `expo-dev-client`
44
45Since Flipper requires native code, you'll need to create a development build. To set it up, install the `expo-dev-client` library:
46
47<Terminal cmd={['$ npx expo install expo-dev-client']} />
48
49</Step>
50
51<Step label="3">
52
53## Add `expo-build-properties`
54
55The Expo SDK uses the bundled version of Flipper from `react-native`. For Android, Flipper is enabled by default.
56
57For iOS, you need to install [`expo-build-properties`](/versions/latest/sdk/build-properties) and enable Flipper in the plugin configuration:
58
59<Terminal cmd={['$ npx expo install expo-build-properties']} />
60
61Installing the package adds the `expo-build-properties` plugin to your project's **app.json**. To enable Flipper, add the [`ios.flipper`](/versions/latest/sdk/build-properties/#pluginconfigtypeios--properties) property and set it to `true` in the plugin configuration:
62
63```json app.json
64{
65  "plugins": [
66    [
67      "expo-build-properties",
68      {
69        "ios": {
70          "flipper": true
71        }
72      }
73    ]
74  ]
75}
76```
77
78<Collapsible summary="Using SDK 47 or lower?">
79
80> The above configuration only works with SDK 48 or above. For SDK 47 and lower, use the following steps described:
81
82The [`expo-community-flipper`](https://github.com/jakobo/expo-community-flipper#expo-community-flipper) plugin depends on the `react-native-flipper` library. Run the following command to install both of them:
83
84<Terminal cmd={['$ npx expo install expo-community-flipper react-native-flipper']} />
85
86Then, in the **app.json**, add `expo-community-flipper` to the `plugins` array:
87
88```json app.json
89{
90  "plugins": ["expo-community-flipper"]
91}
92```
93
94</Collapsible>
95
96</Step>
97
98<Step label="4">
99
100## Configure and install a development build
101
102To configure and install a development build, follow the instructions below:
103
104- [Android Emulator or iOS Simulator](/develop/development-builds/create-a-build/#create-a-development-build-for-emulatorsimulator)
105- [Physical device](/develop/development-builds/create-a-build/#create-a-development-build-for-the-device)
106
107</Step>
108
109<Step label="5">
110
111## Run the development server
112
113After installing the build, run the following command to start a development server:
114
115<Terminal
116  cmd={[
117    '# For SDK 49 and higher',
118    '$ npx expo start',
119    '',
120    '# For SDK 48 and lower',
121    '$ npx expo start --dev-client',
122  ]}
123  cmdCopy="npx expo start"
124/>
125
126Once the development server is running, open the Flipper desktop app and select your device or simulator under **App Inspect**:
127
128<ImageSpotlight
129  alt="Open a device or emulator/simulator in Flipper under App Inspect."
130  src="/static/images/using-flipper/app-inspect.jpg"
131  style={{ maxWidth: 720 }}
132/>
133
134</Step>
135
136## Limitations
137
138If a third-party library uses `"useFrameworks": "static"` for iOS in your project, integrating Flipper will not work since it is incompatible. For more information, see the [notice on the compatibility issue](https://github.com/jakobo/expo-community-flipper/issues/27) in the `expo-community-flipper` GitHub repository.
139
140## More
141
142To learn more about the tool, see [React Native support in Flipper](https://fbflipper.com/docs/features/react-native/) documentation.
143