Watch a video about how to create and sell a theme. Level up your liquid and Database skillz 
Shopify Development news and articles
Liquid Weekly

Karl Says

Sorry this is a day late - my email list provider was having some trouble yesterday. This issue has a lot of stuff about relational databases. DBs and SQL are awesome and whether you focus on front-end or backend you're sure to learn something helpful.

News & Articles

How to create a Shopify Theme from scratch
Jan talks with Liam from Shopify about how to build and Sell your own custom theme on the Shopify theme store.
Cloudflare Introduces Relational Database Connectors
Cloudflare recently announced support for relational databases, including Postgres and MySQL from Workers. For those building (or considering building) apps using Cloudflare for their infrastructure this opens up some new and exciting possibilities. Read about the technical details of how they managed to do it.
Make paginated requests to the REST Admin API
If you've worked with the REST admin API then you've likely needed to deal with pagination. Here's the official guide to getting the most out of cursor based pagination with the REST API (because not everyone uses GraphQL!)
Liquid Variables, Assignments, and Naming Conventions
Learn the fundamentals of how Liquid variables, assignments and naming conventions work.

Code & Tools

HypeCart - Cart Drawer app with Awesome Upsell Features
HypeCart is an app that provides a slick slide in cart with incredible support for upsells. This past month the ROI for merchants was over 7000%! You can add free gifts to the cart automatically, set upsells based on the cart contents and create good looking progress bars for free shipping and more. After a purchase is made you can add additional upsells using the thank you page builder.
Check it out today and start your free 7 day trial (free for development stores)
Clean SQL Tricks
Make your SQL more readable by breaking out intermediate values, prioritizing tight feedback loops, and using clear constant values
DBeaver - Universal Database Tool
Speaking of SQL, DBeaver is a free multi-platform database tool for developers, database administrators, analysts and all people who need to work with databases. Supports all popular databases: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Apache Hive, Phoenix, Presto, etc.
Learn Vim fast
Vim is a ubiquitous editor on almost any system with a Unix heritage. Every person should at least learn how to exit vim - but for the brave at heart, learning vim unlocks a new way of working with text that has to be experienced to be understood. Take a little time this holiday season and try out some beginning exercises for yourself



Adding new enum value for handling processing errors for Model3d objects
MediaErrorCodes and FileErrorCodes will now include a new enum value named MODEL3DPROCESSINGERROR that is used for when 3D models fail to process after being uploaded to Shopify.
Adding mediaWarnings and 3D model bounding box information
Media objects in the Admin API now includes mediaWarnings which returns information about a media item that might require attention such as when a 3D Model is incorrectly scaled. Data about the warning can be retrieved using the associated MediaWarningCode and message string.
Model3d objects now include a new field boundingBox that returns a Model3dBoundingBox object. The bounding box of the 3D model is the size of the model described by a box that surrounds the model.


Shopify Flow - use AND/OR for the same item in a list
Shopify Flow is only available to Shopify Plus customers. In a Flow Condition, you can now check if more than one condition matches for a single item in a list. Common use cases include:
  • Check whether a metafield with a specified namespace and key has a certain value. (example template)
  • Check whether an inventory item is available at a specified location. (example template)
  • Check whether an order contains a product that matches multiple conditions.
New Unified Login Component for Shop Pay with Email Code Auth
Shopify just released a new login component for all Shop Pay users in checkout. This will help users authenticate with an email code when they have issues receiving their SMS code


Front-End, Remote, Hourly
Front end ‘Shopify’ (2.0) dev required to work with existing dev on a Dawn2.0 theme customization. From layout changes, styling customization and some custom JS driven functionality. Project on Jira/task by task Github PRs/comms on slack. Hourly rate fitting skills and experience. Fluent written and verbal English essential.
Front-End, Freelance
Awtomatic is looking to hire a support engineer for our app's onboarding team. Likely a fit for someone that is interested in freelance or contract-to-hire type engagement. Ideal candidate is in US/CA friendly timezones.
Senior Full-Stack Rails Shopify app Developer, Remote, FT
Chargezen works with several Shopify brands needing custom modifications to our existing Shopify app; & are continuously adding new features. We’re looking for a Full-stack Rails Shopify app ninja able to provide technical direction for the team. Our current stack is Rails - backend; & Polaris - Frontend. External APIs - Shopify subscription API, Shopify API, Twilio API, Sendgrid API & Shipengine API. Experience building data analytics dashboards & no-code form builders or page builders is a huge plus. Proficiency in Rails, GraphQL & Polaris is non-negotiable. It is fully remote but you need to be available in EST working hours.
Senior React/Polaris developer for Shopify app Remote, FT
Chargezen is looking for a react ninja able to translate design mock-ups into pixel perfect react/Polaris code. Experience building no-code form builders or page builders is a huge plus. It is fully remote but you need to be available in EST working hours.

Tip of the Week

Passing Liquid into Javascript

Combining Liquid Code and Javascript makes it possible to create powerful features in a Shopify Theme.

The tricky part is that Liquid is rendered on the server, and Javascript is interpreted in the browser

So how do you share data and objects from Liquid in your Javascript code?

It's actually pretty easy and requires only two steps

  1. Add a .liquid extension to the theme file containing the Javascript code
  2. Assign the Liquid data to a javascript variable, being sure to properly escape the code for the Javascript expression

The main "gotcha" is that certain Liquid objects are only available on specific pages. Read the documentation for a complete list

Some examples:

﹛% assign alert_msg =“message”%﹜
<form method=“post” onsubmit=“return 
submitCheck(‘﹛﹛alert_msg﹜﹜’)”> …</form>

const product = ﹛﹛ product | json ﹜﹜
let title = product.title