Did you know that Shopify now has built in support for CI workflows? 
Shopify Development news and articles
Liquid Weekly

Karl Says

I'm currently enjoying "second winter" here in central Ohio. An early Merry Christmas to you all!

News & Articles

Shopify Store 2.0 Storefront Filters Explained
Filters on the Collection and Search page of the Shopify theme are very important. In this video I will explain how they work in simple terms.
Recording & Links for Post-purchase strategies to boost your AOV
A post-purchase offer is just as it sounds. After your customer completes the purchase online, you can show them additional products. Think of it like candy at the checkout counter. They may have completed their purchase, but since they are here, why not add something else to their order before they leave.
Dawn product page link/popup for only certain products
Dawn has a product information section block called "Pop-up" that we could extend to provide the same base functionality. It already lets you provide text that is used as a link which triggers a pop-up and the contents of that pop-up can come from a page record or metafield. The main thing missing is the ability to conditionally show this for only certain products.
Turbo Rails Tutorial
Learn how to leverage the power of the turbo-rails library now included by default in Rails 7 to write reactive single-page applications without having to write a single line of custom JavaScript.
Spent weeks on auth, again? Building yet another full text search?

WELL DON'T. Let Gadget's instant APIs and built-in state machines do the busywork, so that you can focus your time on writing the code that matters. Build and scale apps in a fraction of the time it takes today by skipping the boilerplate.

Try it for free, today

Code & Tools

The Code Review Pyramid
When it comes to code reviews, it’s a common phenomenon that there is much focus and long-winded discussions around mundane aspects like code formatting and style, whereas important aspects (does the code change do what it is supposed to do, is it performant, is it backwards-compatible for existing clients, and many others) tend to get less attention.
Build a referral program for your client and earn $100
Conjured Referrals is an app built by devs, for devs. That's why we want to reward devs for recommending us to their clients. Install the app free on any development store, and check out the top 3 ways using Conjured Referrals will make you look good in the eyes of your clients.
Customizable Announcement Bar - Part 1
Today we will be coding a customizable announcement bar for our Shopify store. Whether you want to create this for yourself or for a client, learning how to navigate Shopify's backend is a valuable skill to have!
Using Shopify CLI for continuous integration
In this tutorial, you'll learn how to set up your CI/CD pipeline to push your scripts and app extensions programmatically. To do so, you'll gather the information necessary to run the CLI commands programmatically, and then add a step to your CI/CD pipeline that installs the Shopify CLI and pushes your app extension or script to Shopify.
Cut your Rails boot times on Heroku in half with a single command
The bootsnap gem has been a default Rails gem since version 5.2 which was released back in 2018 and has been improving boot times in most environments ever since. But what about on Heroku?



Changes to metafield definition error codes
As of GraphQL Admin API version 2022-04, an error returns when a metafield definition is created with invalid characters in either the key or the namespace fields. The key and namespace fields can contain only alphanumeric characters, hyphens, and underscores.


New theme editor setting types: product list and collection list
Two new input setting types have been added to the theme editor: product_list and collection_list. They allow merchants to quickly create curated, ordered and paginatable lists of products and collections. Learn more about product_list and collection_list on shopify.dev.


CI/CD support for scripts, extensions
Developers can now programmatically push their scripts and extensions to Shopify from their CI/CD pipelines with CLI authentication tokens. For more information on how to set up CI/CD for your scripts and extensions, visit our developer documentation.


March 29th - More organic traffic without fighting for rankings
Let's bring more qualified buyers to your Shopify store using the free search enhancement systems Google, Bing, Pinterest, and other search engines. After this presentation, you’ll understand: - What search enhancements are - How your store can qualify for them - Warning signs that something could be wrong (and what to ignore) - How to solve common search enhancement problems
April 13 - Introduction to Working With Shopify Themes
Following this practical workshop you’ll be able to set up a local development environment and edit theme code to customize an example storefront. We’ll also explore Shopify’s Liquid templating language and learn how it can be leveraged to display dynamic store content.


Shopify - Lead/Staff Production Engineer (Remote, Americas and Europe)
If the idea of working on one of the most impactful component of infrastructure that has a reach to every single application (hundreds of them) across our infrastructure, serving millions of requests per minute excites you, join us!
Content Marketing Manager, FT, Remote
The ideal candidate loves writing and topic research but also understands how to structure the article from the SEO point of view. We expect someone who will be autonomous and data-driven. Knowledge of the Shopify environment is a big plus, but general e-commerce understanding is fine, too.
Technical Lead, FT, Remote
Invisible Themes is looking for a full-time Technical Lead with deep Javascript knowledge to join our growing team! You will be building features, writing exemplary code for the development team to follow and defining the development roadmap.

Tip of the Week

Dynamic Variable Assignment

Hopefully you know that you can assign and use variables in liquid (if not, we need to talk..)

But what about situations where you need to dynamically create the variable name?

For example, what if you have five metafields to represent carousel slide data and want to loop through them?

It's possible - with the clever use of the append tag


﹛% for i in (1..5) %﹜

﹛% assign objectName = ‘image_carousel_slide_’ | append:i %﹜

﹛% if collection.metafields.my_fields[objectName] != blank %﹜

image carousel slide has content

﹛% endif %﹜

﹛% endfor %﹜

Thanks to Mathews Joseph for the excellent tip!