Conditional settings feedback

Short description of issue

Incomplete visible_if support defeats the purpose of conditional settings

Reproduction steps

Additional info

As of now, here is the list of unsupported types per the documentation:

  • article
  • blog
  • collection
  • collection_list
  • color_scheme_group
  • metaobject
  • metaobject_list
  • page
  • product
  • product_list

It’s fair to say that any remotely useful Shopify section will contain at least one of these. And conditional settings being only as useful as its least-supported setting type, I hope it’s easy to see that the functionality is useless as is.

Everytime it’s the same pattern. I try to design my section setting interface with the conditional settings in mind, just to be gatekept from a clean interface because I follow Shopify recommendations and rely on metaobjects.

Can someone please do something about it, I want to use conditional settings, it’s just not possible to this day !

What type of topic is this

Feature request

5 Likes

And please, read multiple times if needed, but do not mistake my intention with this post:

I’m not asking for more support inside the condition

I understand there are technical obstacles on this front and will not argue on them.

I’m merely suggesting that this pattern should be achievable:

{% schema %}
  {
    "type": "...",
    "settings": [
      {
        "type": "header",
        "content": "Custom configuration"
      }
      {
        "type": "checkbox",
        "id": "is_custom",
        "label": "Use custom configuration"
      },
      {
        "type": "metaobject",
        "metaobject_type": "...",
        "id": "custom_configuration",
        "label": "Custom configuration",
        "visible_if": "{{ section.settings.is_custom == true }}"
      }
    ]
  }
{% endschema %}

As well as this one:

{% schema %}
  {
    "type": "...",
    "settings": [
      {
        "type": "header",
        "content": "Product recommendations"
      }
      {
        "type": "select",
        "id": "recommendations_strategy",
        "label": "Strategy",
        "options": [
          {
            "value": "automatic",
            "label": "Automatic"
          },
          {
            "value": "manual",
            "label": "Manual"
          }
        ],
        "default": "automatic"
      },
      {
        "type": "paragraph",
        "content": "Recommendations will be managed with Shopify algorithm",
        "visible_if": "{{ section.settings.recommendations_strategy == 'automatic' }}"
      },
      {
        "type": "product_list",
        "id": "recommended_product_list",
        "label": "Custom configuration",
        "visible_if": "{{ section.settings.recommendations_strategy == 'manual' }}"
      }
    ]
  }
{% endschema %}

This is the bread and butter of any serious Shopify theme developer in 2025. Nothing fancy really, simply checking boolean states and selected strings across settings.

But to this date, it’s something that cannot be achieved and it’s a real shame. I will repeat once again: Incomplete visible_if support defeats the purpose of conditional settings.

Please think about it, RFC more often, be transparent if there are obstacles, we are partners.

1 Like

I was also dazzled when i tried to hide product_list and collection_list just to find out that it throws an error. The cases are numerous, i don’t see absolutely any reason why there are limits to visible_if. Developers should have the possibility to hide any field type.

1 Like

Totally agree - I think this has been mentioned multiple times before but I’ve never read an official answer from Shopify staff. Would be very great to have.

1 Like

What hasn’t been mentioned here yet (but of course is in the documentation) follows up with the unfortunate in-ability to use dynamic data sources of visible_if supported input types, due to the same resolved value issue.

If you have some kind of visible_if that is based on the value of a color or text (weird but stay with me here), the condition will not execute if a Dynamic Source is used. Once again, it is kind of weird to use these types as visible if. However, what if a text field is required and you want to display a warning if it is empty? Well if you use a dynamic data source you will not get an accurate evaluation. You can always hack it with request.design_mode liquid checks and display something in the theme editor, but I would like to cover every base I can.

My grip is a little more niche. I remember when visible_if was first released doing a bunch of tests with all types of inputs and seeing what values could be leveraged and I tested with text and color dynamic and “static”. Hell, for a short time even handle based checks on product input values was supported due to the Liquid fallback out outputting the handle. I think I had a thread on this.