DEV Community

Cover image for No More ../../../ Import in React
Nilanth
Nilanth

Posted on Edited on

No More ../../../ Import in React

Steps to configure absolute Import in Create React App without any third-party packages.

Are you importing components like ../../../../somecomponents? Then you should update to Absolute imports. 

Benefits of Absolute Import

  1. You can move your existing code to other components with imports without any changes.
  2. You can easily identify that where the component is actually placed using the import path.
  3. Cleaner Code.
  4. Easier to write.

Configure Absolute Import

To support absolute import create a file named jsconfig.json in your root directory and add the below code.



{
  "compilerOptions": {
    "baseUrl": "src"
  },
  "include": ["src"]
}


🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026 🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026

Now let's convert the relative imports in the below component to Absolute Import



import React from 'react';
import Button from '../../components/Button';
import { red } from '../../utils/constants/colors';

function DangerButton(){
  return <Button color={red} />;
}

export default DangerButton;


🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026 🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026

The Above imports will be changed to as below



import React from 'react';
import Button from 'components/Button';
import { red } from 'utils/constants/colors';

function DangerButton(){
  return <Button color={red} />;
}

export default DangerButton;


🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026 🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026

Now our imports are clean and understandable. 

Configuring in JET Brains IDEs

  • For JET Brains IDEs like WebStorm, PhpStorm, RubyMine and etc, we need to add some additional configurations as below to support Absolute import

Right-click the src folder and select Mark Directory as and Click Resource Root.

Resource Root

  • Next select Preferences -> Editor -> Code Style -> JavaScript -> Imports and Check Use paths relative to the project, resource or source roots and Click Apply.

ide-resource

VS Code

No Changes need to be done in VS Code. It will automatically import the config from jsconfig.json file.

Resources

  1. VS Code jsconfig.json
  2. JET Brains CodeStyle

Conclusion

Absolute imports make the component more readable and clean. I hope you have found this useful. Thank you for reading.

Get more updates on Twitter.

You can support me by buying me a coffee ☕

eBook

Debugging ReactJS Issues with ChatGPT: 50 Essential Tips and Examples

ReactJS Optimization Techniques and Development Resources

More Blogs

  1. Laravel Sanctum Authentication for React App Using Breeze
  2. Twitter Followers Tracker using Next.js, NextAuth and TailwindCSS
  3. Don't Optimize Your React App, Use Preact Instead
  4. Build a Portfolio Using Next.js, Tailwind, and Vercel with Dark Mode Support
  5. 10 React Packages with 1K UI Components
  6. Redux Toolkit - The Standard Way to Write Redux
  7. 5 Packages to Optimize and Speed Up Your React App During Development
  8. How To Use Axios in an Optimized and Scalable Way With React
  9. 15 Custom Hooks to Make your React Component Lightweight
  10. 10 Ways to Host Your React App For Free
  11. How to Secure JWT in a Single-Page Application

Top comments (50)

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026
 
imsalehmuhammad profile image
Saleh Muhammad •

Nice one, But i think this approach is good when you are the only one maintainer of the codebase. For the whole team would suggest using webpack alias.

webpack.js.org/configuration/resol...

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026
 
gdenn profile image
Dennis Groß (he/him) • • Edited

I second webpack alias. I also suggest using an expressive prefix for the alias so everyone in the team understands that the import uses an alias.

But Nilanth made a good job explaining why some sort of absolute imports makes your life easier.

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026
 
nilanth profile image
Nilanth • • Edited

I think it can be used with n number of maintainer or n number of team also.
As the Package with largest react community also uses this approach.
FYR: github.com/ant-design/ant-design

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026
 
natevictor profile image
Nathan Victor •

You are correct, and the 5-line setting is tidy and simple. Either way, a team of any size would be using the same settings.

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026
 
aymenmarouani profile image
Aymen Marouani •

Thanks for the tip, but how can I add this webpack alias when using create-react-app ?

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026
 
