โ๏ธ getProductVariant()
Options
Complete reference for all available options when using getProductVariant()
.
๐ Required Optionsโ
variantId
(required)โ
- Type:
string
- Description: The Shopify variant ID to fetch
- Format:
"gid://shopify/ProductVariant/123456789"
await getProductVariant({
variantId: "gid://shopify/ProductVariant/123456789",
});
๐ Field Selectionโ
productFields
โ
- Type:
string[]
- Default:
["id", "title", "handle"]
- Description: Additional product fields to include beyond defaults
Available Fields:
"vendor"
- Product vendor/brand"productType"
- Product type category"tags"
- Product tags array"descriptionHtml"
- Product description HTML"description"
- Product description plain text"images"
- All product images"featuredImage"
- Featured product image"variants"
- All product variants"seo"
- SEO title and description"createdAt"
- Creation timestamp"updatedAt"
- Last update timestamp
await getProductVariant({
variantId: "gid://shopify/ProductVariant/123456789",
productFields: [
"vendor",
"productType",
"tags",
"descriptionHtml",
"images",
"variants",
"seo",
],
});
variantFields
โ
- Type:
string[]
- Default:
["id", "title"]
- Description: Additional variant fields to include beyond defaults
Available Fields:
"price"
- Variant price"compareAtPrice"
- Compare at price"availableForSale"
- Availability status"selectedOptions"
- Selected option values"image"
- Variant-specific image"sku"
- SKU identifier"barcode"
- Barcode value"weight"
- Variant weight"weightUnit"
- Weight unit"requiresShipping"
- Shipping requirement"taxable"
- Tax status"inventoryQuantity"
- Inventory count"inventoryPolicy"
- Inventory policy
await getProductVariant({
variantId: "gid://shopify/ProductVariant/123456789",
variantFields: [
"price",
"compareAtPrice",
"availableForSale",
"selectedOptions",
"image",
"sku",
"weight",
],
});
๐ท๏ธ Metafieldsโ
productMetafields
โ
- Type:
CustomMetafieldDefinition[]
- Description: Product metafields to include in results
variantMetafields
โ
- Type:
CustomMetafieldDefinition[]
- Description: Variant metafields to include in results
await getProductVariant({
variantId: "gid://shopify/ProductVariant/123456789",
productMetafields: [
{ field: "custom.brand", type: "single_line_text" },
{ field: "custom.warranty_years", type: "number_integer" },
{ field: "custom.specifications", type: "rich_text" },
],
variantMetafields: [
{ field: "custom.sku", type: "single_line_text" },
{ field: "custom.weight", type: "weight" },
{ field: "custom.dimensions", type: "single_line_text" },
],
});
CustomMetafieldDefinition
โ
interface CustomMetafieldDefinition {
field: string; // e.g., "custom.brand"
type: MetafieldType; // e.g., "single_line_text"
}
Supported Metafield Types:
"single_line_text"
"multi_line_text"
"rich_text"
"number_integer"
"number_decimal"
"date"
"date_time"
"boolean"
"url"
"json"
"color"
"weight"
"volume"
"dimension"
"rating"
"file_reference"
"page_reference"
"product_reference"
"variant_reference"
"collection_reference"
๐ง Processing Optionsโ
options
โ
- Type:
object
- Description: Additional processing options
await getProductVariant({
variantId: "gid://shopify/ProductVariant/123456789",
options: {
camelizeKeys: true,
resolveFiles: true,
renderRichTextAsHtml: true,
transformProductMetafields: (raw, casted) => ({
...casted,
summary: `${casted["custom.brand"]} - ${casted["custom.model"]}`,
}),
transformVariantMetafields: (raw, casted) => ({
...casted,
displayName: `${casted["custom.sku"]} (${casted["custom.weight"]})`,
}),
},
});
Processing Options Details:โ
camelizeKeys
- Type:
boolean
- Default:
true
- Description: Convert metafield keys from
custom.field_name
tocustomFieldName
resolveFiles
- Type:
boolean
- Default:
true
- Description: Automatically resolve file metafields to full URLs
renderRichTextAsHtml
- Type:
boolean
- Default:
false
- Description: Convert rich text metafields to HTML strings
transformProductMetafields
- Type:
MetafieldTransformFn
- Description: Custom function to transform product metafields
transformVariantMetafields
- Type:
MetafieldTransformFn
- Description: Custom function to transform variant metafields
MetafieldTransformFn
โ
type MetafieldTransformFn = (
raw: Record<string, any>,
casted: Record<string, any>
) => Record<string, any>;
๐งช Complete Exampleโ
const result = await getProductVariant({
variantId: "gid://shopify/ProductVariant/123456789",
productFields: [
"vendor",
"productType",
"tags",
"descriptionHtml",
"images",
"variants",
"seo",
],
variantFields: [
"price",
"compareAtPrice",
"availableForSale",
"selectedOptions",
"image",
"sku",
"weight",
],
productMetafields: [
{ field: "custom.brand", type: "single_line_text" },
{ field: "custom.warranty_years", type: "number_integer" },
{ field: "custom.specifications", type: "rich_text" },
],
variantMetafields: [
{ field: "custom.sku", type: "single_line_text" },
{ field: "custom.weight", type: "weight" },
{ field: "custom.color_code", type: "color" },
],
options: {
camelizeKeys: true,
resolveFiles: true,
renderRichTextAsHtml: true,
transformProductMetafields: (raw, casted) => ({
...casted,
displayBrand: casted.customBrand?.toUpperCase(),
warrantyText: `${casted.customWarrantyYears} year warranty`,
}),
transformVariantMetafields: (raw, casted) => ({
...casted,
displayWeight: `${casted.customWeight?.value} ${casted.customWeight?.unit}`,
}),
},
});
โ Back to: Overview โ
Description
Complete reference for getProductVariant options including fields, metafields, and processing options.