What Is a Micro Frontend?
Mike Vertal brings over 25 years of operational, technical and executive leadership experience to CrafterCMS. Over the course of his career, Mike has served in executive positions at leading software and services companies. Mike holds BSEE and MSEE degrees from Case Western Reserve University, and an MBA from the Wharton School of the University of Pennsylvania.
Microservices have become the go-to way for building modern software stacks. It involves breaking down large monolithic architectures into smaller loosely coupled services that can be built, tested, and deployed independently. These microservices have enabled businesses to be more flexible and agile while managing their backend architectures.
When designing frontend experiences, developers have been able to rely on an ever-growing assortment of frameworks, but architecturally things have remained more or less the same. For enterprises that want to scale their frontend development, enable multiple teams to work simultaneously, or add new tools into the build process, monolithic frontends can present a challenge.
However, developers can solve these challenges by bringing the microservices approach to frontend development through micro frontends and provide an even better user experience. In essence, micro frontends bring the benefits of microservices to complex user interface applications, including websites, mobile apps, single page applications, and more.
Micro Frontends Explained
Micro frontends are a new architectural style for building web applications leveraging the benefits of microservices. Essentially, frontend apps are decomposed into individual, semi-independent micro apps that work together as one system.
As frontend software grows, it is much harder to maintain due to added complexity. With micro frontends, this complexity is removed and provides more freedom to developers. Micro frontends enable teams to maintain smaller and more cohesive codebases and make upgrading and updating parts of the frontend code much easier.
Micro frontends should be utilized such that individual slices of business functionality in the UX are formed as individual front ends. So each micro frontend focuses on what the end user will see, for example each individual page of a web app (excluding the header/footer/etc. that may be common to each page).
For example, a food delivery service that lets customers order from different restaurants can be created using a micro frontend approach.
- The first micro frontend would be a landing page where potential customers can search for and filter restaurants by different categories.
- Another micro frontend would be the individual restaurant pages where menus are displayed.
- Another would be the customer profile page, where customers can track orders and view their order history and payment options.
These micro frontends can be built and maintained by separate teams and then combined to deliver one cohesive experience for the customer.
Micro frontends offer implementation flexibility to developers. For example, the architectural approach is independent of any frontend implementation technology. So whether you are using Reactjs, Angular, Vue, or HTML templates (e.g., Freemarker) for your frontend technologies, a micro frontend approach is feasible. There is also flexibility with regard to integration approaches. The most common ways to integrate all of the micro frontends together into a seamless user experience are:
- Server-side template composition
- Build time integration
- Run time integration via iFrames
- Runtime integration via Web Components
So developers have plenty of flexibility (and design choices to make) when using a micro frontend architectural style.
Benefits of Micro Frontends
Smaller Specialized Teams
As UIs get more complex and frontend development teams get larger, it's beneficial to break up the teams and UI functionality into smaller cohesive units, with loose coupling between them. With micro frontends, teams can be split into smaller units that and break down large projects into smaller, faster dev/test/deploy cycles while still working together.
Faster Development and Deployment
Another benefit of micro frontends is the speed that they provide. With smaller independent teams working simultaneously, communication between teams working on the same thing becomes easier, and new features can be released quickly.
Frontend development can be complex, especially when dealing with monolithic applications. These bulky applications can be difficult to maintain as they grow. However, by adopting a micro frontend approach, business functions can be broken down into singular elements that are easier to spec, design, develop, test, maintain and deploy. Individual teams working on separate micro frontends can test their own section rather than trying to worry about the entire application.
Potential Issues of Micro Frontends
Since micro frontends can operate independently, each micro frontend will have its own dependencies. One issue with this is that an application could be made up of different versions of the same libraries, which ends up making an application larger than if it were a packaged monolith. The result is more data to be downloaded, slower loading times, and a potential hit to search engine rankings.
Creating an engaging frontend experience needs consistency from both UI and UX perspectives. When multiple frontend experiences are pieced together, it can lead to a patchy design, overlaps in CSS, and other inconsistencies. To avoid this, teams should communicate to ensure that the user experience remains unaffected when operating independently. Using a library of reusable components can help.
While micro frontends can make it easier to communicate as teams are smaller, communication issues could arise depending on the size of the web application, the number of teams, and the number of developers. With multiple teams working on separate codebases, it can be harder to discover reusable features and functions. As a result, there may be duplicate implementations of the same components across multiple micro frontends.
CrafterCMS: Leveraging Micro Frontends for Content Applications
Micro frontends provide a new approach to building engaging digital experiences for a wide range of audiences. Any many of these digital experiences benefit from content targeted to the audience. So, most enterprises need a CMS platform that provides the flexibility they need to create the perfect frontend experience for their visitors, especially if they want to adopt a micro frontend approach.
CrafterCMS is an open source, API-first headless CMS for enterprises that provides the flexibility, and ease-of-use modern businesses need. Some of the reasons that make CrafterCMS the ideal content platform to build micro frontend experiences include:
Developer Freedom and Flexibility
CrafterCMS enables developers to pick the frameworks and tools they are most comfortable using. If a team wants to use micro frontends for faster development or if they want to avoid conflicting styles, Crafter’s flexibility places no restrictions on them. Developers may choose any frontend technology, including React, Vue, Angular, HTML templating (with Freemarker), A-Frame for AR/VR experiences, etc. that best suits the task at hand.
Moreover, all of the integration patterns applicable to the micro frontend architecture is easily supported with CrafterCMS. And full stack architectural patterns such as the Backend for Frontends (BFF) that are well-suited for micro frontends are also supported with Crafter's extensible, scriptable content APIs.
Best In Class Content Authoring
Marketers and content editors are a crucial part of crafting the frontend experience. They need the tools to author and manage the content and experiences driven by the frontends that developers build. Unlike most other headless CMSs, Crafter does not compromise the authoring experience with its headless "plus" capability. Even when building with micro frontends, the content teams benefit from CrafterCMS's powerful WYSIWYG authoring, drag-and-drop experience building, and in-context editing and preview tools for multi-experience digital channels. Relative to other headless CMSs, CrafterCMS’s content authoring experience is unmatched.
Communication and collaboration among content teams and developer teams can be a major challenge for any type of CMS-driven project. Add in the complexities of modern UIs, problems will start to appear faster than you can stop them. Micro frontends solve the developer challenge, but the content teams need to work effectively with these new technologies.
CrafterCMS provides a unique approach known as DevContentOps that brings content teams, DevOps teams, and the CMS into an integrated process. Communication between development teams, content authors, and operations can be streamlined to create a cohesive user experience and deliver business value without the typical bottlenecks of traditional CMSs.
Interested in leveraging micro frontends and modern frontend technologies like React to build content-rich digital experiences? Learn more by reading our White Paper: Building React Apps with a Headless CMS
What Is JHipster?
Attention Content Authors: Don't Worry About What Technology Your Headless CMS Developers are Using
Headless CMS Use Case: OTT Video for Media and Entertainment
Modernizing Video Delivery and Content Management at CPAC, A Canadian Nationwide Broadcaster
Building React Apps on a Headless CMS
Building Single Page Apps with React, Headless CMS, and GraphQL
Where is Headless CMS Architecture Headed?
A Better Headless CMS for ReactJS Apps