Skip to main content

Migrate to Theme Check 2.x

In January 2024, Theme Check 2.x was integrated into the admin code editor, the VS Code extension, and Shopify CLI.

On this page, you can learn about the differences between Theme Check 1.x and 2.x, and how to update your theme development environment accordingly.


The support for check categories has been removed in the new version. As a result, the --category and --exclude-category flags are no longer available.

The decision to remove these options was made to simplify the API and reduce the noise on the CLI's --help. While this might require some users to create a subset of the config for performance-related checks, the new framework's ability to extend multiple configurations makes this a more efficient approach. For more details about flags, please refer to the commands reference.


Anchor to Configuration changesConfiguration changes

In Theme Check 2.x, the extends option has been updated. It now supports values such as theme-check:all, theme-check:recommended, and theme-check:theme-app-extension, but also supports a list of configuration files and third-party modules. For more details, please refer to the configuration file reference.

The require option no longer supports custom Ruby checks. If you need to create your own custom checks or use a third-party set of checks with Theme Check 2.x, refer to the Creating your own checks guide.


Anchor to Check compatibility tableCheck compatibility table

Theme Check 2.x introduces changes to the collection of checks, including removals, renames, optimizations, and regrouping. The table below compares Theme Check 1.x and 2.x, outlining these changes.

Theme Check 1.xTheme Check 2.x
AppBlockValidTagsAppBlockValidTags
AssetPreloadAssetPreload
AssetSizeAppBlockCSSAssetSizeAppBlockCSS
AssetSizeAppBlockJavaScriptAssetSizeAppBlockJavaScript
AssetSizeCSSAssetSizeCSS
AssetSizeCSSStylesheetTagAssetSizeCSS
AssetSizeJavaScriptAssetSizeJavaScript
-BlockIdUsage
AssetUrlFiltersRemoteAsset
CdnPreconnectCdnPreconnect
ContentForHeaderModificationContentForHeaderModification
ConvertIncludeToRenderDeprecatedTag
DefaultLocale-
DeprecateBgsizesDeprecateBgsizes
-DeprecatedFontsOnSectionsAndBlocks
-DeprecatedFontsOnSettingsSchema
DeprecatedFilterDeprecatedFilter
DeprecatedGlobalAppBlockType-
DeprecatedTagsDeprecatedTag
DeprecateLazysizesDeprecateLazysizes
-DuplicateContentForArguments
-DuplicateRenderSnippetArguments
-EmptyBlockContent
-HardcodedRoutes
HtmlParsingErrorLiquidHTMLSyntaxError
ImgLazyLoading-
ImgWidthAndHeightImgWidthAndHeight
-JSONMissingBlock
-LiquidFreeSettings
LiquidTag-
MatchingSchemaTranslationsMatchingTranslations
MatchingTranslationsMatchingTranslations
MissingAssetMissingAsset
-MissingContentForArguments
MissingEnableComment-
-MissingRenderSnippetArguments
MissingRequiredTemplateFiles-
MissingTemplateMissingTemplate
NestedSnippet-
PaginationSizePaginationSize
ParserBlockingJavaScriptParserBlockingScript
ParserBlockingScriptTagParserBlockingScript
RemoteAssetRemoteAsset
RequiredDirectories-
RequiredLayoutThemeObjectRequiredLayoutThemeObject
SchemaJsonFormat-
-SchemaPresetsBlockOrder
-SchemaPresetsStaticBlocks
SpaceInsideBraces-
SyntaxErrorLiquidHTMLSyntaxError
TemplateLength-
TranslationKeyExistsTranslationKeyExists
-UnclosedHTMLElement
UndefinedObjectUndefinedObject
UnknownFilterUnknownFilter
-UniqueDocParamNames
-UniqueStaticBlockId
-UnrecognizedContentForArguments
-UnrecognizedRenderSnippetArguments
-UnsupportedDocTag
UnusedAssignUnusedAssign
-UnusedDocParam
UnusedSnippet-
ValidHTMLTranslationValidHTMLTranslation
ValidJsonJSONSyntaxError
ValidSchemaValidSchema
-ValidBlockTarget
-ValidContentForArguments
-ValidDocParamNames
-ValidDocParamTypes
-ValidLocalBlocks
-ValidContentForArgumentTypes
-ValidRenderSnippetArgumentTypes
-ValidSchemaName
-ValidSettingsKey
-ValidStaticBlockType

Was this page helpful?