Shopify / Shopify/theme-tools

{% schema %} checking of `t:` translations only seems to be checking `name` properties.

Open
#942 0 comments 0 reactions 1 assignee View on GitHub

@aswamy is already working on this.

Since Feb 5, 2026.

Bug
Dominant language
TypeScript
Stars
234
Forks
92
Avg merge
1d 3h
Merged PRs (30d)
6

Description

Describe the bug
A setting of type select should throw errors if the label of its options don't exist. Right now we have no support for those.

Looks like that's also a problem for a preset's category field

Source

{% schema %}
{
  "name": "t:general.group",
  "blocks": [{ "type": "@theme" }],
  "settings": [
    {
      "type": "select",
      "id": "layout_direction",
      "label": "t:labels.layout_direction",
      "options": [
        { "value": "group--horizontal", "label": "t:options.direction.horizontal" },
        { "value": "group--vertical", "label": "t:options.direction.vertical" }
      ],
      "default": "group--vertical"
    },
    {
      "type": "select",
      "id": "alignment",
      "label": "t:labels.alignment",
      "options": [
        { "value": "group--left-aligned", "label": "t:options.alignment.left" },
        { "value": "group--center-aligned", "label": "t:options.alignment.center" },
        { "value": "group--right-aligned", "label": "t:options.alignment.right" }
      ],
      "visible_if": "{{ block.settings.layout_direction == 'group--vertical' }}"
    },
    {
      "type": "range",
      "id": "padding",
      "label": "t:labels.padding",
      "default": 0,
      "min": 0,
      "max": 100,
      "step": 1,
      "unit": "px",
    }
  ],
  "presets": [
    {
      "name": "t:general.column",
      "category": "t:categories.alignment.left",
      "settings": {
        "layout_direction": "group--vertical",
        "alignment": "group--left-aligned",
        "padding": 0
      }
    },
    {
      "name": "t:general.row",
      "category": "t:categories.layout",
      "settings": {
        "layout_direction": "group--horizontal",
        "padding": 0
      }
    }
  ]
}
{% endschema %}

Expected behaviour
I got a couple of things in there that should show errors because the labels don't exist.

Actual behaviour
name properties seem to be linted OK.
label inside select options doesn't.
category inside preset doesn't`

Debugging information

  • OS [e.g. Windows, Mac, Linux]
  • OS Version
  • Theme Check Version [e.g. 0.1.0]

Additional context
Add any other context about the problem here.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.