Round robin
Everyone plays everyone, in one or more groups, with a league table.
| Team | P | W | D | L | +/- | Pts |
|---|---|---|---|---|---|---|
| 1Orcas | 3 | 2 | 0 | 1 | 5 | 6 |
| 2Wolves | 3 | 2 | 0 | 1 | 1 | 6 |
| 3Ravens | 3 | 2 | 0 | 1 | 1 | 6 |
| 4Falcons | 3 | 2 | 0 | 1 | 0 | 6 |
| 5Herons | 3 | 1 | 0 | 2 | -2 | 3 |
| 6Lynx | 3 | 0 | 0 | 3 | -5 | 0 |
Group A
Round 1
- Falcons1Ravens0
- Wolves1Orcas0
- Herons2Lynx0
Round 2
- Orcas3Falcons0
- Ravens1Lynx0
- Wolves1Herons0
Round 3
- Falcons2Lynx0
- Orcas3Herons0
- Ravens1Wolves0
Round 4
- HeronsFalcons
- LynxWolves
- OrcasRavens
Round 5
- FalconsWolves
- HeronsRavens
- LynxOrcas
import { Bracket, roundRobin, standings } from 'react-brackets';
const stage = roundRobin(teams, { groups: 2, legs: 2 });
const table = standings(stage, stage.groups[0].id);| Option | Default | Description |
|---|---|---|
groups | 1 | Splits participants into groups, snake seeded so the top seeds spread out. |
legs | 1 | 2 plays every pairing twice with sides swapped. |
groupName | Group 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.