Skip to content

Automated Version Alignment for Angular Native Federation Ecosystems #1027

@ng-druid

Description

@ng-druid

For which library do you need help?

native-federation

Question

Hello,

We’re running into a version‑management challenge in a large micro‑frontend ecosystem built with Angular’s native federation. The ecosystem consists of:

Quell Core – the source of truth https://github.com/rollthecloudinc/quell
Spearhead distributions – host applications https://github.com/rollthecloudinc/spearhead
SOLIDs – independent Angular MFEs loaded at runtime as plugins https://github.com/rollthecloudinc/solid

All of these depend directly on Quell Core and share the same Angular and library versions. For compatibility, every Core release requires every SOLID and every distribution to be rebuilt using the exact same dependency versions. Today that process is entirely manual.

The Problem

  1. When Quell Core is updated, all SOLIDs and distributions must also update their dependency versions to match.
  2. SOLIDs need new versioned build folders (immutable per Core version).
  3. Distributions need new Git tags.
  4. Every build must publish to GitHub Pages or GitHub Packages.
  5. Maintaining this manually across many repos is error‑prone and doesn’t scale.

Proposed Solution

Use a GitHub‑native automated release workflow that triggers from Core:

  1. A new Quell Core release fires a repository_dispatch to dependent repos.
  2. A reusable GitHub Action updates dependency versions, rebuilds each repo, and publishes outputs.
  3. SOLIDs publish new versioned build folders (per‑Core immutable).
  4. Distributions publish new tagged releases.
  5. All shared library versions remain strictly aligned across the ecosystem.
                 ┌─────────────────────┐
                 │     Quell Core      │
                 │  (source of truth)  │
                 └──────────┬──────────┘
                            │
                            │ New Core Release
                            ▼
                ┌──────────────────────────┐
                │ GitHub Action in Core    │
                │ triggers repo_dispatch   │
                └──────────┬──────────────┘
                            │
   ┌────────────────────────┼────────────────────────┐
   │                        │                        │
   ▼                        ▼                        ▼
┌───────────┐        ┌──────────────┐        ┌────────────────┐
│   SOLID    │        │   SOLID      │        │   SOLID        │
│  Plugin A  │        │  Plugin B    │        │  Plugin N       │
└─────┬──────┘        └──────┬───────┘        └───────┬────────┘
      │                      │                       │
      │ Auto‑update deps     │ Auto‑update deps      │ Auto‑update deps
      │ Rebuild              │ Rebuild               │ Rebuild
      ▼                      ▼                       ▼
┌──────────────┐     ┌──────────────┐        ┌──────────────┐
│ Versioned     │     │ Versioned     │        │ Versioned     │
│ Release Folder│     │ Release Folder│        │ Release Folder│
└──────────────┘     └──────────────┘        └──────────────┘


                            (Parallel)

                            ▼
                 ┌────────────────────────┐
                 │ Spearhead Distributions│
                 │  (docs, blog, etc.)    │
                 └──────────┬─────────────┘
                            │
                            │ Auto‑update deps
                            │ Rebuild
                            ▼
                 ┌────────────────────────┐
                 │  Release Tag per Core  │
                 │  (no folders needed)   │
                 └────────────────────────┘

Flow summary

• Quell Core releases a new version.
• Core triggers dependent repos using GitHub’s repository_dispatch.
• Each SOLID rebuilds into a new versioned folder (immutable per Core version).
• Each distribution rebuilds and publishes a new Git tag.
• Shared dependency versions remain aligned automatically.

Does this sound like anything that has been thought through or built already?

Interested in more of the conversation available here: rollthecloudinc/hedge#381

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionA question about the native-federation or mfe architecture

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions