Section Rendering API support in Theme App Extensions

Topic summary

A developer is seeking help with two technical challenges related to Shopify’s Section Rendering API when working with Theme App Extensions:

1. Obtaining section_id for dynamic rendering:

  • Theme App Extensions only allow creating blocks, not full sections
  • The developer cannot determine which section their block will be added to
  • This makes it difficult to reference the section_id needed for the Section Rendering API
  • Unlike static sections where the file name can be used as the ID, this approach doesn’t work for blocks

2. Passing custom query parameters:

  • Looking for a method to pass query parameters to sections through the Section Rendering API
  • Wants to achieve this without relying on the content_for_header object
  • The post includes code snippets (appearing reversed/garbled in the input) that seem to demonstrate JavaScript URL manipulation and Liquid template parameter handling

Status: Both questions remain unanswered, with no responses or solutions provided yet.

Summarized with AI on November 11. AI used: claude-sonnet-4-5-20250929.

I have two questions. Help in any one of the two is greatly appreciated.

  1. How can you get the section_id of the section you want to dynamically render using the Section Rendering API. Since the theme app extensions let you create block only you don’t really know the section where the block will be added and you can’t make use of the name of the block eg. on a section my_custom_section.liquid, use my_custom_section as the id in a static section.

  2. Is there a way to pass custom query parameters to your section through Section Rendering API without relying on the content_for_header object? for example

// My JavaScript> > const url = new URL(window.location) url.searchParams.append(‘section_id’, ‘my_custom_section’)> > // custom query parameter> > url.searchParams.append(‘my_param’, 'Hi, Welcome Back to Our Store ')> > // My Liquid Section> > > > // get the Query parameter if possible> > {% assign my_param = request.param.my_param %} {{ my_param }}