← Back to courses

Course

Micro Frontend

77 lessons across 9 modules

Advanced, assuming JavaScript, React, TypeScript and some frontend architecture. Fundamentals and the case against, shell and remote architecture, Module Federation, communication, routing and auth, independent deployment, and production - ending in an enterprise shell with three remotes. The road is laid out in full; lessons are being written one at a time.

Course9 modules77 lessonsEach heading below is a module (one topic). Each card under it is a lesson. Start with Module 1.
Solid: ready (0)Dashed: coming soon (77)
Module 1 of 97 lessonsComing soon

Micro Frontend Fundamentals

What it is, and the honest case against it

The microservices patterns course →

What is Micro Frontend?

1

Independently built and deployed pieces of one user-facing app.

One page assembled from three separately released builds

Lesson 1planned

Why Micro Frontend?

2

The organisational problem it solves, which is not a technical one.

Four teams blocked behind one release train

Lesson 2planned

Monolith vs Micro Frontend

3

What a frontend monolith does well, and where it stops.

The same app both ways, compared on release cadence

Lesson 3planned

Micro Frontend vs Microservices

4

The analogy, and the three places it breaks down.

Why the browser makes this harder than the server side

Lesson 4planned

Benefits and Challenges

5

Autonomy and isolation, paid for in duplication and complexity.

The costs listed as plainly as the benefits

Lesson 5planned

When to Use Micro Frontend

6

The conditions that make it worth the price.

Team count, release friction, and domain boundaries

Lesson 6planned

When NOT to Use Micro Frontend

7

The far more common answer, and how to recognise it.

One team of six adopting it, and regretting it

Lesson 7planned
Module 2 of 98 lessonsComing soon

Micro Frontend Architecture

Shell, remotes, and who owns what

Micro Frontend Architecture

8

The shapes available, and what each one commits you to.

Build-time, server-side, and runtime integration compared

Lesson 8planned

Application Shell

9

The container that owns layout, routing, and the session.

A shell that stays up when a remote does not

Lesson 9planned

Host and Remote Applications

10

Who loads whom, and the contract between them.

Drawing the dependency arrows before any code

Lesson 10planned

Domain-based Decomposition

11

Splitting by business domain rather than by page or by layer.

A split along technical lines that recreates the coupling

Lesson 11planned

Team Ownership

12

One team per remote, end to end - the point of the whole exercise.

Conway law read as a design constraint

Lesson 12planned

Independent Development

13

Running one remote alone, without the rest of the system.

A standalone mode that makes local work bearable

Lesson 13planned

Independent Deployment

14

Shipping one remote without rebuilding the host.

A deploy that touches one bundle and no others

Lesson 14planned

Runtime Integration

15

Composing in the browser, and what that costs on first paint.

Measuring the extra round trip a remote adds

Lesson 15planned
Module 3 of 98 lessonsComing soon

Module Federation

The mechanism most of this is built on

What is Module Federation?

16

Loading code from another build at runtime, and why that is new.

An import that resolves over the network

Lesson 16planned

Host Application

17

Configuring a consumer, and what it must know in advance.

A host that discovers remotes rather than hard-coding them

Lesson 17planned

Remote Application

18

Configuring a producer, and the manifest it publishes.

Reading remoteEntry.js and seeing the contract

Lesson 18planned

Exposes

19

Choosing the public surface of a remote, and keeping it small.

Exposing one mount point rather than twelve components

Lesson 19planned

Remotes

20

Declaring what a host consumes, and resolving URLs per environment.

The same host pointing at staging or production remotes

Lesson 20planned

Shared Dependencies

21

Sharing a library instead of shipping it three times.

Two copies of React, and the hooks error that follows

Lesson 21planned

Version Management

22

Singletons, required versions, and strict mode.

A remote built against a React the host does not have

Lesson 22planned

Runtime Loading

23

Lazy loading a remote, and what to render while it arrives.

A remote that fails to load, handled rather than blank

Lesson 23planned
Module 4 of 98 lessonsComing soon

React Micro Frontend

Building one, host and remotes together

The React course →

Creating a Host Application

24

The shell project, its config, and its responsibilities.

A host that renders a layout and nothing else

Lesson 24planned

Creating Remote Applications

25

A remote that runs standalone and mounts inside a host.

One entry point serving both modes

Lesson 25planned

Sharing React

26

One React instance across every build, and why it is mandatory.

Invalid hook call, traced to a duplicate React

Lesson 26planned

Sharing Components

27

A design system across remotes, and versioning it.

A button change that lands everywhere without a rebuild

Lesson 27planned

Sharing Utilities

28

The helpers worth sharing, and the coupling that follows.

A shared util that becomes a release bottleneck

Lesson 28planned

Routing

29

A first pass at host and remote routes coexisting.

A remote that owns everything under one path

Lesson 29planned

Authentication

30

A first pass at one session shared by every remote.

A remote that trusts the host for identity

Lesson 30planned

Building a React Micro Frontend

31

A host and two remotes, running together end to end.

The smallest complete system that actually works

Lesson 31planned
Module 5 of 98 lessonsComing soon

Communication Between Micro Frontends

Talking across a boundary you deliberately built

The Redux course →

Why Communication is Difficult

32

Every channel you add trades autonomy back for convenience.

Two remotes that can no longer deploy independently

Lesson 32planned

Props

33

The host passing data down, and why this is the default answer.

A mount function taking the user as an argument

Lesson 33planned

Custom Events

34

Publishing and subscribing without a shared import.

A cart update two remotes both react to

Lesson 34planned

Browser Events

35

The native channels already available, and their limits.

storage events synchronising two tabs

Lesson 35planned

Shared State

36

