How the Fission Algorithm Works for Top‑Down GraphQL Federation Schema Design - WunderGraph

State of Federation 2026

Jens Neuse
CEO & Co-Founder at WunderGraph
April 4, 2026 · 12min read
Edited on May 21, 2026 by Brendan Bondurant

TL;DR

Fission inverts the usual GraphQL Federation workflow. Instead of composing subgraphs into a supergraph, you design the supergraph first and Fission derives subgraph specs, handling entity keys, directives, and validation automatically.

What is the Fission algorithm?

Fission is a stateful schema graph engine for GraphQL Federation that keeps the consumer-facing supergraph and underlying subgraphs in sync. Architects can design the supergraph first, then use Fission to decompose that design into subgraph specifications with federation keys, directives, dependency propagation, and validation safeguards.

Designing and evolving schemas in GraphQL Federation is hard, especially when many teams and subgraphs are involved.

In a previous post, I argued that Federation's composition model is backwards. It builds the supergraph from the bottom up when it should be designed from the top down.

This post is a technical deep dive into how the Fission algorithm actually does that.

The Problem Fission Solves in GraphQL Federation

To understand Fission, first you need to understand what makes schema changes expensive in Federation.

Consider a federated graph with three subgraphs:

Subgraph: Users

# Subgraph: Users
type User @key(fields: "id") {
  id: ID!
  name: String!
  email: String!
}

type Query {
  user(id: ID!): User
  users: [User!]!
}

Subgraph: Orders

# Subgraph: Orders
type User @key(fields: "id") {
  id: ID!
  orders: [Order!]!
}

type Order @key(fields: "id") {
  id: ID!
  total: Float!
  status: OrderStatus!
  createdAt: DateTime!
}

enum OrderStatus {
  PENDING
  SHIPPED
  DELIVERED
}

Subgraph: Products

# Subgraph: Products
type Order @key(fields: "id") {
  id: ID!
  items: [OrderItem!]!
}

type OrderItem {
  product: Product!
  quantity: Int!
}

type Product @key(fields: "id") {
  id: ID!
  name: String!
  price: Float!
}

Composition produces a supergraph where you can query:

In the traditional workflow, the frontend team has to figure out:

Fission automates the hardest parts of this process.

What the Fission Algorithm Is

Fission is a stateful schema graph engine, an in-memory system that maintains two synchronized views of your federated graph at all times:

  1. The supergraph view — the unified, consumer-facing schema.
  2. The subgraph views — one per service, representing what each team is responsible for implementing.

These two views are kept in sync. When you make a change to either one, Fission will automatically propagate the consequences: renaming a type cascades to every subgraph and every field reference. Adding a type to a subgraph pulls in all its transitive dependencies. Entity @key directives propagate automatically. @shareable directives are added bidirectionally when fields exist in multiple subgraphs.

Every edit follows the same pattern: validate first, mutate second, update indexes, and return a structured result. If validation fails, no state changes happen. This ensures you never have a half-applied edit.

The key insight is the synchronization contract:

The supergraph view represents the union of all subgraph views, plus any types and fields not yet assigned to a subgraph.

This means the architect can design the complete API shape first and then decide how to distribute the implementation across subgraphs.

Fission and traditional GraphQL Federation workflows

Aspect Traditional GraphQL Federation composition Fission algorithm top down
Design starting point Teams define subgraphs first, then composition produces the supergraph. Architects can design the consumer-facing supergraph first.
Source of truth The supergraph is the result of composing implemented subgraph schemas. The supergraph is the canonical design view; subgraph specs are projected from it.
Change workflow Teams propose subgraph changes, then composition checks whether those changes work together. Architects edit the supergraph, assign ownership, and Fission updates the affected subgraph specs.
Responsibility decisions Teams decide where types and fields live, often through cross-team coordination. Architects decide ownership on the Hub canvas; Fission automates the mechanical follow-up work.
Automated work Composition merges completed subgraph schemas and reports composition errors. Fission propagates dependencies, entity keys, directives, references, and cascading schema updates.
Validation timing Many issues surface during build or composition after schema changes are written. Mutations are validated during design, before Fission changes its internal state.
View synchronization Subgraph changes are reconciled through composition runs. Supergraph and subgraph views are kept synchronized by Fission’s stateful schema graph engine.

How the Fission Algorithm Works in Practice

Let's walk through the shipping example step by step.

Step 1: Design on the Supergraph

The architect adds the new types and fields directly on the supergraph:

At this point, ShippingInfo exists in the supergraph but isn't assigned to any subgraph yet. The shipping field on Order is defined but no team is responsible for implementing it. The supergraph is the API you want.

Step 2: Assign to Subgraphs

The architect assigns the new type to an existing subgraph, or if necessary, creates a new one.

When this happens, Fission automatically does several things:

Step 3: Continuous Validation

Every edit is validated before it's applied.

Fission enforces a comprehensive set of invariants:

If any validation fails, the edit is rejected and the state remains unchanged.

A Multi‑Team GraphQL Federation Example

Let's trace through a more complex scenario to see how these steps work together.

Starting state:

The architect adds all new types and fields to the supergraph:

Step 2: Assign to subgraphs

New item Assigned to What Fission automates
InventoryInfo

From Supergraph Design to Subgraph Specs

Fission can render valid GraphQL SDL from structured state. This means the output reflects every cascading update, renamed field, and propagated directive.

Supergraph Preview

Fission can also render the full supergraph SDL at any time, ensuring the integrity of the API.

Design Decisions Behind Fission

A few architectural choices in Fission to explain:

The Bigger Picture for GraphQL Platform Teams

Fission is the algorithmic counterpart to Hub's collaboration model.

Together, they enable a coherent design and distributed implementation, allowing teams to function effectively within a federated architecture.

When to use Fission for GraphQL Federation

Situation Why Fission helps
Many teams share a federated graph Reduces coordination overhead.
Frequent schema changes across services Keeps supergraph and subgraphs consistent.
Complex entity ownership and keys Reduces manual work and errors.
Need for clearer subgraph specifications Provides concrete contracts to implement.
Desire to separate design from implementation Safe experimentation with supergraph changes.

Frequently Asked Questions (FAQ)

What is the Fission algorithm?
Fission is a stateful schema graph engine that maintains two synchronized views of a federated GraphQL schema.

Does Fission replace the Federation composition process?
No. Fission operates at design time, while Federation composition operates at build time.

Can Fission handle existing federated graphs?
Yes. Fission can import existing federated graphs and decompose proposed changes.

How does Fission handle subgraph assignment for new fields?
The architect decides which subgraph should own a new field, and Fission automates the rest.