Organizing Files and Folders in a React Project

1. Create a Logical Root Structure

A React project typically starts with a basic folder structure generated by tools like create-react-app, Vite, or custom setups. A good starting structure might look like this

src/
  components/
  pages/
  assets/
  services/
  hooks/
  utils/
  styles/
  App.js
  index.js

Let’s break down the purpose of each folder:

  • components/: Reusable, small, or generic React components.
  • pages/: Page-level components representing distinct views or routes.
  • assets/: Static files like images, fonts, or videos.
  • services/: API calls or business logic.
  • hooks/: Custom React hooks.
  • utils/: Helper functions or utilities.
  • styles/: Global or shared stylesheets.

 

Organizing Files and Folders in a React Project

When building a React application, a well-organized file and folder structure can significantly enhance maintainability, scalability, and collaboration among developers. As React projects grow, it becomes crucial to establish a consistent structure to keep your code clean and manageable.

This article explores best practices for organizing files and folders in a React project.

1. Create a Logical Root Structure

A React project typically starts with a basic folder structure generated by tools like create-react-app, Vite, or custom setups. A good starting structure might look like this:


 

css

Copy code

src/ components/ pages/ assets/ services/ hooks/ utils/ styles/ App.js index.js

Let’s break down the purpose of each folder:

  • components/: Reusable, small, or generic React components.
  • pages/: Page-level components representing distinct views or routes.
  • assets/: Static files like images, fonts, or videos.
  • services/: API calls or business logic.
  • hooks/: Custom React hooks.
  • utils/: Helper functions or utilities.
  • styles/: Global or shared stylesheets.

2. Group Related Files

Instead of scattering related files across multiple folders, consider grouping them together. For example:


 

css

Copy code

src/ components/ Button/ Button.js Button.css Button.test.js Navbar/ Navbar.js Navbar.css Navbar.test.js pages/ Home/ Home.js Home.css Home.test.js About/ About.js About.css

This structure is called colocation and helps keep related code in one place, making it easier to maintain and navigate.

3. Use Feature-Based Organization for Larger Projects

In large-scale projects, organizing by features can be more effective than the traditional folder
 

src/
  features/
    auth/
      components/
      hooks/
      services/
      AuthPage.js
      authSlice.js
    dashboard/
      components/
      hooks/
      services/
      DashboardPage.js
      dashboardSlice.js
  shared/
    components/
    hooks/
    utils/
  App.js
  index.js

Consistent Naming Conventions

Consistency in naming is critical. Follow these conventions for clarity:

  • Use PascalCase for component and file names: Button.js, Navbar.js.
  • Use camelCase for hooks and utility functions: useFetch.js, formatDate.js.
  • Use kebab-case for CSS and static files: button.css, logo.png.

Up Next
    Ebook Download
    View all
    Learn
    View all