---
title: Delivery option caching
description: >-
  Learn why your delivery function or carrier service might not run again after
  every change to the cart during checkout.
source_url:
  html: >-
    https://shopify.dev/docs/apps/build/checkout/delivery-shipping/delivery-option-caching
  md: >-
    https://shopify.dev/docs/apps/build/checkout/delivery-shipping/delivery-option-caching.md
---

# Delivery option caching

Buyers change their checkout many times before they pay. To keep checkout fast, Shopify doesn't recalculate delivery options after every change. It caches the delivery options it calculates and reuses them until delivery-related cart data, such as cart lines and delivery address, changes. Changes to other cart properties don't refresh cached results.

This affects when your app runs. If your app or function uses one of the cached extension points, then Shopify runs it when delivery-related data in the cart changes, not after every cart update. If Shopify already has a recent result for that data, then it reuses that result instead.

***

## Cached extension points

Shopify can reuse an earlier result from the following extension points instead of running them again:

* [Fulfillment Constraints Function API](https://shopify.dev/docs/api/functions/reference/fulfillment-constraints)
* [Order Routing Location Rule Function API](https://shopify.dev/docs/api/functions/reference/order-routing-location-rule)
* [Local Pickup Delivery Option Generator Function API](https://shopify.dev/docs/api/functions/reference/local-pickup-delivery-option-generator)
* [Pickup Point Delivery Option Generator Function API](https://shopify.dev/docs/api/functions/reference/pickup-point-delivery-option-generator)
* [Carrier-calculated shipping rates](https://shopify.dev/docs/api/admin-graphql/latest/objects/DeliveryCarrierService)

The [Delivery Customization Function API](https://shopify.dev/docs/api/functions/reference/delivery-customization) isn't cached. Delivery customization functions run every time checkout updates delivery options, with the buyer's current cart as input.

***
