# useShopifyCookies Sets Shopify user and session cookies and refreshes the expiry time. ```jsx import * as React from 'react'; import {useShopifyCookies} from '@shopify/hydrogen-react'; export default function App({Component, pageProps}) { useShopifyCookies({hasUserConsent: false}); return ; } ``` ```tsx import * as React from 'react'; import {useShopifyCookies} from '@shopify/hydrogen-react'; export default function App({Component, pageProps}) { useShopifyCookies({hasUserConsent: false}); return ; } ``` ## useShopifyCookies Manages Shopify cookies. If `hasUserConsent` option is false, Shopify cookies will be removed. ### UseShopifyCookiesGeneratedType #### Returns: void #### Params: - options: UseShopifyCookiesOptions export function useShopifyCookies(options?: UseShopifyCookiesOptions): void { const { hasUserConsent = false, domain = '', checkoutDomain = '', } = options || {}; useEffect(() => { const cookies = getShopifyCookies(document.cookie); /** * Setting cookie with domain * * If no domain is provided, the cookie will be set for the current host. * For Shopify, we need to ensure this domain is set with a leading dot. */ // Use override domain or current host let currentDomain = domain || window.document.location.host; if (checkoutDomain) { const checkoutDomainParts = checkoutDomain.split('.').reverse(); const currentDomainParts = currentDomain.split('.').reverse(); const sameDomainParts: Array = []; checkoutDomainParts.forEach((part, index) => { if (part === currentDomainParts[index]) { sameDomainParts.push(part); } }); currentDomain = sameDomainParts.reverse().join('.'); } // Reset domain if localhost if (/^localhost/.test(currentDomain)) currentDomain = ''; // Shopify checkout only consumes cookies set with leading dot domain const domainWithLeadingDot = currentDomain ? /^\./.test(currentDomain) ? currentDomain : `.${currentDomain}` : ''; /** * Set user and session cookies and refresh the expiry time */ if (hasUserConsent) { setCookie( SHOPIFY_Y, cookies[SHOPIFY_Y] || buildUUID(), longTermLength, domainWithLeadingDot, ); setCookie( SHOPIFY_S, cookies[SHOPIFY_S] || buildUUID(), shortTermLength, domainWithLeadingDot, ); } else { setCookie(SHOPIFY_Y, '', 0, domainWithLeadingDot); setCookie(SHOPIFY_S, '', 0, domainWithLeadingDot); } }, [options, hasUserConsent, domain, checkoutDomain]); } ### UseShopifyCookiesOptions ### checkoutDomain value: `string` The checkout domain of the shop. Defaults to empty string. If set, the cookie domain will check if it can be set with the checkout domain. ### domain value: `string` The domain scope of the cookie. Defaults to empty string. ### hasUserConsent value: `boolean` If set to `false`, Shopify cookies will be removed. If set to `true`, Shopify unique user token cookie will have cookie expiry of 1 year. Defaults to false. ## Related - [sendShopifyAnalytics](/api/hydrogen-react/utilities/sendShopifyAnalytics) - [getClientBrowserParameters](/api/hydrogen-react/utilities/getclientbrowserparameters) - [getShopifyCookies](/api/hydrogen-react/utilities/getShopifyCookies)