---
url: https://developer.youcan.shop/themes/sections/section-rendering.md
---
# Section rendering
You can get one or more sections of any storefront page without the rest of the page. Use this to update part of a page after a change, for example a cart drawer after an item is added, or a product section after a variant change, without a full page load.
Each section is rendered in the context of the page URL, with the same `product`, `collection`, `cart` and `request` objects as the full page.
## One section
Add `section_id` to the page URL. You get the section HTML, with its wrapper element.
```js
const html = await fetch(`${window.location.pathname}?section_id=header`).then(r => r.text());
```
## Several sections
Add `sections` with a comma-separated list of up to 5 ids. You get a JSON object with each id and its HTML.
```js
const sections = await fetch('/cart?sections=cart-drawer,header').then(r => r.json());
document.querySelector('#youcan-section--header').outerHTML = sections.header;
```
```json
{
"cart-drawer": "",
"header": ""
}
```
## Section ids
* For a section in the page's [JSON template](/themes/templates/json-templates), use its id from the template.
* For a section that you render with the [section tag](/themes/tags/section) in a layout, use its file name, for example `header` for `sections/header.liquid`.
If an id does not match a section, its value is `null` with `sections`, and you get a 404 with `section_id`. If a section has a Liquid error, the error is shown in place. See [Errors](/themes/liquid/overview#errors).