Main issue: Changing the announcement bar setting from text to richtext in a Shopify theme caused the error “All top level nodes must be
”, and adding
in the default made the tag render literally on the storefront.
Root cause: The theme output used the Liquid escape filter, which HTML-escaped richtext content, and the markup wrapped the output in a
, conflicting with richtext-generated
tags.
Key fixes:
Update the schema setting to type: richtext. Keep the default as plain text (no
tags) or valid richtext.
In sections/announcement-bar.liquid, remove the | escape filter from the outputs, e.g. {{ block.settings.text }} and {{ section.blocks.first.settings.text }}.
Replace any outer
wrapper around the rendered content with a
to avoid nested
tags.
Notes: Code snippets and screenshots were provided to illustrate file locations and changes.
Outcome: The original poster confirmed the changes resolved the issue; discussion appears resolved.
Summarized with AI on December 27.
AI used: gpt-5.