The API for interacting with merchant settings.
import {
reactExtension,
Banner,
useSettings,
} from '@shopify/ui-extensions-react/checkout';
export default reactExtension(
'purchase.checkout.block.render',
() => <Extension />,
);
function Extension() {
const {banner_title} = useSettings();
return <Banner title={banner_title} />;
}
import {
extension,
Banner,
} from '@shopify/ui-extensions/checkout';
export default extension(
'purchase.checkout.block.render',
(root, {settings}) => {
const banner = root.createComponent(Banner, {
title: settings.current.banner_title,
});
// When the merchant updates the banner title in the checkout editor, re-render the banner
settings.subscribe((newSettings) => {
banner.updateProps({
title: newSettings.banner_title,
});
});
root.appendChild(banner);
},
);
The base API object provided to `purchase`, and `customer-account.order-status` extension targets.
The settings matching the settings definition written in the [`shopify.extension.toml`](/docs/api/checkout-ui-extensions/configuration) file. See [settings examples](/docs/api/checkout-ui-extensions/apis/settings) for more information. > Note: When an extension is being installed in the editor, the settings will be empty until a merchant sets a value. In that case, this object will be updated in real time as a merchant fills in the settings.
The merchant-defined setting values for the extension.
Returns the setting values defined by the merchant for the extension.
Returns the setting values defined by the merchant for the extension.
export function useSettings< Settings extends ExtensionSettings, >(): Partial<Settings> { const settings = useSubscription(useApi().settings); return settings as Settings; }
The merchant-defined setting values for the extension.
The API for interacting with merchant settings.
You can define settings that merchants can edit within the checkout editor. See [settings](/docs/api/checkout-ui-extensions/configuration#settings-definition) for more information on how to define these.
api_version = "2023-07"
[[extensions]]
name = "My checkout extension"
handle = "checkout-ui"
type = "ui_extension"
[[extensions.targeting]]
target = "purchase.checkout.block.render"
module = "./Checkout.jsx"
[extensions.settings]
[[extensions.settings.fields]]
key = "banner_title"
type = "single_line_text_field"
name = "Banner title"
description = "Enter a title for the banner."
[[extensions.settings.fields.validations]]
name = "min"
value = "5"
[[extensions.settings.fields.validations]]
name = "max"
value = "20"
api_version = "2023-07"
[[extensions]]
name = "My checkout extension"
handle = "checkout-ui"
type = "ui_extension"
[[extensions.targeting]]
target = "purchase.checkout.block.render"
module = "./Checkout.jsx"
[extensions.settings]
[[extensions.settings.fields]]
key = "banner_title"
type = "single_line_text_field"
name = "Banner title"
description = "Enter a title for the banner."
[[extensions.settings.fields.validations]]
name = "min"
value = "5"
[[extensions.settings.fields.validations]]
name = "max"
value = "20"