When you initialize an Expo React Native app, it follows a specific folder structure to help you organize your code and assets efficiently. Here's the usual folder structure you'll find in an Expo React Native project:
your-project/
βββ App.tsx // Entry point of the app
βββ app.json // Configuration file for Expo
βββ assets/ // Directory for static assets like images, fonts, etc.
β βββ fonts/ // Place your custom fonts here
β βββ images/ // Store images here
βββ components/ // Reusable components go here
βββ constants/ // Store constant values or configuration settings here
βββ navigation/ // Navigation-related files (e.g., React Navigation)
βββ screens/ // Individual screens of your app
βββ services/ // Services, utilities, and API calls
βββ store/ // State management (Redux, MobX) goes here
βββ theme/ // Styling, theming-related files
βββ App.test.tsx // Tests (if you add any)
βββ package.json // Project dependencies and scripts
βββ node_modules/ // Installed npm packages (automatically generated)
Here's a brief explanation of each folder:
-
App.tsx: This file is the entry point of your Expo React Native app, and it's where you'll start building your app's UI and components. -
app.json: The configuration file for your Expo project, where you can specify various settings like app name, version, permissions, icons, etc. -
assets/: This directory is for storing static assets like images, fonts, and other media files used in your app. -
components/: You can create reusable components here that can be used across different screens. -
constants/: Store any constant values or configuration settings here to keep them organized. -
navigation/: If you're using a navigation library (e.g., React Navigation), you can place your navigation-related files here. -
screens/: This folder contains individual screens of your app, each representing a different screen or page. -
services/: This directory is typically used for handling API calls, utility functions, and other services. -
store/: If you're using state management like Redux or MobX, you can place the relevant files here. -
theme/: In case you have theming or styling-related files, you can keep them here. -
App.test.tsx: If you're writing tests for your app, you can store them in this file. -
package.json: This file contains project dependencies, scripts, and other metadata about your project. -
node_modules/: This folder is automatically generated when you install npm packages, and it contains the installed dependencies.
Remember that this is a common folder structure, and you can customize it to fit your specific project requirements and preferences. As you build your app, you may create additional folders or subdirectories to organize your code better.