--- title: Language considerations description: Learn about the language support available in Shopify Functions. source_url: html: https://shopify.dev/docs/apps/build/functions/programming-languages md: https://shopify.dev/docs/apps/build/functions/programming-languages.md --- ExpandOn this page * [Functions environment](https://shopify.dev/docs/apps/build/functions/programming-languages#functions-environment) * [Choosing a language](https://shopify.dev/docs/apps/build/functions/programming-languages#choosing-a-language) * [Available language support](https://shopify.dev/docs/apps/build/functions/programming-languages#available-language-support) * [Next steps](https://shopify.dev/docs/apps/build/functions/programming-languages#next-steps) # Language considerations Shopify Functions support any language that compiles to WebAssembly (Wasm), such as Rust, Zig, or TinyGo. Functions that are compiled to Wasm need to meet our [WebAssembly API specifications](https://shopify.dev/docs/apps/build/functions/programming-languages/webassembly-for-functions), and our [platform binary and performance limitations](https://shopify.dev/docs/api/functions/current#other-limitations). This guide introduces the language support and tooling that's available in Shopify Functions. *** ## Functions environment Shopify Functions operates in critical buyer flows such as Checkout. For a given Checkout request there may be multiple functions executed, each one adding to the overall latency of the checkout request. For this reason, Shopify places a number of [platform limits](https://shopify.dev/docs/api/functions/current#other-limitations), many of which can be measured locally using [Shopify CLI](https://shopify.dev/docs/apps/build/functions/test-debug-functions#execute-the-function-locally-using-shopify-cli). *** ## Choosing a language Languages that compile directly to WebAssembly, such as Rust, perform better than dynamic languages, such as JavaScript. If your function targets a public app, expects to operate on a large number of line items, or is computationally complex, then choose Rust to stay within the Shopify Functions [instruction count requirements](https://shopify.dev/docs/api/functions/current#other-limitations). For prototyping ideas, JavaScript is a good starting point if you're familiar with the language. However, expect to run into instruction limits sooner than if you wrote the equivalent function logic in a language that compiles to WebAssembly directly, such as Rust. *** ## Available language support [![](https://shopify.dev/images/icons/48/rust.png)![](https://shopify.dev/images/icons/48/rust-dark.png)](https://shopify.dev/docs/apps/build/functions/programming-languages/rust-for-functions) [Rust](https://shopify.dev/docs/apps/build/functions/programming-languages/rust-for-functions) [Learn about the support for Rust in Shopify Functions.](https://shopify.dev/docs/apps/build/functions/programming-languages/rust-for-functions) [![](https://shopify.dev/images/icons/48/javascript.png)![](https://shopify.dev/images/icons/48/javascript-dark.png)](https://shopify.dev/docs/apps/build/functions/programming-languages/javascript-for-functions) [JavaScript](https://shopify.dev/docs/apps/build/functions/programming-languages/javascript-for-functions) [Learn about the support for JavaScript and TypeScript in Shopify Functions.](https://shopify.dev/docs/apps/build/functions/programming-languages/javascript-for-functions) [![](https://shopify.dev/images/icons/48/webassembly.png)![](https://shopify.dev/images/icons/48/webassembly-dark.png)](https://shopify.dev/docs/apps/build/functions/programming-languages/webassembly-for-functions) [WebAssembly](https://shopify.dev/docs/apps/build/functions/programming-languages/webassembly-for-functions) [Learn about the using other languages that support WebAssembly in Shopify Functions.](https://shopify.dev/docs/apps/build/functions/programming-languages/webassembly-for-functions) *** ## Next steps * Learn about how data is [input to and output from Shopify Functions](https://shopify.dev/docs/api/functions/latest#function-anatomy). * Explore [the references for each Function API](https://shopify.dev/docs/api/functions). * Get familiar with [testing and debugging practices](https://shopify.dev/docs/apps/build/functions/test-debug-functions) that pertain to Shopify Functions. *** * [Functions environment](https://shopify.dev/docs/apps/build/functions/programming-languages#functions-environment) * [Choosing a language](https://shopify.dev/docs/apps/build/functions/programming-languages#choosing-a-language) * [Available language support](https://shopify.dev/docs/apps/build/functions/programming-languages#available-language-support) * [Next steps](https://shopify.dev/docs/apps/build/functions/programming-languages#next-steps)