Weaverse LogoWeaverse
Paul Phan
2 mins read

Shopify's New 16KB Metafield Limit: Migration Guide

Shopify reduced metafield size from 64KB to 16KB. Learn how to migrate your data, use metafield references, and avoid hitting the limit.
Shopify's New 16KB Metafield Limit: Migration Guide
Table of Contents

Shopify's New 16KB Metafield Limit: Migration Guide

Shopify announced a new 16KB limit for metafield writes starting API version 2026-04. Large metafields hurt storefront performance, and this change enforces best practices.

Storage dashboard showing 16KB metafield warning
Storage dashboard showing 16KB metafield warning

Good news: Existing large metafields remain readable across all API versions. You won't lose data.

Bad news: If your app writes >16KB to a single metafield, it will break on API 2026-04+.

Example workflow for splitting large metafield content
Example workflow for splitting large metafield content

Who's Affected?

Check if your app stores:

  • Large JSON blobs in metafields
  • Base64-encoded images or files
  • Long-form content or HTML
  • Logs or analytics data

If you're storing more than 16KB in a single metafield, you need to migrate.

Migration Strategies

1. Use Metaobjects (Recommended)

Metaobjects are designed for complex structured data. Instead of stuffing everything in one metafield, use metaobject references.

// Before: Large metafield
product.metafields.custom.config = { huge: 'json blob' }
// After: Metaobject reference
const config = await createMetaobject({
type: 'product_config',
fields: { /* structured data */ }
})
product.metafields.custom.configRef = config.id

Benefits:

  • Better performance
  • More organized data structure
  • Easier to query and filter
  • No size limits

2. Split Across Multiple Metafields

Break large datasets into smaller chunks.

// Before: One large metafield
metafield.value = JSON.stringify(hugeObject) // >16KB
// After: Multiple smaller metafields
metafield_1.value = JSON.stringify(partOne)
metafield_2.value = JSON.stringify(partTwo)

3. Use the Files API

For large content (images, documents, long text), use the Files API and store the reference URL in a metafield.

4. Use List Metafields

If you're storing multiple values, Shopify's list metafields handle arrays natively without size bloat.

Timeline

  • Now: Audit your metafield usage
  • Before April 2026: Complete migration for any >16KB writes
  • API 2026-04+: Limit enforced

Quick Audit Script

Run this to find large metafields in your app:

curl -X POST https://your-store.myshopify.com/admin/api/2026-01/graphql.json \
-H "X-Shopify-Access-Token: $TOKEN" \
-d '{"query":"{ metafields(first: 100) { edges { node { namespace key value } } } }"}' \
| jq '.data.metafields.edges[] | select(.node.value | length > 16000)'

Additional Resources

Shopify has improved other data platform features to help:

  • Higher metaobject entry limits
  • Increased metafield definition limits per resource
  • Limits apply separately per app (not tied to shop limits)

For more guidance, see Data modeling with metafields and metaobjects.

Bottom Line

If you're not writing >16KB to single metafields, you're fine. If you are, migrate to metaobjects (best option) or split the data across multiple fields.

This is a performance optimization that benefits everyone. Plan your migration early.

Building with Hydrogen? Weaverse helps you ship faster with AI-powered theme development. Get started.

Reactions

Like
Love
Celebrate
Insightful
Cool!
Thinking

Join the Discussion

Need a senior Hydrogen team?

Weaverse builds Shopify Hydrogen storefronts, with scope, delivery and launch support agreed in a written statement of work.

  • Pull-request workflow
  • Written statement of work
  • Launch support by agreement

Never miss an update

Subscribe to get the latest insights, tutorials, and best practices for building high-performance headless stores delivered to your inbox.

Join the community of developers building with Weaverse.