shopify-functions
Shopify Functions
Shopify Functions differ from traditional backend apps. They are compiled to WASM and run on Shopify's infrastructure with extremely low latency. They are the successor to Shopify Scripts (Plus).
1. Concepts
- Deterministic: Same input always equals same output. No random numbers, no network calls.
- Execution Time: Strict limits (e.g., 5ms for logic).
- Languages: Rust (First-class) or JavaScript (via Javy).
2. Structure
A function consists of:
shopify.extension.toml: Configuration.input.graphql: Defines data sent to the function.src/run.rs(or.js): The logic that returns anOutput.
3. Workflow
- Generate:
shopify app generate extension --template product_discounts --name my-discount - Input Query: Modify
input.graphqlto request necessary data (Cart, Customer, etc.). - CodeGen: Run
shopify app function typegento generate types from your GraphQL query. - Logic: Implement the
runfunction. - Build:
npm run build(compiles to.wasm). - Deploy:
shopify app deploy.
4. JS Example (Product Discount)
// src/run.js
// @ts-check
/**
* @typedef {import("../generated/api").RunInput} RunInput
* @typedef {import("../generated/api").FunctionRunResult} FunctionRunResult
*/
/**
* @param {RunInput} input
* @returns {FunctionRunResult}
*/
export function run(input) {
const targets = input.cart.lines
.filter(line => line.merchandise.product.hasAnyTag)
.map(line => ({
cartLine: {
id: line.id
}
}));
if (!targets.length) {
return {
discounts: [],
discountApplicationStrategy: "FIRST",
};
}
return {
discounts: [
{
targets,
value: {
percentage: {
value: "10.0"
}
},
message: "VIP Discount"
}
],
discountApplicationStrategy: "FIRST",
};
}
5. Configuration (GraphiQL)
You can't console.log in WASM. Use the Shopify App Bridge helper or the locally served GraphiQL explorer to debug inputs/outputs.
Run npm run dev, then open the highlighted GraphiQL URL in the terminal.
More from toilahuongg/google-antigravity-kit
shopify-liquid
Guide for using the Liquid template language within Shopify Theme App Extensions and Themes. Use this skill when building App Embed Blocks, App Blocks, or modifying Shopify Themes.
50shopify-polaris-design
Design and implement Shopify Admin interfaces using the Polaris Design System. Use this skill when building Shopify Apps, Admin extensions, or any interface that needs to feel native to Shopify.
47docusaurus-generator
Generate end-user documentation site using Docusaurus 3.x from the current project. Use this skill when the user asks to create documentation, generate docs, build a docs site, or set up Docusaurus for their project. Supports analyzing project structure, generating markdown docs, configuring Docusaurus, and creating user guides.
31shopify-remix-template
Guide for developing Shopify apps using the official Shopify Remix Template. Covers structure, authentication, API usage, and deployment.
19remotion-best-practices
Best practices for Remotion - Video creation in React
18remixjs-best-practices
Best practices for Remix (2025-2026 Edition), focusing on React Router v7 migration, server-first data patterns, and error handling.
15