Encounted "InstructionCountLimitExceededError" while querying an external api in Shopify Function

Solved

Encounted "InstructionCountLimitExceededError" while querying an external api in Shopify Function

tojo
Shopify Partner
3 0 2

Hello,

 

I have a Shopify Extension App for transforming customer cart items using the expand operation. My intention is to retrieve some information from an external graphql api via the urql client in order to extend my products appropriately. 

 

Upon making a request I will encounter the following error 

Function export "run" failed to execute with error: InstructionCountLimitExceededError

Is there a way to increase the limit or an alternative solution Shopify provides that will enable me to make a graphql query to an external source within my Cart Transform Function?

 

My function is written in Typescript

 

Thanks

Accepted Solution (1)

Eryteebrilliant
Shopify Partner
20 1 4

This is an accepted solution.

The Instruction you typed "CountLimitExceededError" typically occurs when a function exceeds the execution limit set by Shopify’s runtime. Unfortunately, Shopify imposes strict limits on function execution to ensure performance and scalability, and these limits cannot be increased manually.

What I think you can just do is:
Move External Calls Outside the Function
Shopify Functions are designed to be fast and deterministic, which means they don’t allow direct external API calls. Instead, you can:

Use Shopify’s Cart and Checkout validation API or webhooks to fetch the required data ahead of time and store it in Shopify’s metafields or a dedicated app proxy.

I wish this help in one way or the other.

eryteebrilliant1

View solution in original post

Replies 4 (4)

Eryteebrilliant
Shopify Partner
20 1 4

This is an accepted solution.

The Instruction you typed "CountLimitExceededError" typically occurs when a function exceeds the execution limit set by Shopify’s runtime. Unfortunately, Shopify imposes strict limits on function execution to ensure performance and scalability, and these limits cannot be increased manually.

What I think you can just do is:
Move External Calls Outside the Function
Shopify Functions are designed to be fast and deterministic, which means they don’t allow direct external API calls. Instead, you can:

Use Shopify’s Cart and Checkout validation API or webhooks to fetch the required data ahead of time and store it in Shopify’s metafields or a dedicated app proxy.

I wish this help in one way or the other.

eryteebrilliant1
tojo
Shopify Partner
3 0 2

Awesome. Thank you very much for your reply. Using the cart/create webhook may be the solution i need. Just to follow through, are you aware of any implications one might encounter or rather should be watchful of when using this method to extend cart pricing at checkout? E.g.

 

- Will this impact the checkout and payment flow?

- Will the extended price update the base price of the product on the store?

 

I assume the answer to these will likely be no, but i'd like to hear your perspective as well.

Eryteebrilliant
Shopify Partner
20 1 4

You're absolutely right—using the cart/create webhook can be a good approach for fetching external data to extend cart pricing. However, I think there are a few key considerations to keep in mind:

First one is that: Webhooks operate asynchronously, meaning they do not block the checkout process. However, any pricing adjustments must be reflected before the customer proceeds to checkout, as Shopify locks in cart prices at that stage.

 

And the second point i thought of is that If your webhook depends on an external API response, ensure it's optimized to minimize delays. Otherwise, customers might see outdated or incorrect pricing.

 

What do you think about that also?

eryteebrilliant1
tojo
Shopify Partner
3 0 2

You have raised some very good points, thank you. I'll take them into consideration during development. My data source is a graphql api powered by Urql which has caching capabilities built in, this should help with responsiveness.

 

Your second point on outdated pricing can also be mitigated by perhaps designing a flow to update pricing at low traffic times. This may require more research from me, but your help has been tremendous. Thank you.