This morning I tried to access a product object from section settings and noticed that the output of the object is the product handle, not the product object. For now i have patched it with a workaround but i’m pretty sure this is a bug in liquid. Here is my setup:
Context: Featured product section
Section schema input for product:
{
“type”: “product”,
“id”: “product”,
“label”: “t:sections.featured_product.product”
}
Tried printing it like this:
{{ section.settings.product | json }}
Output:
"product-handle-here"
Expected Output: Product object
{ "id: 111", etc }
Observations:
I have noticed that the product attributes are indeed accessible with liquid so the examples below seem to be accessible
{{ section.settings.product.id }}
{{ section.settings.product.title }}
etc
Therefore my current workaround is this:
{% if product == product.handle %}
{% assign product = all_products[product.handle] %}
{% endif %}
However, i’m pretty sure this is a bug in liquid. Unless i totally miss something. Tried this across multiple themes as well.


