Skip to content

Shopify Dude Complete Guide

Shopify Can Now Publish Variants Independently: When to Stop Hiding Variants in Theme Code

API 2026-07 makes ProductVariant publishable per channel or catalog. Here’s when variant-level publishing is better than Liquid hiding, product duplication, or deleting variants.

Quick answer

In Shopify API version 2026-07, ProductVariant is a publishable resource. Apps can publish or unpublish individual variants per publication using the standard publishable APIs. If you have been hiding unavailable variants with Liquid, duplicating products by channel, or deleting variants simply to prevent exposure, variant-level publishing may now be the cleaner data-layer solution.

On this page

What changed

Historically, Shopify publication was primarily product-level: publish the product to a channel or catalog, then use inventory, theme logic, market rules, or separate products to control what buyers actually saw. API 2026-07 adds publication state directly to variants.

A product still has to be active and published to the relevant publication. Product-level publication takes precedence. But once the parent product is available, individual variants can be unpublished from a publication without deleting them.

Where this is useful

The strongest use cases are operational, not cosmetic: a color that should exist in the master product but not on a particular channel; a variant that should be prepared in advance without being exposed; catalog or channel-specific assortments; and integrations that need a real availability state instead of a storefront-only hiding rule.

This can eliminate a common anti-pattern where Liquid removes a variant from a picker but the underlying variant remains discoverable elsewhere. Theme code changes presentation. Publication state changes whether the resource is published to that publication.

Implementation details

ProductVariant now implements Shopify’s Publishable interface. Apps can use publishablePublish and publishableUnpublish with variant IDs, and can inspect publication state through fields such as resourcePublicationsV2 and publishedOnPublication.

New variants remain published by default in the parent product’s publications. If an app needs to create a variant without exposing it immediately, Shopify added a published: false option to variant input in workflows including productSet and productVariantsBulkCreate.

Apps using Shopify product feeds generally do not need a special migration just to keep feeds functioning. Apps that behave like channels but read publication state directly should update their model so variant publication is not inferred solely from the parent product.

Do not remove your theme logic blindly

Variant publication and variant presentation solve different problems. A theme may still need logic for sold-out ordering, swatch presentation, option grouping, or market-specific messaging. Replace theme hiding only when the real requirement is “this variant should not be published here.”

Common misunderstanding

“Unpublishing a variant means I can ignore the product’s publication state.”

No. The parent product must still be active and published to the channel or catalog. Variant publishing is an additional layer of control underneath product publication, not a replacement for it.

How to test this

Use a test product with at least two variants and a non-production publication where possible. Confirm both variants are initially visible. Unpublish one variant from that publication, then verify the storefront or channel behavior and your app’s publication query. Republish it and confirm it returns. Finally, create a new variant and verify the default-published behavior before adopting published: false in automation.

Sources and further reading