Weaverse LogoWeaverse
All Articles
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

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.