Structured data
The label has to match the shelf.
JSON-LD is the hidden label search and assistants use when they do not want to guess from theme HTML. On a Shopify product, the useful label is a Product with an Offer: name, price, currency, availability, and an image.
Price and stock
If the page shows one price and the Offer shows another, the assistant will repeat the wrong one. The same is true for availability. In stock in the markup and sold out on the button is a contradiction, not a detail.
One product, many variants
A product with size or colour options should not collapse to a single Offer when the shop sells several variants at different prices. Breadcrumbs help a collection page. The homepage should name the shop, not a product that is not on that URL.
Where to check
Paste the exact URL into the SEO check. Fix the red rows in the theme or the app that prints the script. Do not add a second JSON-LD block that disagrees with the first.