Using ES Modules Based Micro-Frontends to Enable Distributed Development – Steve King

Learn how ES modules enable distributed development and separate builds for large-scale applications, and discover how to build and manage micro-frontends with a monorepo management tool and design system.

Key takeaways
  • ES modules are a modern standard for creating JavaScript in its simplest form, replacing traditional CommonJS modules.
  • They solve the problem of loading multiple applications with different frameworks and dependencies, allowing for distributed development and separate builds.
  • ES modules enable seamless interoperation between different frameworks and can be used with any ES module-aware toolchain.
  • The author’s company uses ES modules to create micro-frontends, which are independent applications that can be loaded dynamically in the browser.
  • These micro-frontends are built using a monorepo management tool and can share dependencies, making it easier to manage and deploy large-scale applications.
  • The company uses a design system to ensure consistency across applications, and has developed a way to share CSS and theming between micro-frontends.
  • The author emphasizes the importance of continuous integration and deployment (CI/CD) for efficiently managing and releasing applications.
  • Using ES modules and modern web technologies allows for faster builds, improved performance, and better scalability.
  • The author’s company has adopted a distributed development model, where multiple teams work independently on different applications, and uses a portal to manage and load these applications dynamically.
  • The portal uses ES modules to load and render the micro-frontends, and can handle dynamic imports and sharing of state between applications.
  • The author emphasizes the benefits of using a monorepo management tool, which simplifies the process of managing and deploying large-scale applications.
  • The company uses esbuild to compile and bundle ES modules, and has replaced traditional bundle sizes with ES modules that can be loaded dynamically.
  • The author’s company has implemented a solution for sharing state between micro-frontends, using a context to ensure that state is shared consistently across applications.
  • The company has also developed an opinionated monorepo management tool, dubbed “Modula”, which provides features for managing and deploying micro-frontends.
  • The author’s company has adopted a mindset of continuous learning and improvement, and is always looking for ways to improve the development experience and increase efficiency.
  • The author’s company has developed a solution for sharing dependencies between micro-frontends, using a package manager to manage dependencies and ensure consistency across applications.