How we connected micro-frontends through an event bus
At AeroPort, we built shared state without tight coupling: one micro-frontend emits a custom event, another catches it and updates. No reloads, no blank screens.

At AeroPort, we built shared state without tight coupling: one micro-frontend emits a custom event, another catches it and updates. A realistic case: a user selects a flight in one service, and a neighboring module automatically shows baggage information. No reloads, no “why is this empty?”.
Why didn’t we move everything into a shared store? Because in 2025, isolation is no longer a “nice to have” — it’s the baseline. Each micro-frontend lives independently, and they communicate through an event bus.
And yes, we built in fault tolerance from the start: Error boundaries + circuit breaker. If the “baggage” service suddenly decides to disappear into the void, the rest of the system doesn’t collapse like dominoes. The user can still select a flight, and the team can calmly finish their coffee ☕️
Result: loose coupling, predictable communication, and less pain as the platform evolves.