Dev.to
7/16/2026

The Liquid you lint isn't the Liquid Shopify runs
Short summary
Shopify's local linting tools run LiquidJS, a JavaScript reimplementation, while the live storefront uses Shopify's Ruby engine — and the two don't handle whitespace control identically. When whitespace is load-bearing (splitting strings, pre blocks, JSON blobs), local validation can pass while production breaks. The rule: lint locally, but render whitespace-critical templates on the real Shopify engine before trusting them.
- •Local Shopify linters use LiquidJS, not the Ruby engine that serves production — whitespace handling differs
- •Whitespace-sensitive code (string splits, pre blocks, JSON) can break in production despite clean local linting
- •Lint locally for syntax/schema, render on live Shopify when whitespace is load-bearing
Generated with AI, which can make mistakes.
Is this a good recommendation for you?


