Grid
The container-measured auto-fit tile grid. minTileWidth sets the floor (default 240): the grid fits as many equal-width columns of at least that width as its own measured container allows, and re-fits as the container changes, so the same grid renders three-up on a desktop, two-up on a tablet, and a single column on a phone with no breakpoint at the call site.
columns caps the count at the desktop number, the gap scale is Row and Column's own (flush / tight / snug / cozy / relaxed / loose), and a GridItem child with wide spans two cells. The grid spans its parent's full width (it is a FILL component, so it needs no wrapper to reach the edges), and its tiles are equal-height as well as equal-width: every cell stretches to the height of the row it wrapped onto, and a Card in a cell grows to fill it, so a row of cards shares a flush bottom edge however unevenly their content runs (CSS Grid's align-items: stretch). A field or a hug component keeps its own height. Equal-width tiles belong here; content-sized rows that should stack at narrow widths belong to Row stacks.
Overview
Deploys
Alerts
iOS
Overview
Deploys
Alerts
Android
Overview
Deploys
Alerts
Web
tsx
Default
Capped columns
Wide tile
Equal heights
Tight gap
Props
Grid
GridItem
Do & Don’t
Column math
Don’t
Hand-roll percent tile widths on a wrapping Row; the column count is then frozen at the call site and every consumer re-derives the phone collapse by hand.
Do
Overview
Deploys
Alerts
Give the grid a tile floor (and optionally a desktop cap) and let it fit its container.