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.
InlineSpacer
The InlineSpacer component creates empty horizontal space between elements. Use InlineSpacer to insert variable amounts of inline-axis spacing when elements need different gaps, such as pushing an action button to the far right of a row.
InlineSpacer supports predefined spacing values from the design token set for consistent horizontal rhythm. When all elements need the same gap, use InlineStack with a spacing prop instead.
Supported targets
- Customer
Account::Kitchen Sink - customer-account.
footer. render-after - customer-account.
order-index. announcement. render - customer-account.
order-index. block. render - customer-account.
order-status. announcement. render - customer-account.
order-status. block. render - customer-account.
order-status. cart-line-item. render-after - customer-account.
order-status. cart-line-list. render-after - customer-account.
order-status. customer-information. render-after - customer-account.
order-status. fulfillment-details. render-after - customer-account.
order-status. payment-details. render-after - customer-account.
order-status. return-details. render-after - customer-account.
order-status. unfulfilled-items. render-after - customer-account.
order. action. menu-item. render - customer-account.
order. action. render - customer-account.
order. page. render - customer-account.
page. render - customer-account.
profile. addresses. render-after - customer-account.
profile. announcement. render - customer-account.
profile. block. render - customer-account.
profile. company-details. render-after - customer-account.
profile. company-location-addresses. render-after - customer-account.
profile. company-location-payment. render-after - customer-account.
profile. company-location-staff. render-after - customer-account.
profile. payment. render-after
Supported targets
- Customer
Account::Kitchen Sink - customer-account.
footer. render-after - customer-account.
order-index. announcement. render - customer-account.
order-index. block. render - customer-account.
order-status. announcement. render - customer-account.
order-status. block. render - customer-account.
order-status. cart-line-item. render-after - customer-account.
order-status. cart-line-list. render-after - customer-account.
order-status. customer-information. render-after - customer-account.
order-status. fulfillment-details. render-after - customer-account.
order-status. payment-details. render-after - customer-account.
order-status. return-details. render-after - customer-account.
order-status. unfulfilled-items. render-after - customer-account.
order. action. menu-item. render - customer-account.
order. action. render - customer-account.
order. page. render - customer-account.
page. render - customer-account.
profile. addresses. render-after - customer-account.
profile. announcement. render - customer-account.
profile. block. render - customer-account.
profile. company-details. render-after - customer-account.
profile. company-location-addresses. render-after - customer-account.
profile. company-location-payment. render-after - customer-account.
profile. company-location-staff. render-after - customer-account.
profile. payment. render-after
Anchor to PropertiesProperties
Configure the following properties on the InlineSpacer component.
- Anchor to idididstringstring
A unique identifier for the component. Use this to target the component in scripts or stylesheets, or to distinguish it from other instances of the same component.
- Anchor to spacingspacingspacingMaybeResponsiveConditionalStyle<Exclude<Spacing, 'none'>>MaybeResponsiveConditionalStyle<Exclude<Spacing, 'none'>>Default: 'base'Default: 'base'
The size of the spacer.
MaybeResponsiveConditionalStyle
A type that represents a value that can be a conditional style. The conditions are based on the viewport size. We highly recommend using the `Style` helper which simplifies the creation of conditional styles.
T | ConditionalStyle<T, ViewportSizeCondition>ConditionalStyle
A conditional style definition that maps one or more conditions to different values. The `default` value is used as a fallback when none of the conditions in `conditionals` are satisfied.
- conditionals
An array of conditional values.
ConditionalValue<T, AcceptedConditions>[] - default
The default value applied when none of the conditional values specified in `conditionals` are met.
T
ConditionalValue
A single conditional branch that pairs a set of conditions with the value to apply when those conditions are met.
- conditions
The conditions that must be met for the value to be applied. At least one condition must be specified.
AcceptedConditions - value
The value that will be applied if the conditions are met.
T
ViewportSizeCondition
A condition that targets layouts based on the inline size (width in horizontal writing modes) of the viewport.
- viewportInlineSize
The minimum viewport inline size that the condition must match.
{ min: T; }
Spacing
A keyword that maps to a predefined spacing value from the design system. Use these instead of pixel values to ensure consistent spacing throughout the UI. - `none`: No spacing (0px). - `extraTight`: The smallest amount of spacing. - `tight`: A compact amount of spacing, suitable for tight layouts. - `base`: The default spacing, appropriate for most layouts. - `loose`: A generous amount of spacing, used to create visual separation. - `extraLoose`: The largest amount of spacing.
'none' | 'extraTight' | 'tight' | 'base' | 'loose' | 'extraLoose'Anchor to ExamplesExamples
Anchor to Add variable horizontal spacingAdd variable horizontal spacing
Use InlineSpacer to insert specific amounts of horizontal space between elements. This is useful when you need different spacing values between items in a row.
Add variable horizontal spacing

Add variable horizontal spacing
React
import {
reactExtension,
InlineSpacer,
InlineStack,
View,
} from '@shopify/ui-extensions-react/customer-account';
export default reactExtension(
'customer-account.page.render',
() => <Extension />,
);
function Extension() {
return (
<InlineStack spacing="none">
<View border="base" padding="base">
View
</View>
<InlineSpacer spacing="loose" />
<View border="base" padding="base">
View
</View>
<InlineSpacer spacing="tight" />
<View border="base" padding="base">
View
</View>
<InlineSpacer spacing="base" />
<View border="base" padding="base">
View
</View>
</InlineStack>
);
}JS
import {
extension,
InlineSpacer,
InlineStack,
View,
} from '@shopify/ui-extensions/customer-account';
export default extension('customer-account.page.render', (root) => {
const inlineSpacer = root.createComponent(InlineStack, {spacing: 'none'}, [
root.createComponent(View, {border: 'base', padding: 'base'}, 'View'),
root.createComponent(InlineSpacer, {spacing: 'loose'}),
root.createComponent(View, {border: 'base', padding: 'base'}, 'View'),
root.createComponent(InlineSpacer, {spacing: 'tight'}),
root.createComponent(View, {border: 'base', padding: 'base'}, 'View'),
root.createComponent(InlineSpacer, {spacing: 'base'}),
root.createComponent(View, {border: 'base', padding: 'base'}, 'View'),
]);
root.appendChild(inlineSpacer);
});Anchor to Best practicesBest practices
- Prefer InlineStack for uniform spacing: If all elements need the same gap, use InlineStack with a
spacingprop instead of multiple spacers. - Use design token sizes: Stick to predefined spacing values for consistency with the rest of the interface.
- Avoid excessive spacers: Too many spacers make layout code harder to read. Consider whether a layout component with built-in spacing would be cleaner.
Anchor to LimitationsLimitations
- InlineSpacer only creates horizontal (inline-axis) space. For vertical spacing, use BlockSpacer.
- InlineSpacer is an empty element. It can't contain children or display content.
- Spacing values are limited to the predefined design token set. Custom pixel values aren't supported.