Skip to content

What Is Favn

Favn is a runtime composition platform for multi-team frontend systems.

It is designed around one constraint: teams must be able to publish independently, while the host can discover and activate those artifacts safely without restarts.

Core idea

Favn separates concerns into three layers:

  1. Favn Server
    Handles discovery, verification, routing, shell rendering, and RPC transport.

  2. Domain Features (featureType: "domain")
    Route-owning features that orchestrate workflows and can own data fetching.

  3. Facet Modules (featureType: "facet")
    Reusable embedded UI units that receive data/props and emit user intent.

Legacy aliases are still accepted:

  • application -> domain
  • module -> facet

Why it exists

Most micro-frontend systems optimize one side of the problem well:

  • bundler/runtime composition,
  • client-side orchestration,
  • or server-side fragment composition.

Favn focuses on a different center of gravity:

  • signed artifact discovery at runtime,
  • operationally safe version/channel control,
  • strict host boundary (transport/security/runtime), with business logic owned by teams.

How it differs from common approaches

AreaFavnModule FederationPodiumsingle-spa
Primary unitManifested feature artifact (domain/facet)Bundler remotes/containersServer-rendered fragments/podletsClient apps registered in root config
Discovery modelRuntime discovery from local artifacts and/or remote indexRemote container URLs configured at build/runtimeLayout + podlet registrationRuntime registration/import maps
Built-in trust chainYes: signed release index + signed manifest + integrity checksNo built-in signature chain by defaultNo built-in signature chain by defaultNo built-in signature chain by default
Routing ownershipHost resolves domain features by prefix; facets are embeddedApp-defined, usually router/bundler-drivenServer layout/router-drivenRoot config + client router integration
Shared deps modelHost import map + declared shared requirementsFederation shared scope negotiationApp/runtime dependentApp/runtime dependent
Server function transportFirst-class /rpc/:feature/:fn with host context + proxy/module modesNot a built-in conceptNot a built-in conceptNot a built-in concept
Team authorization modelFeature-owned business authz (host handles authn/transport)Team/application-definedTeam/application-definedTeam/application-defined

Mental model

What Favn is not

  • Not a replacement for domain service design.
  • Not a framework-level RBAC/business policy engine.
  • Not tied to a single UI framework strategy beyond runtime contract requirements.

When Favn is a good fit

  • 10+ teams shipping independently.
  • Need runtime deployability without host rebuild/restart.
  • Need strong provenance/integrity guarantees for loaded artifacts.
  • Need an operational control surface for channel changes and rollback.

When Favn is likely overkill

  • Small team with one deploy train.
  • No requirement for runtime discovery or independent release cadence.
  • No need for trust-chain verification across artifacts.