Version 2025-07 is the last API version to support React-based UI components. Later versions use web components, native UI elements with built-in accessibility, better performance, and consistent styling with Shopify's design system. Check out the migration guide to upgrade your extension.
Divider
The Divider component renders a thin line to visually separate groups of content. It can be oriented horizontally (inline) or vertically (block), making it useful for separating items in both vertical stacks and horizontal rows.
For semantic grouping with a heading, use Section instead.
Supported targets
- admin.
abandoned-checkout-details. action. render - admin.
abandoned-checkout-details. block. render - admin.
catalog-details. action. render - admin.
catalog-details. block. render - admin.
collection-details. action. render - admin.
collection-details. block. render - admin.
collection-index. action. render - admin.
company-details. action. render - admin.
company-details. block. render - admin.
company-location-details. block. render - admin.
customer-details. action. render - admin.
customer-details. block. render - admin.
customer-index. action. render - admin.
customer-index. selection-action. render - admin.
customer-segment-details. action. render - admin.
discount-details. action. render - admin.
discount-details. function-settings. render - admin.
discount-index. action. render - admin.
draft-order-details. action. render - admin.
draft-order-details. block. render - admin.
draft-order-index. action. render - admin.
draft-order-index. selection-action. render - admin.
gift-card-details. action. render - admin.
gift-card-details. block. render - admin.
order-details. action. render - admin.
order-details. block. render - admin.
order-details. print-action. render - admin.
order-fulfilled-card. action. render - admin.
order-index. action. render - admin.
order-index. selection-action. render - admin.
order-index. selection-print-action. render - admin.
product-details. action. render - admin.
product-details. block. render - admin.
product-details. configuration. render - admin.
product-details. print-action. render - admin.
product-details. reorder. render - admin.
product-index. action. render - admin.
product-index. selection-action. render - admin.
product-index. selection-print-action. render - admin.
product-purchase-option. action. render - admin.
product-variant-details. action. render - admin.
product-variant-details. block. render - admin.
product-variant-details. configuration. render - admin.
product-variant-purchase-option. action. render - admin.
settings. order-routing-rule. render - admin.
settings. validation. render
Supported targets
- admin.
abandoned-checkout-details. action. render - admin.
abandoned-checkout-details. block. render - admin.
catalog-details. action. render - admin.
catalog-details. block. render - admin.
collection-details. action. render - admin.
collection-details. block. render - admin.
collection-index. action. render - admin.
company-details. action. render - admin.
company-details. block. render - admin.
company-location-details. block. render - admin.
customer-details. action. render - admin.
customer-details. block. render - admin.
customer-index. action. render - admin.
customer-index. selection-action. render - admin.
customer-segment-details. action. render - admin.
discount-details. action. render - admin.
discount-details. function-settings. render - admin.
discount-index. action. render - admin.
draft-order-details. action. render - admin.
draft-order-details. block. render - admin.
draft-order-index. action. render - admin.
draft-order-index. selection-action. render - admin.
gift-card-details. action. render - admin.
gift-card-details. block. render - admin.
order-details. action. render - admin.
order-details. block. render - admin.
order-details. print-action. render - admin.
order-fulfilled-card. action. render - admin.
order-index. action. render - admin.
order-index. selection-action. render - admin.
order-index. selection-print-action. render - admin.
product-details. action. render - admin.
product-details. block. render - admin.
product-details. configuration. render - admin.
product-details. print-action. render - admin.
product-details. reorder. render - admin.
product-index. action. render - admin.
product-index. selection-action. render - admin.
product-index. selection-print-action. render - admin.
product-purchase-option. action. render - admin.
product-variant-details. action. render - admin.
product-variant-details. block. render - admin.
product-variant-details. configuration. render - admin.
product-variant-purchase-option. action. render - admin.
settings. order-routing-rule. render - admin.
settings. validation. render
Anchor to PropertiesProperties
Props for the Divider component, a visual separator used to distinguish adjacent sections of content.
- Anchor to directiondirectiondirection'inline' | 'block''inline' | 'block'Default: 'inline'Default: 'inline'
The direction the divider line runs.
inline: Draws a horizontal rule that separates stacked content.block: Draws a vertical rule that separates side-by-side content.
Anchor to ExamplesExamples
Anchor to Separate content sectionsSeparate content sections
Separate a sync status summary from a recent changes list with a horizontal rule. This example places a Divider between two sections, each with its own Heading and detail text.
Separate content sections
 and detail text.](https://cdn.shopify.com/shopifycloud/shopify-dev/production/assets/assets/images/templated-apis-screenshots/admin-extensions/2025-07/divider-default-R6yf_zxO.png)
Separate content sections
React
import {reactExtension, Divider, Heading, Text, BlockStack} from '@shopify/ui-extensions-react/admin';
function App() {
return (
<BlockStack>
<Heading>Sync status</Heading>
<Text>Last synced 5 minutes ago — all fields up to date.</Text>
<Divider />
<Heading size={3}>Recent changes</Heading>
<Text>3 metafields updated, 1 tag added in the last 24 hours.</Text>
</BlockStack>
);
}
export default reactExtension(
'admin.product-details.block.render',
() => <App />,
);TS
import {extension, Divider, Heading, Text, BlockStack} from '@shopify/ui-extensions/admin';
export default extension(
'admin.product-details.block.render',
(root) => {
const stack = root.createComponent(BlockStack);
const title = root.createComponent(Heading, {}, 'Sync status');
const status = root.createComponent(Text, {}, 'Last synced 5 minutes ago — all fields up to date.');
const divider = root.createComponent(Divider);
const historyTitle = root.createComponent(Heading, {size: 3}, 'Recent changes');
const history = root.createComponent(Text, {}, '3 metafields updated, 1 tag added in the last 24 hours.');
stack.appendChild(title);
stack.appendChild(status);
stack.appendChild(divider);
stack.appendChild(historyTitle);
stack.appendChild(history);
root.appendChild(stack);
},
);Anchor to Add vertical inline dividersAdd vertical inline dividers
Render a vertical divider between inline elements using direction="block". This example separates a product price from its SKU inside an InlineStack, creating a compact metadata row.
Add vertical inline dividers
React
import {reactExtension, Divider, Text, InlineStack, BlockStack} from '@shopify/ui-extensions-react/admin';
function App() {
return (
<BlockStack>
<InlineStack>
<Text fontWeight="bold">$49.99</Text>
<Divider direction="block" />
<Text>SKU: WH-1234</Text>
</InlineStack>
</BlockStack>
);
}
export default reactExtension(
'admin.product-details.block.render',
() => <App />,
);TS
import {extension, Divider, Text, InlineStack, BlockStack} from '@shopify/ui-extensions/admin';
export default extension(
'admin.product-details.block.render',
(root) => {
const stack = root.createComponent(BlockStack);
const row = root.createComponent(InlineStack);
const price = root.createComponent(
Text,
{fontWeight: 'bold'},
'$49.99',
);
const divider = root.createComponent(Divider, {
direction: 'block',
});
const sku = root.createComponent(Text, {}, 'SKU: WH-1234');
row.appendChild(price);
row.appendChild(divider);
row.appendChild(sku);
stack.appendChild(row);
root.appendChild(stack);
},
);Anchor to Divide form groupsDivide form groups
Break a multi-section form into visually distinct groups using dividers between TextField clusters. This example separates shipping details from customs information in an action modal, making it easier for merchants to find fields.
Divide form groups
React
import {reactExtension, Divider, TextField, Heading, BlockStack} from '@shopify/ui-extensions-react/admin';
function App() {
return (
<BlockStack>
<Heading>Shipping details</Heading>
<TextField label="Weight (kg)" name="weight" />
<TextField label="Dimensions (L×W×H cm)" name="dimensions" />
<Divider />
<Heading>Customs information</Heading>
<TextField label="HS tariff code" name="hsCode" />
<TextField label="Country of origin" name="countryOfOrigin" />
</BlockStack>
);
}
export default reactExtension(
'admin.product-details.action.render',
() => <App />,
);TS
import {extension, Divider, TextField, Heading, BlockStack} from '@shopify/ui-extensions/admin';
export default extension(
'admin.product-details.action.render',
(root) => {
const stack = root.createComponent(BlockStack);
const shippingTitle = root.createComponent(Heading, {}, 'Shipping details');
const weightField = root.createComponent(TextField, {
label: 'Weight (kg)',
name: 'weight',
});
const dimensionsField = root.createComponent(TextField, {
label: 'Dimensions (L×W×H cm)',
name: 'dimensions',
});
const divider = root.createComponent(Divider);
const customsTitle = root.createComponent(Heading, {}, 'Customs information');
const hsCodeField = root.createComponent(TextField, {
label: 'HS tariff code',
name: 'hsCode',
});
const originField = root.createComponent(TextField, {
label: 'Country of origin',
name: 'countryOfOrigin',
});
stack.appendChild(shippingTitle);
stack.appendChild(weightField);
stack.appendChild(dimensionsField);
stack.appendChild(divider);
stack.appendChild(customsTitle);
stack.appendChild(hsCodeField);
stack.appendChild(originField);
root.appendChild(stack);
},
);Anchor to Best practicesBest practices
- Use dividers to separate distinct groups: Place a Divider between logical groups of content to help merchants scan and distinguish between sections.
- Don't overuse dividers: Too many dividers can make the interface feel cluttered. Consider using spacing (using BlockStack or InlineStack) instead of dividers when a subtle separation is sufficient.
- Use Section for semantic separation: If the content groups have headings or represent distinct sections, use Section components instead of Divider. Divider is purely visual and doesn't convey semantic meaning.
Anchor to LimitationsLimitations
- Divider doesn't accept children. It renders as a self-contained line element.
- The visual style (color, thickness, style) of the divider is controlled by Shopify and can't be customized. It always renders as a standard admin divider line.
- Divider doesn't add any spacing around itself. Place it inside a layout container with appropriate spacing to control the gap between the divider and adjacent content.