--- title: CacheCustom description: >- This allows you to create your own caching strategy, using any of the options available in a CachingStrategy object. api_version: 2026-04 api_name: hydrogen source_url: html: 'https://shopify.dev/docs/api/hydrogen/latest/utilities/caching/cachecustom' md: >- https://shopify.dev/docs/api/hydrogen/latest/utilities/caching/cachecustom.md --- # CacheCustom This allows you to create your own caching strategy, using any of the options available in a `CachingStrategy` object. Learn more about [data fetching in Hydrogen](https://shopify.dev/docs/custom-storefronts/hydrogen/data-fetching/fetch-data). ## cache​Custom(**[overrideOptions](#arguments-propertydetail-overrideoptions)**​) ### Parameters * **overrideOptions** **AllCacheOptions** **required** ### Returns * **AllCacheOptions** ### AllCacheOptions Override options for a cache strategy. * 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 ``` * mode The caching mode, generally \`public\`, \`private\`, or \`no-store\`. ```ts string ``` * 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 ``` * 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 ``` Examples ### Examples * #### Example code ##### JavaScript ```js import {CacheCustom} from '@shopify/hydrogen'; export async function loader({context}) { const data = await context.storefront.query( `#grahpql { shop { name description } } `, { cache: CacheCustom({ maxAge: 60 * 60 * 24 * 365, staleWhileRevalidate: 60 * 60 * 24 * 7, }), }, ); return data; } ``` ##### TypeScript ```ts import {type LoaderFunctionArgs} from 'react-router'; import {CacheCustom} from '@shopify/hydrogen'; export async function loader({context}: LoaderFunctionArgs) { const data = await context.storefront.query( `#grahpql { shop { name description } } `, { cache: CacheCustom({ maxAge: 60 * 60 * 24 * 365, staleWhileRevalidate: 60 * 60 * 24 * 7, }), }, ); return data; } ``` *** ## Related [- createStorefrontClient](https://shopify.dev/docs/api/hydrogen/2026-04/utilities/createstorefrontclient) [- CacheNone](https://shopify.dev/docs/api/hydrogen/2026-04/utilities/caching/cachenone) [- CacheShort](https://shopify.dev/docs/api/hydrogen/2026-04/utilities/caching/cacheshort) [- CacheLong](https://shopify.dev/docs/api/hydrogen/2026-04/utilities/caching/cachelong) ***