Skip to Content
react-brackets

Round robin

Everyone plays everyone, in one or more groups, with a league table.

TeamPWDL+/-Pts
1Orcas320156
2Wolves320116
3Ravens320116
4Falcons320106
5Herons3102-23
6Lynx3003-50

Group A

Round 1

  1. Falcons1
    Ravens0
  2. Wolves1
    Orcas0
  3. Herons2
    Lynx0

Round 2

  1. Orcas3
    Falcons0
  2. Ravens1
    Lynx0
  3. Wolves1
    Herons0

Round 3

  1. Falcons2
    Lynx0
  2. Orcas3
    Herons0
  3. Ravens1
    Wolves0

Round 4

  1. Herons
    Falcons
  2. Lynx
    Wolves
  3. Orcas
    Ravens

Round 5

  1. Falcons
    Wolves
  2. Herons
    Ravens
  3. Lynx
    Orcas
import { Bracket, roundRobin, standings } from 'react-brackets';

const stage = roundRobin(teams, { groups: 2, legs: 2 });
const table = standings(stage, stage.groups[0].id);
OptionDefaultDescription
groups1Splits participants into groups, snake seeded so the top seeds spread out.
legs12 plays every pairing twice with sides swapped.
groupNameGroup A, B…(index) => string

Every round is a column of matches. An odd group gets a rest round, so nobody plays twice in one round.

Standings

standings(stage, groupId?, options?) ranks by points, then score difference, then score, then seed. Draws count, and the points are configurable:

standings(stage, undefined, { points: { win: 2, draw: 1, loss: 0 } });

Each row has participantId, played, wins, draws, losses, scored, conceded and points. The table is yours to render, with shadcn/ui, a data grid, or plain HTML.

Every option, with its type and default, is in the API reference.

On this page