RadioGroup turns a set of RadioButtons into one field: a radiogroup named by its label, one value, one name for the form, and one stop in the page's Tab order. Describe the choices with options.
Without value or defaultValue, nothing is selected until someone picks an option. Without a visible label, name the group with aria-label.
Pass value and onChange when something else owns the choice. onChange gets the new option's value, and is not called for the option already selected.
orientation="horizontal" lays the radios out in a row that wraps. The arrow keys work the same way in both orientations.
disabled on an option keeps it visible and skips it with the arrow keys. disabled on the group disables every radio, and a disabled group submits nothing.
For a layout options cannot describe, such as radio cards in a grid, put RadioButtons with a value anywhere inside the group. The group owns their checked state, name, disabled and focus, and a RadioButton's own onToggle still runs when it is picked. options, when given too, render first.
Give the group a name and a form submits the selected value under it, as a set of native radios would. Nothing is submitted while no option is selected.
Only the selected radio is in the page's Tab order, or the first enabled radio while none is selected, so Tab moves past the whole group in one step.
Selection follows focus, as it does for native radios: a radio group is one choice, and moving through it is how you make it.