โ๏ธ 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_nametocustomFieldName
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.