Variant support is rolling out. It is not yet live on all products.
Shape
product.variants is either null (no variations) or:
Full guide
For rendering selectors,exists vs available, and fetching a specific configuration, see the Variants guide.