Shopify Functions support any language that compiles to WebAssembly (Wasm), such as Rust, AssemblyScript, or TinyGo. Functions that are compiled to Wasm need to meet our [WebAssembly API specifications (including WASI)](/docs/apps/build/functions/programming-languages/webassembly-for-functions), and our [platform binary and performance limitations](/docs/apps/build/functions#limitations-and-considerations). 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](/docs/apps/build/functions#limitations-and-considerations), many of which can be measured locally using [Shopify CLI](/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](/docs/apps/build/functions#limitations-and-considerations). 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 <div class="resource-card-grid"> <div> <a class="resource-card" href="/docs/apps/build/functions/programming-languages/rust-for-functions" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/rust" data-alt-src="/assets/resource-cards/rust-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> Rust </h3> <p class="resource-card__description">Learn about the support for Rust in Shopify Functions.</p> </a> </div></p> <p><div> <a class="resource-card" href="/docs/apps/build/functions/programming-languages/javascript-for-functions" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/javascript" data-alt-src="/assets/resource-cards/javascript-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> JavaScript </h3> <p class="resource-card__description">Learn about the support for JavaScript and TypeScript in Shopify Functions.</p> </a> </div></p> <p><div> <a class="resource-card" href="/docs/apps/build/functions/programming-languages/webassembly-for-functions" data-theme-mode=""> <div class="resource-card__indicator-container"><img src="/assets/resource-cards/webassembly" data-alt-src="/assets/resource-cards/webassembly-dark" aria-hidden="true" class="resource-card__icon themed-image"></div> <h3 class="resource-card__title"> WebAssembly </h3> <p class="resource-card__description">Learn about the using other languages that support WebAssembly in Shopify Functions.</p> </a> </div> </div> ## Next steps - Learn about how data is [input to and output from Shopify Functions](/docs/apps/build/functions/input-output). - Explore [the references for each Function API](/docs/api/functions). - Get familiar with [testing and debugging practices](/docs/apps/build/functions/test-debug-functions) that pertain to Shopify Functions.