The solution to this is to split the main. It enables dynamic loading of ECMAScript modules and is explained in this blog post. But once we try to host and navigate the application, we immediately notice the load time is high meaning the app is incredibly slow. The syntax is very simple and strict. We also discussed leveraging dynamic imports, React.lazy(), React.Suspense, React Router, and Loadable Components to create a better performing React application. These are some of the reasons why you might want to use dynamic import instead of the static modules: This is one of the main reasons why developers use dynamic import. Was this translation helpful? Also Read: When and How to Use Async Defer Attributes in Script Tag. Another advantage we get by using dynamic import is that we can generate the import path or specifier on runtime according to any conditions. In the case of named export, there is no limit. You just have to use the default keyword after export keyword to make it the default export. Because if you use module imports in your JavaScript file and try to load it in the HTML file, browsers can not understand it by default. I guess you mismatched the component with exact path /. When webpack comes across this syntax, it bundles all the files together. For example, to load a polyfill on legacy platforms. You can export anything from a JavaScript file like variables, functions, etc. In this example, the users browser should only load the login chunk. That looks as follows. This wont work: Second, we cant import conditionally or at run-time: Thats because import/export aim to provide a backbone for the code structure. You can find the demo for loadable``() components in this codesandbox link. You can do that just by adding type attribute to the