Expo Guide
How to set up Tamagui with Expo
Set up Tamagui in an Expo project that targets iOS, Android, and web.
Install
To support dark mode, update your app.json to app.config.ts and set
userInterfaceStyle to "automatic".
Native
Create a new Expo project:
yarn
npm
bun
pnpm
This guide assumes Expo is configured with TypeScript support.
The following steps enable the optimizing compiler while preserving your existing Expo Babel configuration.
Add @tamagui/cli, which carries the Metro plugin along with the CLI and the
other bundler integrations:
yarn
npm
bun
pnpm
If Metro is the only bundler this project will ever use, yarn add @tamagui/metro-plugin on its own is a smaller install and exports exactly the
same things.
Wrap the Expo Metro config with withTamagui. If you have a tamagui.build.ts
(recommended; see
compiler install docs),
no options are needed. Otherwise, pass them inline:
metro.config.js
If you’re using a monorepo, see the Metro guide.
Expo Router / Web
- First, follow the Metro guide to enable web support.
Add @tamagui/config and tamagui to your package.json and install them. Then create a tamagui.config.ts:
tamagui.config.ts
Then update app/_layout.tsx:
app/_layout.tsx
Setup Tamagui
From here on out you can follow the Installation and Configuration docs.
Loading fonts
Install the expo-font package:
yarn
npm
bun
pnpm
Load your fonts so React Native can recognize them. There are several ways to do this:
Tamagui
Expo Google Fonts
Use the @tamagui/font-inter package, a pre-configured version of the Inter font that works with Tamagui:
Import the useFonts hook and load the fonts:
App.tsx
For more information on loading fonts in Expo, see the Expo documentation.
First time starting Expo
The first time running your project with Tamagui, be sure to clear the cache:
yarn
npm
bun
pnpm
Your package.json scripts should look something like this:
package.json