# Settings
The API for interacting with merchant settings.
```jsx
import {
reactExtension,
Banner,
useSettings,
} from '@shopify/ui-extensions-react/checkout';
export default reactExtension(
'purchase.checkout.block.render',
() => ,
);
function Extension() {
const {banner_title} = useSettings();
return ;
}
```
```js
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);
},
);
```
## StandardApi
The base API object provided to `purchase`, and `customer-account.order-status` extension targets.
### Docs_Standard_SettingsApi
### settings
value: `StatefulRemoteSubscribable`
The settings matching the settings definition written in the
[`shopify.extension.toml`](https://shopify.dev/docs/api/checkout-ui-extensions/configuration) file.
See [settings examples](https://shopify.dev/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.
### ExtensionSettings
The merchant-defined setting values for the extension.
### [key: string]
value: `string | number | boolean | undefined`
## Related
- [Targets](https://shopify.dev/docs/api/checkout-ui-extensions/targets)
- [Components](https://shopify.dev/docs/api/checkout-ui-extensions/components)
- [Configuration](https://shopify.dev/docs/api/checkout-ui-extensions/configuration)
- [Tutorials](/apps/checkout)
## Examples
The API for interacting with merchant settings.
You can define settings that merchants can edit within the checkout editor.
See [settings](https://shopify.dev/docs/api/checkout-ui-extensions/configuration#settings-definition) for more information on how to define these.
```toml
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"
```
## useSettings
Returns the setting values defined by the merchant for the extension.
### UseSettingsGeneratedType
Returns the setting values defined by the merchant for the extension.
#### Returns: Partial
export function useSettings<
Settings extends ExtensionSettings,
>(): Partial {
const settings = useSubscription(useApi().settings);
return settings as Settings;
}
### ExtensionSettings
The merchant-defined setting values for the extension.
### [key: string]
value: `string | number | boolean | undefined`
## Related
- [Targets](https://shopify.dev/docs/api/checkout-ui-extensions/targets)
- [Components](https://shopify.dev/docs/api/checkout-ui-extensions/components)
- [Configuration](https://shopify.dev/docs/api/checkout-ui-extensions/configuration)
- [Tutorials](/apps/checkout)
## Examples
The API for interacting with merchant settings.
You can define settings that merchants can edit within the checkout editor.
See [settings](https://shopify.dev/docs/api/checkout-ui-extensions/configuration#settings-definition) for more information on how to define these.
```toml
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"
```