Part 3: How Horizon Theme Blocks Work

Brandon Landgraff

Shopify’s Online Store 2.0 introduced one of the most powerful developer features to date: theme blocks. But understanding how blocks — especially group blocks — actually work can feel a bit abstract until you see them in action.


In this video, we break it down from both a merchant-friendly and developer-focused lens, using the popular Horizon theme and Shopify’s Skeleton theme as our playground.


What Are Group Blocks?


Group blocks are like containers for other blocks. Imagine a layout where each row might have a heading, description, and image — and you want to reuse that group multiple times.


With Horizon (and Flexi), group blocks let you define entire content chunks in a clean, modular way. It’s how you go from a static section to something reusable, reorderable, and totally flexible — without extra markup clutter or rigid settings.


Part 1: Visualizing Group Blocks in Horizon

 

We started the video by exploring how Horizon implements group blocks. You’ll see:

  • How nested content appears in the theme editor
  • Why groups make it easier for merchants to customize layouts
  • What it looks like when you add, remove, or reorder a group block


This part is great for merchants, designers, or developers looking to understand why blocks matter — not just how to build them.


Part 2: Building a Text Block with Shopify Skeleton


In the second half of the video, we opened up Visual Studio Code and got hands-on using the Shopify Skeleton Theme.


We created a simple text-block section using:

  • type: block schema definitions
  • Clean markup using {{ block.settings.text }} and block.shopify_attributes
  • Presets to pre-fill demo content for a smooth onboarding experience


The goal was to show how simple it is to create modular content areas — and how Shopify’s block structure scales with you as you build out custom layouts.


Developer Tips from the Video

 

  1. Use block.shopify_attributes to keep blocks compatible with drag-and-drop editing
  2. Keep block types specific (text_block, image_row) to make your logic clear
  3. Use presets to help users visualize content before they start customizing
  4. Group blocks can be used recursively for complex layouts (e.g. FAQs inside tabs)
Back to Resources