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` extension targets.
The settings matching the settings definition written in the [`shopify.extension.toml`](/docs/api/checkout-ui-extensions/configuration) file. Refer to [settings examples](/docs/api/checkout-ui-extensions/apis/settings#examples) 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.
Record< string, string | number | boolean | undefined >
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.
Record< string, string | number | boolean | undefined >
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"