A shared store, and the coupling it quietly introduces.

A state shape change that breaks three teams

Lesson 36planned

Redux Across Micro Frontends

37

Dynamic reducer injection, and whether to do this at all.

A remote registering its slice on mount

Lesson 37planned

URL-based Communication

38

The URL as shared state that every remote already reads.

A filter in the query string, honoured by two remotes

Lesson 38planned

Communication Best Practices

39

Thin contracts, versioned events, and the direction of coupling.

A published event contract treated like an API

Lesson 39planned
Module 6 of 98 lessonsComing soon

Routing and Authentication

One URL bar and one session, across many apps

Host Routing

40

The shell owning the top-level map of the app.

A route table that names remotes, not pages

Lesson 40planned

Remote Routing

41

A remote owning everything beneath its prefix.

Two routers cooperating over one history

Lesson 41planned

Nested Routes

42

Deep links into a remote, resolved correctly on a cold load.

Pasting a deep URL and landing in the right place

Lesson 42planned

Navigation

43

Moving between remotes without a full page reload.

A link that crosses a boundary and keeps the shell alive

Lesson 43planned

Authentication

44

One login, one token, and where it actually lives.

The host holding the session for everyone

Lesson 44planned

Authorization

45

Permissions distributed to remotes that must not re-derive them.

A permission set handed down at mount

Lesson 45planned

Shared Authentication

46

Refresh, expiry, and logout coordinated across remotes.

One expired token logging every remote out

Lesson 46planned

Protected Micro Frontends

47

Not loading a remote at all unless the user may see it.

An admin remote that is never fetched by a viewer

Lesson 47planned
Module 7 of 98 lessonsComing soon

Deployment and CI/CD

Independent releases, which is the whole point

Independent Builds

48

One pipeline per remote, with no shared build step.

A build that does not wait for anyone else

Lesson 48planned

Independent Deployment

49

Shipping a remote without touching the host.

A production change with no host release

Lesson 49planned

Versioning

50

Versioning the contract, not just the bundle.

A breaking expose change, and how it should have been staged

Lesson 50planned

Remote Deployment

51

Where remoteEntry lives, and cache headers that let you roll forward.

A stale manifest serving yesterday bundle

Lesson 51planned

CI/CD Pipelines

52

Lint, typecheck, test, build, deploy - per remote.

A pipeline that blocks a broken remote from shipping

Lesson 52planned

Environment Configuration

53

Remote URLs per environment, resolved at runtime not build time.

One build promoted through three environments

Lesson 53planned

Rollbacks

54

Reverting one remote quickly, without a coordinated release.

Pointing the manifest back at the previous version

Lesson 54planned

Handling Incompatible Versions

55

Detecting a mismatch before users do, and failing safely.

A contract check in CI across host and remotes

Lesson 55planned
Module 8 of 910 lessonsComing soon

Production Considerations

Running a distributed frontend for real users

Performance

56

The cost of runtime composition, measured rather than assumed.

First paint with one remote against four

Lesson 56planned

Shared Dependencies

57

Deduplication as a performance decision, not just a correctness one.

Three copies of a date library in one page

Lesson 57planned

Error Isolation

58

One remote failing without taking the shell with it.

An error boundary per remote, and what it renders

Lesson 58planned

Security

59

Loading third-party code at runtime, and the trust that implies.

A CSP that still allows federated loading

Lesson 59planned

Observability

60

Knowing which remote a problem came from.

A trace that names the remote and its version

Lesson 60planned

Monitoring

61

Per-remote health, and alerting the team that owns it.

A dashboard split the same way the org is

Lesson 61planned

Logging

62

Correlating logs across independently deployed pieces.

One request id carried through three remotes

Lesson 62planned

Caching

63

Long-lived chunks against a manifest that must stay fresh.

Cache rules that let a deploy actually take effect

Lesson 63planned

Failure Handling

64

Timeouts, retries, and a degraded page worth showing.

A dashboard missing one panel rather than all of them

Lesson 64planned

Production Best Practices

65

The decisions worth making before launch, not after.

A pre-launch review of a federated app

Lesson 65planned
Module 9 of 912 lessonsComing soon

Real-World Project

An enterprise shell with three remotes

Architecture Design

66

Boundaries, ownership, and contracts agreed before any code.

The shell and three remotes drawn on one page

Lesson 66planned

Create the Host

67

The shell - layout, routing, session, and error boundaries.

A host that renders with no remotes available

Lesson 67planned

Create the Dashboard Remote

68

The first remote, standalone and mounted.

Running it alone, then inside the shell

Lesson 68planned

Create the Users Remote

69

A second team following the same contract.

A remote built without reading the host source

Lesson 69planned

Create the Courses Remote

70

A third remote, and the patterns that have now settled.

The third one taking an afternoon rather than a week

Lesson 70planned

Shared Components

71

A design system consumed by all three, versioned deliberately.

One button change rolled out safely

Lesson 71planned

Shared Authentication

72

One session across the shell and every remote.

Logging out in one place and everywhere following

Lesson 72planned

Routing

73

Deep links, navigation between remotes, and a cold load.

Pasting a URL into a fresh tab and landing correctly

Lesson 73planned

Communication

74

The event contract between remotes, written down and versioned.

A notification one remote raises and two consume

Lesson 74planned

Independent Deployment

75

Releasing one remote while the others stay untouched.

A deploy nobody else had to be told about

Lesson 75planned

CI/CD

76

Four pipelines, contract checks, and per-remote rollback.

A bad remote blocked before it reaches the shell

Lesson 76planned

Production Deployment

77

Going live, watching it, and reviewing against the design.

The finished system, and what you would change next time

Lesson 77planned