Accentuate Custom Fields
  • Welcome!
  • Introduction
    • Getting started with ACF
    • Field scopes
    • How to show fields in your storefront
  • Dashboard
    • Reference Manager
      • Creating a new reference within Reference Manager
    • Filter & Group
      • Filter editor
      • Filter usage
    • Activity log
    • App settings
  • Field Definitions
    • Fields & Sections
    • Deciding on a field type
    • ACF Field types
      • Text
      • Markdown text
      • HTML
      • Checkbox
      • Selection
      • Tags
      • Number
      • Date
      • Color
      • Media v1 (legacy)
      • Media v2
      • Custom Object (JSON)
      • Multi-language Text
      • Reference fields
      • References to Global fields
    • Shopify Field types
      • Shopify » Single line text
      • Shopify » Multi-line text
      • Shopify » Boolean
      • Shopify » Color
      • Shopify » Custom objects (JSON)
      • Shopify » URL
      • Shopify » Date
      • Shopify » Date and Time
      • Shopify » Integer
      • Shopify » Decimal
      • Shopify » Weight
      • Shopify » Volume
      • Shopify » Dimensions
      • Shopify » Reference fields
    • Automatic tagging
    • Large sets
    • Field contexts
    • Field context filters
    • Copy and paste fields
    • Change field name and type
    • Import existing fields
    • Linking multiple stores
  • The Editor
    • Using the editor
    • Promote fields to sidebar
    • Layouts
    • Hide from search
    • Repeatable fields
    • Version control
    • Update value on order creation
  • Bulk Import & Export
    • Export custom field values
    • Import custom field values
    • Metaobject export / import
  • METAOBJECTS
    • What are Metaobjects?
    • Metaobject Definitions
    • Metaobject instances / values
    • Displaying Metaobjects on your storefront
    • Metaobject export / import
  • THEME EXTENSIONS
    • SEO keywords
    • Sticky promo bar
    • Products promotion
  • Liquid Guides
    • Learning Liquid
    • Resize & crop images
    • Check for empty values
    • Access field definitions
    • Order notifications
    • Allow customers to change their field values
  • OTHER
    • Webhooks
    • API
      • Access to custom fields
      • Endpoints
  • Help
    • FAQ
      • Why are one of my products no longer showing in my reference field?
      • I have multiple products/variants with the same name
      • How do I make changes to my field values in bulk?
      • I added a new field definition but it is not showing in my storefront
      • How do I copy my field setup to another store?
      • My fields are still showing after I have deleted their field definition
      • Why are none of my fields showing in the editor?
      • My newly created object in Shopify is not available in ACF
      • Reference lists are empty?
      • Why am I seeing a "value cannot exceed 100,000 characters" error when saving?
      • Why can't I name my field "first", "last" or "size"?
    • Need help?
  • Product
    • Changelog
    • Feedback & Suggestions
Powered by GitBook
On this page
  1. Field Definitions

Large sets

PreviousAutomatic taggingNextField contexts

Last updated 10 months ago

Repeatable fields in ACF are stored as data arrays in Metafields of type "json_string" which in Shopify has a storage limit of 100,000 characters. This limit may prove a challenge when working with large sets of repeatable fields, especially of types Media v2 or HTML in excess of 100-150 occurrences (sometimes fewer when working with large blocks of HTML). ACF is able to work around this limitation by distributing your content across multiple individual Metafields. This is something you need to enable on a per-field basis (due to the theme handling being different - see below) but is otherwise handled internally to give you a seamless experience when working in the ACF editor or with exports/imports.

The "automatically handle large sets of repeatable values" setting is available for all field types that can be defined as repeatable (with the exception of Shopify » ... types, see below) and for all scopes except for product types, vendors, and locations. With "large sets" enabled the storage limit is now 1,000,000 characters, which allows you to work with sets in excess of 1,000 elements.

Note that each individual occurrence (e.g a block of HTML) still needs to fit inside 100,000 characters Metafield and - in case of 10+ occurrences - this space is shared with other occurrences A rough calculation of the size limit per occurrence (for reasonably like-sized blocks) is 100,000 / ceil(#occurrences / 10)

Large sets are not available for Shopify » ... types

Required theme changes

So why is this just not enabled by default? The reasoning here is that enabling the setting requires a subtle change to your theme since the original Metafield no longer contains the actual data items but rather is a "reference object" with references to the actual data Metafields.

Example code - looping HTML blocks

This code example shows you how to loop a repeatable HTML field with "large sets" enabled:

{% for html in shop.metafields.globals.very_large_description %}
  {{ shop.metafields.globals[html.metafield][html.index] }}
{% endfor %}

Please note that the code doesn't just render the "html" loop variable as we would for a traditional repeatable field but uses it as a reference to get to the actual Metafield used to store the data for that specific entry. shop.metafields.globals should be replaced with whatever scope and namespace your field is defined under, for example, product.metafields.accentuate.

Example code - looping Media v2 fields

This code example shows you how to loop a repeatable Media v2 field with "large sets" enabled:

{% for media in shop.metafields.globals.very_large_media_set %}
  {% assign single_media = shop.metafields.globals[media.metafield][media.index] | first %}
  <img src="{{ single_media.src }}" alt="{{ single_media.alt }}"/>
{% endfor %}