--- title: cartMetafieldsSetDefault description: >- Creates a function that accepts an array of [CartMetafieldsSetInput](https://shopify.dev/docs/api/storefront/2023-07/input-objects/CartMetafieldsSetInput) without `ownerId` and set the metafields to a cart api_version: 2023-07 api_name: hydrogen source_url: html: >- https://shopify.dev/docs/api/hydrogen/2023-07/utilities/cartmetafieldssetdefault md: >- https://shopify.dev/docs/api/hydrogen/2023-07/utilities/cartmetafieldssetdefault.md --- # cart​Metafields​Set​Default Creates a function that accepts an array of [CartMetafieldsSetInput](https://shopify.dev/docs/api/storefront/2023-07/input-objects/CartMetafieldsSetInput) without `ownerId` and set the metafields to a cart ## cart​Metafields​Set​Default(**[options](#cartmetafieldssetdefault-propertydetail-options)**​) ### Parameters * **options** **CartQueryOptions** **required** ### Returns * **CartMetafieldsSetFunction** ### ### CartMetafieldsSetFunction * **export type CartMetafieldsSetFunction = ( metafields: MetafieldWithoutOwnerId[], optionalParams?: CartOptionalInput, ) => Promise;** ### CartQueryOptions * storefront The storefront client instance created by \[\`createStorefrontClient\`]\(docs/api/hydrogen/latest/utilities/createstorefrontclient). ```ts Storefront ``` * getCartId A function that returns the cart ID. ```ts () => string ``` * cartFragment The cart fragment to override the one used in this query. ```ts string ``` ### Storefront Interface to interact with the Storefront API. * query The function to run a query on Storefront API. ```ts (query: RawGqlString, ...options: RawGqlString extends never ? IsOptionalVariables extends true ? [StorefrontQuerySecondParam?] : [StorefrontQuerySecondParam] : [StorefrontQuerySecondParam?]) => Promise ``` * mutate The function to run a mutation on Storefront API. ```ts (mutation: RawGqlString, ...options: RawGqlString extends never ? IsOptionalVariables extends true ? [StorefrontMutateSecondParam?] : [StorefrontMutateSecondParam] : [StorefrontCommonOptions<{ readonly [variable: string]: unknown; }>?]) => Promise ``` * cache The cache instance passed in from the \`createStorefrontClient\` argument. ```ts Cache ``` * CacheNone Re-export of \[\`CacheNone\`]\(/docs/api/hydrogen/2023-07/utilities/cachenone). ```ts () => NoStoreStrategy ``` * CacheLong Re-export of \[\`CacheLong\`]\(/docs/api/hydrogen/2023-07/utilities/cachelong). ```ts (overrideOptions?: AllCacheOptions) => AllCacheOptions ``` * CacheShort Re-export of \[\`CacheShort\`]\(/docs/api/hydrogen/2023-07/utilities/cacheshort). ```ts (overrideOptions?: AllCacheOptions) => AllCacheOptions ``` * CacheCustom Re-export of \[\`CacheCustom\`]\(/docs/api/hydrogen/2023-07/utilities/cachecustom). ```ts (overrideOptions: AllCacheOptions) => AllCacheOptions ``` * generateCacheControlHeader Re-export of \[\`generateCacheControlHeader\`]\(/docs/api/hydrogen/2023-07/utilities/generatecachecontrolheader). ```ts (cacheOptions: AllCacheOptions) => string ``` * getPublicTokenHeaders Returns an object that contains headers that are needed for each query to Storefront API GraphQL endpoint. See \[\`getPublicTokenHeaders\` in Hydrogen React]\(/docs/api/hydrogen-react/2023-07/utilities/createstorefrontclient#:\~:text=%27graphql%27.-,getPublicTokenHeaders,-(props%3F%3A) for more details. ```ts (props?: Partial> & Pick) => Record ``` * getPrivateTokenHeaders Returns an object that contains headers that are needed for each query to Storefront API GraphQL endpoint for API calls made from a server. See \[\`getPrivateTokenHeaders\` in Hydrogen React]\(/docs/api/hydrogen-react/2023-07/utilities/createstorefrontclient#:\~:text=storefrontApiVersion-,getPrivateTokenHeaders,-(props%3F%3A) for more details. ```ts (props?: Partial> & Pick & { buyerIp?: string; }) => Record ``` * getShopifyDomain Creates the fully-qualified URL to your myshopify.com domain. See \[\`getShopifyDomain\` in Hydrogen React]\(/docs/api/hydrogen-react/2023-07/utilities/createstorefrontclient#:\~:text=StorefrontClientReturn-,getShopifyDomain,-(props%3F%3A) for more details. ```ts (props?: Partial>) => string ``` * getApiUrl Creates the fully-qualified URL to your store's GraphQL endpoint. See \[\`getStorefrontApiUrl\` in Hydrogen React]\(/docs/api/hydrogen-react/2023-07/utilities/createstorefrontclient#:\~:text=storeDomain-,getStorefrontApiUrl,-(props%3F%3A) for more details. ```ts (props?: Partial>) => string ``` * isApiError Determines if the error is resulted from a Storefront API call. ```ts (error: any) => boolean ``` * i18n The \`i18n\` object passed in from the \`createStorefrontClient\` argument. ```ts TI18n ``` ### IsOptionalVariables ```ts Omit< OperationTypeValue['variables'], AutoAddedVariableNames > extends EmptyVariables ? true // No need to pass variables : GenericVariables extends OperationTypeValue['variables'] ? true // We don't know what variables are needed : false ``` ### AutoAddedVariableNames ```ts 'country' | 'language' ``` ### EmptyVariables ### GenericVariables ```ts ExecutionArgs['variableValues'] ``` ### StorefrontQueries Maps all the queries found in the project to variables and return types. ### StorefrontQuerySecondParam ```ts (RawGqlString extends keyof StorefrontQueries ? StorefrontCommonOptions : StorefrontCommonOptions) & {cache?: CachingStrategy} ``` ### StorefrontCommonOptions ```ts { headers?: HeadersInit; storefrontApiVersion?: string; } & (IsOptionalVariables<{variables: Variables}> extends true ? {variables?: Variables} : {variables: Variables}) ``` ### CachingStrategy Use the \`CachingStrategy\` to define a custom caching mechanism for your data. Or use one of the pre-defined caching strategies: CacheNone, CacheShort, CacheLong. * mode The caching mode, generally \`public\`, \`private\`, or \`no-store\`. ```ts string ``` * maxAge The maximum amount of time in seconds that a resource will be considered fresh. See \`max-age\` in the \[MDN docs]\(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#:\~:text=Response%20Directives-,max%2Dage,-The%20max%2Dage). ```ts number ``` * staleWhileRevalidate Indicate that the cache should serve the stale response in the background while revalidating the cache. See \`stale-while-revalidate\` in the \[MDN docs]\(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#stale-while-revalidate). ```ts number ``` * sMaxAge Similar to \`maxAge\` but specific to shared caches. See \`s-maxage\` in the \[MDN docs]\(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#s-maxage). ```ts number ``` * staleIfError Indicate that the cache should serve the stale response if an error occurs while revalidating the cache. See \`stale-if-error\` in the \[MDN docs]\(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#stale-if-error). ```ts number ``` ### StorefrontMutations Maps all the mutations found in the project to variables and return types. ### StorefrontMutateSecondParam ```ts RawGqlString extends keyof StorefrontMutations ? StorefrontCommonOptions : StorefrontCommonOptions ``` ### NoStoreStrategy * mode ```ts string ``` ### AllCacheOptions Override options for a cache strategy. * mode The caching mode, generally \`public\`, \`private\`, or \`no-store\`. ```ts string ``` * maxAge The maximum amount of time in seconds that a resource will be considered fresh. See \`max-age\` in the \[MDN docs]\(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#:\~:text=Response%20Directives-,max%2Dage,-The%20max%2Dage). ```ts number ``` * staleWhileRevalidate Indicate that the cache should serve the stale response in the background while revalidating the cache. See \`stale-while-revalidate\` in the \[MDN docs]\(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#stale-while-revalidate). ```ts number ``` * sMaxAge Similar to \`maxAge\` but specific to shared caches. See \`s-maxage\` in the \[MDN docs]\(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#s-maxage). ```ts number ``` * staleIfError Indicate that the cache should serve the stale response if an error occurs while revalidating the cache. See \`stale-if-error\` in the \[MDN docs]\(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#stale-if-error). ```ts number ``` ### CartMetafieldsSetFunction * metafields ```ts MetafieldWithoutOwnerId[] ``` * optionalParams ```ts CartOptionalInput ``` Promise\ ```ts Promise ``` ### MetafieldWithoutOwnerId ### CartOptionalInput * cartId The cart id. ```ts string ``` * country The country code. ```ts CountryCode ``` * language The language code. ```ts LanguageCode ``` ### CartQueryData * cart ```ts Cart ``` * errors ```ts CartUserError[] | MetafieldsSetUserError[] | MetafieldDeleteUserError[] ``` ### Cart ### CartUserError ### MetafieldsSetUserError ### MetafieldDeleteUserError Examples ### Examples * #### example ##### Description This is the default example ##### JavaScript ```js import {cartMetafieldsSetDefault} from '@shopify/hydrogen'; const cartSetMetafields = cartMetafieldsSetDefault({ storefront, getCartId, }); const result = await cartSetMetafields([ { key: 'custom.gift', type: 'boolean', value: 'true', }, ]); ```