The blog
Shopify development,
written down properly.
Tutorials and explanations from the team building learnshopify.dev. Production Liquid patterns, the object model, theme architecture, and the judgment AI tools still get wrong.
How to show review stars on Shopify collection product cards
Add star ratings to the product cards in a Shopify collection grid by reading the reviews.rating metafield your review app maintains. Here's the Liquid for the stars, the review count, accessibility, and hiding the block for products with no reviews.
Read postHow to become a Shopify developer in 2026 (a realistic roadmap)
A step-by-step roadmap to becoming a Shopify developer in 2026: what to learn, in what order, what to skip, and how the job changed now that AI writes the code.
Read postDo you still need to learn Shopify development in the AI era?
AI writes Liquid in seconds, so is learning Shopify development still worth it in 2026? Yes, but the skill shifted. Here's what actually makes a Shopify developer valuable now.
Read postShopify sections, blocks & theme blocks explained (Horizon, 2026)
Sections, blocks, and the newer theme blocks confuse almost everyone. Here's how they actually fit together in Shopify's current Horizon architecture, with when to reach for each.
Read postHow to build a free shipping progress bar in Shopify (no app)
A complete guide to building a "You're $12.00 away from free shipping" cart bar in Shopify with Liquid — the code, the cents-vs-dollars trap, live cart updates, styling, and how to make the threshold a merchant setting. No app required.
Read postHow to format money and currency in Shopify Liquid
Shopify stores prices in cents, so {{ product.price }} renders as 1899, not $18.99. Here's how the money filter works, the difference between money and money_with_currency, and why hardcoding a $ breaks international stores.
Read postHow to display product metafields in a Shopify theme
Metafields are how you add custom data to Shopify products — ingredients, specs, care instructions. Here's how to read them in Liquid, handle the different metafield types correctly, and render rich text and references without breaking.
Read postHow to add a sale badge in Shopify with compare_at_price
Show a "Sale" badge (or a percentage off) on discounted products in Shopify using compare_at_price. Here's the Liquid, how to calculate the discount percentage, and how to handle products with multiple variants correctly.
Read postHow to truncate product titles and text in Shopify Liquid
Keep long product titles from breaking your grid. Here's the difference between Shopify's truncate and truncatewords filters, how to set a custom ellipsis, and why you should strip HTML before truncating a description.
Read postHow to loop through products in a Shopify collection with Liquid
Render a grid of products from a collection using Liquid's for loop. Here's how to limit the count, access the loop index, handle empty collections, and why you should paginate large collections instead of looping all of them.
Read postHow to set fallback values in Shopify Liquid (the default filter)
Stop empty fields from leaving holes in your theme. Here's how Shopify's default filter works, the difference between empty, blank, and nil, and the allow_false gotcha that catches everyone with booleans.
Read postHow to show "from" pricing for products with variants in Shopify
When a product has variants at different prices, a single price is misleading. Here's how to show "From $18.99" with price_min and price_max in Shopify Liquid, and only when the variants actually differ.
Read postHow to show a low-stock warning in Shopify (Only 3 left)
Add urgency with a "Only 3 left in stock" message in Shopify using variant.inventory_quantity. Here's the Liquid, the inventory-tracking gotcha that shows negative or zero counts, and how to handle variants correctly.
Read post