Créer votre premier projet Expo
Utilisez `npx create-expo-app` pour créer la structure d’un nouveau projet, explorez les fichiers générés et comprenez le point d’entrée d’une application React Native.
Créer votre premier projet Expo est une leçon React Native Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage React Native Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours React Native Academy comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
The create-expo-app Command
The easiest start is npx create-expo-app MyApp. It grabs the latest template, sets up folders, and installs everything. Add a template flag to start blank or with navigation.
# Create a new Expo project
npx create-expo-app MyFirstApp
# Create with a blank TypeScript template
npx create-expo-app MyFirstApp --template blank-typescript
# Create with tabs navigation template
npx create-expo-app MyFirstApp --template tabs
# Move into the project
cd MyFirstAppGenerated Folder Structure Overview
Get to know your new folders. App.js is the entry point React renders first, app.json holds your config, and assets/ stores images and fonts. The code maps it all out.
MyFirstApp/
├── App.js # Root component (entry point)
├── app.json # Expo configuration
├── package.json # NPM dependencies & scripts
├── babel.config.js # Babel transpiler config
├── assets/ # Images, fonts, icons
│ ├── icon.png
│ ├── splash.png
│ └── adaptive-icon.png
└── node_modules/ # Installed packagesThe app.json Configuration File
app.json is your project's config hub — app name, version, icons, splash screen, and per-platform settings for iOS and Android. Changing it needs a rebuild, not a hot reload.
{
'expo': {
'name': 'My First App',
'slug': 'my-first-app',
'version': '1.0.0',
'orientation': 'portrait',
'icon': './assets/icon.png',
'splash': {
'image': './assets/splash.png',
'resizeMode': 'contain',
'backgroundColor': '#ffffff'
},
'ios': {
'bundleIdentifier': 'com.yourname.myfirstapp'
},
'android': {
'package': 'com.yourname.myfirstapp'
}
}
}The package.json and Scripts
package.json lists your dependencies and scripts. The defaults — start, ios, android, web — launch your app in different places. You can add your own scripts too.
// package.json (excerpt)
{
'name': 'my-first-app',
'version': '1.0.0',
'main': 'node_modules/expo/AppEntry.js',
'scripts': {
'start': 'expo start',
'android': 'expo start --android',
'ios': 'expo start --ios',
'web': 'expo start --web'
},
'dependencies': {
'expo': '~50.0.0',
'react': '18.2.0',
'react-native': '0.73.x'
}
}Understanding App.js — The Root Component
App.js exports the root component React Native renders first — every other component lives inside it. It's the first file you'll edit, like index.html in a web project.
import { StatusBar } from 'expo-status-bar';
import { StyleSheet, Text, View } from 'react-native';
export default function App() {
return (
<View style={styles.container}>
<Text>Open up App.js to start working!</Text>
<StatusBar style='auto' />
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
});JSX: Describing UI in JavaScript
JSX lets you write HTML-like markup inside JavaScript to describe your UI. It's not HTML though — use style instead of class, onPress instead of onclick. The code shows it.
import { View, Text } from 'react-native';
const name = 'World';
const count = 42;
export default function App() {
return (
<View>
{/* This is a JSX comment */}
<Text>Hello, {name}!</Text>
<Text>You have {count} messages.</Text>
{count > 0 && <Text>You have unread items.</Text>}
</View>
);
}Babel and Transpilation
Expo uses Babel to translate modern JavaScript and JSX into code each platform can run. You rarely touch its config — mainly to add handy path aliases like @/components.
// babel.config.js (default Expo config)
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
plugins: [
// Example: add module resolver for clean imports
[
'module-resolver',
{
root: ['./'],
alias: {
'@components': './components',
'@screens': './screens',
},
},
],
],
};
};Installing Additional Dependencies
To add packages, prefer npx expo install over npm install — it picks the version that matches your Expo SDK, avoiding subtle mismatch bugs. Plain npm is fine for pure-JS packages.
# Use expo install for SDK-compatible packages
npx expo install expo-camera expo-location
npx expo install react-native-maps
# Use npm install for pure JS packages
npm install lodash date-fns
# Check for outdated Expo SDK packages
npx expo install --check
# Fix version mismatches
npx expo install --fixMaking Your First Code Change
Open App.js, change the text, and save — Fast Refresh updates your app in under a second while keeping its state. Try tweaking a color to see instant feedback. ✨
// Modified App.js
import { StyleSheet, Text, View } from 'react-native';
export default function App() {
return (
<View style={styles.container}>
<Text style={styles.title}>Hello, React Native!</Text>
<Text style={styles.subtitle}>I made my first change.</Text>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#f0f4ff',
alignItems: 'center',
justifyContent: 'center',
},
title: { fontSize: 24, fontWeight: 'bold', color: '#333' },
subtitle: { fontSize: 16, color: '#666', marginTop: 8 },
});The Expo SDK and Managed Workflow
The Expo SDK gives you ready-made modules for camera, location, sensors, and more. In the managed workflow Expo handles native code for you — simpler, but limited to SDK APIs.
// Example: using Expo SDK modules
import * as Battery from 'expo-battery';
import * as Haptics from 'expo-haptics';
async function checkBattery() {
const level = await Battery.getBatteryLevelAsync();
console.log('Battery level:', level); // 0.0 - 1.0
}
async function vibrate() {
await Haptics.notificationAsync(
Haptics.NotificationFeedbackType.Success
);
}TypeScript Support in Expo
Expo has first-class TypeScript support. Start with the blank-typescript template, or rename App.js to App.tsx. TypeScript catches type errors early and sharpens autocomplete.
// App.tsx with TypeScript
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
interface Props {
greeting?: string;
}
export default function App({ greeting = 'Hello' }: Props) {
const message: string = greeting + ', TypeScript!';
return (
<View style={styles.container}>
<Text>{message}</Text>
</View>
);
}
const styles = StyleSheet.create({
container: { flex: 1, alignItems: 'center', justifyContent: 'center' },
});Quick Check
Test your understanding of React Native Mobile Development concepts from this lesson.
Lesson Recap
You scaffolded your first app: create-expo-app builds a full project instantly, app.json controls its settings, and Fast Refresh shows edits live. Next: running on devices! 🚀
Questions Fréquemment Posées
La leçon « Créer votre premier projet Expo » est-elle gratuite ?
Oui — le texte complet de « Créer votre premier projet Expo » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours React Native Academy, passe à CoddyKit PRO. Le cours React Native Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Créer votre premier projet Expo » ?
Utilisez `npx create-expo-app` pour créer la structure d’un nouveau projet, explorez les fichiers générés et comprenez le point d’entrée d’une application React Native. Tu pratiques React Native Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer React Native Academy ?
Aucune expérience préalable n'est requise. React Native Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Créer votre premier projet Expo » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon React Native Academy ?
Oui. Chaque leçon React Native Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Installer Node, Expo CLI et les simulateurs
- Créer votre premier projet Expo
- Exécuter l’application sur un appareil et un émulateur
- Comprendre la structure d’un projet