Skip to Content
react-brackets

Data model

Stages, groups, rounds, matches, slots and participants, field by field.

A stage is the whole competition phase. It holds groups (a bracket, a losers bracket, a round robin group), each group holds rounds, each round holds matches, and each match has two slots that participants fill. Everything is a plain, serialisable object.

Stage
├─ participants: Participant[]
└─ groups: Group[]
   └─ rounds: Round[]
      └─ matches: Match[]
         └─ slots: [Slot, Slot]

You rarely build these by hand. A format function or fromRounds creates them, and reportResult updates them. Read them to render custom matches, standings or anything else.

Stage

Prop

Type

format is one of single-elimination, double-elimination, round-robin, swiss or custom.

Group

Prop

Type

kindMeaning
bracketA knockout bracket.
winnersThe winners bracket of a double elimination stage.
losersIts losers bracket.
grand-finalIts grand final, and the optional reset.
third-placeThe match between the semifinal losers.
poolA round robin group, or a Swiss table.

Round

Prop

Type

Match

Prop

Type

statusMeaning
waitingAt least one side is still to be decided.
readyBoth sides are known and the match can be played.
liveIn progress, reported with live: true.
completedFinished, or resolved by a bye.
skippedWill never be played, like an unused bracket reset.

Match ids

Generated ids read as {stage}.{group}.r{round}.m{match}, counting from 1:

IdMatch
main.r1.m1Single elimination, first match of round 1
main.wb.r2.m1Double elimination, winners bracket, round 2
main.lb.r1.m2Double elimination, losers bracket, round 1, match 2
main.gf.r1.m1Grand final
main.third.r1.m1Third place match
main.g2.r3.m1Round robin, group 2, round 3

Slot

Prop

Type

SlotOrigin

Prop

Type

MatchCondition

Prop

Type

Participant

Prop

Type

Id is a string, SlotIndex is 0 | 1, and Meta is Record<string, unknown>.

On this page