nilanth profile image
Nilanth •

webpack alias not required for CRA. Above config is enough for CRA.

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026 Thread
 
aymenmarouani profile image
Aymen Marouani •

There's also a library called craco that can override configuration for CRA

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026
 
nilanth profile image
Nilanth •

Bundler will get the config from jsconfig, Not required to tell bundler separately.

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026
 
vrushank profile image
vrushank •

Thanks for sharing, This is really great but It will even greater if we can use alias without ejecting in CRA. Do you have any method to implement alias using CRA?

Also if you have any idea implmenting the same with typescript, please share the same or update the post.

Cheers~

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026
 
nilanth profile image
Nilanth •

Hey, above method is for CRA only. For typescript use tsconfig.json file instead of jsconfig.json

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026
 
vrushank profile image
vrushank •

I know this for CRA but do you know how to setup alias?

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026
 
krtirtho profile image
Kingkor Roy Tirtho •

But What will I do if I've to import from another file that is in the same folder but that folder is nested?
E.g. src/service/backend/post/ is a folder. Inside that I have 2 modules but 1 imports another. So do I've to write it like import {aFunction} from "service/backend/post/module-2" ?

Can I use relative import in that case?

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026
 
enthuin profile image
Russell Sanders • • Edited

You can still use relative imports. This compiler option only adds to your abilities to do imports, it doesn't take away. you can still use import {aFunction} from "../module-2" and since it's relative, this will still work. The baseUrl option only applies to imports that are not relative, so relative imports still references from the current file

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026
 
chilupa profile image
Pavan •

Little lately, after using this config, I found out that when you try to import render function from react testing library, it uses require syntax but not the import syntax. Has anyone experienced this? It is same with all the imports in the test cases.

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026
 
nosknut profile image
nosknut •

Pretty sure i used this in 2018

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026
 
shaquille_shaw profile image
Shaquille Shaw • • Edited

Great read, I'm sure I will use this soon!
Quick question about the code, is it suppose to instead be :

import Button from '../../components/Button';
import { red } from '../../utils/constants/colors';

I am curious because in doing this it would now allow the utils and the components folder to be both siblings of each other and both children folders of src.

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026
 
mattferrin profile image
🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026 Comment hidden by post author - thread only accessible via permalink
Insight Lighthouse •

Over engineering in my opinion. I don't feel much is gained and that more complexity is added for visual preference only. I can move a file and VSCode will update the relative imports for me. I can't move many files simultaneously, but can move files fairly quickly one at a time.

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026
 
spock123 profile image
Lars Rye Jeppesen •

Or use Typescript and use alias there.... React with JS is suck a mess

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026
 
vrushank profile image
vrushank •

How do you setup alias using typescript? I'm having hard times setting up alias with typescript, It automatically overrides tsconfig settings when we run the project again and jsconfig won't work with typescript.

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026
 
spock123 profile image
Lars Rye Jeppesen •

Sorry I don't use jsconfig at all, we use pure TSC (Typescript) compiler and we don't use Babel for our projects.

For pure typescript it's just a configuration in tsconfig.json as you mentioned. I am not sure what's going on with your setup, unfortunately
Cheers

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026 Thread
 
vrushank profile image
vrushank •

I understand, I just want to know that setting how you setup alias using tsconfig in CRA.

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026 Thread
 
spock123 profile image
Lars Rye Jeppesen •

I'm sorry I misunderstood you.
We're not using React so I can't say how it's done there, unfortunately. So sorry

🔥 Jadwal & Hasil: nilanth/no more import in react mbo - Info Live Streaming 2026
 
renanlazarotto profile image
Renan "Firehawk" Lazarotto •

This will definitely come in handy for the React project I'm working on (my portfolio! hopefully I'll have enough time to finish it one day...), and quite frankly, imports are one of my main issues with JavaScript and I sometimes still quite don't get them.

Some comments have been hidden by the post's author - find out more