Ağustos 2025te Shopify, Shopify Scriptsi nihayet kapattı. Ren bölgesinden bir Plus merchant bizi 48 saat sonra aradı: checkoutu siparişlerin yüzde 60ında hata veriyordu, üç otomatik B2B discount çalışmıyordu ve operasyon ekibi siparişleri elle düzeltmek zorunda kalıyordu. Önceki ajansın 18 ay boyunca Scriptslerin deprecated olduğunu bilmesine rağmen hiçbir şey yapmadığı ortaya çıktı. Üç hafta kriz modunun ardından dört Shopify Function canlıdaydı, checkout temizlenmişti ve merchant ayda 80 manuel saat geri kazanmıştı.
Bu hikaye 2026da hiç sıra dışı değil. Shopify Functions opsiyonel değil — Shopify Plus mağazasında server-side custom logic yazmanın tek desteklenen yolu. 2026da hâlâ admindeki bir discount kodunun ya da bir marketplace appin yeteceğini düşünen birinin ya çok basit bir use casei vardır ya da gereksiz manuel işle marjını sızdırıyordur.
Bu rehber, Functions değerlendiren Shopify Plus geliştiricileri, teknik CTOlar ve ajanslar için tam bir teknik referanstır. Yedi Function APIyi tek tek geçiyoruz, Rust ve JavaScript ile gerçek kod gösteriyoruz, Shopify CLI ile build workflowunu anlatıyoruz, dilleri karşılaştırıyoruz, Scriptsten migrationu dokümante ediyoruz ve sert sayılarla gerçek bir case study paylaşıyoruz.
Shopify Functions nedir (ve ne değildir)
Shopify Functions, mağazanın iş mantığını dört alanda — discount, shipping, payment ve cart transformation — genişletmek için Shopify edgede çalıştırılan WebAssembly modülleridir. 2024te deprecated olan Shopify Scripts APIyi yerinden eder ve 2024 yazından beri server-side özelleştirme için tek desteklenen seçenektir.
Kavramsal olarak bir Function şöyle çalışır: Shopify Wasm modülünüzü bir input ile (genellikle cart state ve context metadata) çağırır, kodunuz bir operation listesi (X discountu uygula, Y shipping methodunu gizle, Z line itemi böl) döner, Shopify de bu operasyonları storefront ya da checkoutta uygular. Geleneksel anlamda HTTP roundtripi yoktur — Function storefront ile aynı edge data centerinde çalışır, tipik latency 3-30ms arasındadır.
Temel özellikler:
- Wasm tabanlı: WebAssemblye derlenir, sandboxed, deterministik
- Diller: Rust (resmi öneri, en iyi performans) ya da JavaScript (Javy üzerinden, yazması daha hızlı)
- Boyut limiti: Function başına 256KB Wasm bytecode
- Latency budget: sadece execution için sert 5ms limit, input/output serialization için pay var
- Harici API çağrısı yok: en kritik kısıtlama — Functions hermetik kapalıdır
- Deterministik: aynı input her zaman aynı outputu döner (workaround olmadan tarih, random number yok)
2026daki yedi Function API
Mayıs 2026 itibarıyla productionda yedi Function API mevcut:
- Product Discount Function — tekil line item ya da product variantlar üzerinde indirim
- Order Discount Function — sepetin tamamı için subtotal indirimi
- Shipping Discount Function — kargo ücretinde indirim (örn. ücretsiz kargo)
- Delivery Customization Function — kargo yöntemini gizle, yeniden adlandır, sırala
- Payment Customization Function — ödeme yöntemini gizle, yeniden adlandır, sırala
- Cart Transform Function — line itemleri genişlet (bundle), birleştir ya da farklı sun
- Cart and Checkout Validation Function — iş kuralı ihlal edildiğinde checkoutu engelle
Functionsa gerçekten ne zaman ihtiyacınız var (ne zaman değil)
Bir Function inşa etmeden önce karar matrisini bu sırayla geçin:
- Native Shopify kuralı: Admindeki bir discount kodu, standart shipping kuralı ya da Shopify Markets çözer mi? Çözüyorsa onu kullanın.
- Marketplace app: Shopify App Storeda kanıtlanmış bir app var mı (Discounty, Bold Discounts, Advanced Shipping Rules)? Varsa ve lisans ücreti 200 EUR/ay altındaysa: çoğu zaman doğru karar.
- Custom Function: Native ve app uymuyorsa Function kurun.
Functions önerdiğimiz gerçek senaryolar:
- Tiered B2B discountlar: 1.000 EURdan itibaren yüzde 5, 5.000 EURdan itibaren yüzde 10, 10.000 EURdan itibaren yüzde 15 — customer-tag tabanlı multiplikatörle birleşik. Hiçbir app bunu temiz çözmez.
- Dinamik shipping kuralları: sepette kırılgan ürün varsa express kargoyu gizle; 50kg üzeri freight zorunlu kıl.
- Bölgeye özgü payment hide: fatura sadece DACHta verified B2B müşteriler için; iptal oranı yüksek ülkelerde Klarnayı gizle.
- Bundle logic: satın alınan bundle stok için üç line iteme genişler, ama müşteriye tek item olarak görünür.
- MOQ doğrulaması: B2B müşteri minimum sipariş miktarının altına düştüğünde checkoutu engelle.
Yedi Function APInin detayı
1. Product Discount Function
Bu Function tekil line itemlar üzerinde discount operasyonu listesi döner. „X kategorisinden 2 al, üçüncüsü yüzde 30 indirimli" ya da „member-only XYZ marka tagine yüzde 15" gibi use caseler için idealdir.
Input şeması (kısaltılmış):
query Input {
cart {
lines {
id
quantity
merchandise {
... on ProductVariant {
id
product {
tags
inAnyCollection(ids: ["gid://shopify/Collection/123"])
}
}
}
}
buyerIdentity {
customer {
hasAnyTag(tags: ["vip", "wholesale"])
}
}
}
discountNode {
metafield(namespace: "functions", key: "config") {
value
}
}
}
„Collection 123ten 2 al, üçüncüye yüzde 30" için Rust implementasyonu:
use shopify_function::prelude::*;
use shopify_function::Result;
#[shopify_function_target(query_path = "src/run.graphql", schema_path = "schema.graphql")]
fn run(input: input::ResponseData) -> Result<output::FunctionRunResult> {
let mut eligible_lines: Vec<_> = input.cart.lines.iter()
.filter(|line| matches!(
&line.merchandise,
input::InputCartLinesMerchandise::ProductVariant(v)
if v.product.in_any_collection
))
.collect();
if eligible_lines.len() < 3 {
return Ok(output::FunctionRunResult { discounts: vec![], discount_application_strategy: output::DiscountApplicationStrategy::FIRST });
}
eligible_lines.sort_by(|a, b| a.quantity.cmp(&b.quantity));
let target_line = eligible_lines.first().unwrap();
Ok(output::FunctionRunResult {
discounts: vec![output::Discount {
message: Some("Buy 2 get 30% off third".into()),
targets: vec![output::Target::ProductVariant(
output::ProductVariantTarget {
id: target_line.merchandise_variant_id().to_string(),
quantity: Some(1),
},
)],
value: output::Value::Percentage(output::Percentage { value: 30.0.into() }),
}],
discount_application_strategy: output::DiscountApplicationStrategy::FIRST,
})
}
Aynı logicin JavaScript versiyonu:
// @ts-check
export function run(input) {
const eligible = input.cart.lines.filter(
(line) => line.merchandise.__typename === "ProductVariant"
&& line.merchandise.product.inAnyCollection
);
if (eligible.length < 3) {
return { discounts: [], discountApplicationStrategy: "FIRST" };
}
eligible.sort((a, b) => a.quantity - b.quantity);
const target = eligible[0];
return {
discounts: [{
message: "Buy 2 get 30% off third",
targets: [{ productVariant: { id: target.merchandise.id, quantity: 1 } }],
value: { percentage: { value: 30.0 } }
}],
discountApplicationStrategy: "FIRST"
};
}
Dikkat: discount stacking logici incedir — birden fazla Function aynı line itemi indirime almak isterse stratejiye göre FIRST ya da MAXIMUM kazanır. Edge caseleri Function Runner ile test edin.
2. Order Discount Function
Sepetin subtotalı üzerinde indirim. Klasik örnek: „200 EURun üstünde VIP müşterilere yüzde 10".
#[shopify_function_target(query_path = "src/run.graphql", schema_path = "schema.graphql")]
fn run(input: input::ResponseData) -> Result<output::FunctionRunResult> {
let subtotal: f64 = input.cart.cost.subtotal_amount.amount.into();
let is_vip = input.cart.buyer_identity
.as_ref()
.and_then(|bi| bi.customer.as_ref())
.map(|c| c.has_any_tag)
.unwrap_or(false);
if subtotal < 200.0 || !is_vip {
return Ok(output::FunctionRunResult { discounts: vec![], discount_application_strategy: output::DiscountApplicationStrategy::FIRST });
}
Ok(output::FunctionRunResult {
discounts: vec![output::Discount {
message: Some("VIP 10% over 200 EUR".into()),
targets: vec![output::Target::OrderSubtotal(output::OrderSubtotalTarget {
excluded_variant_ids: vec![],
})],
value: output::Value::Percentage(output::Percentage { value: 10.0.into() }),
}],
discount_application_strategy: output::DiscountApplicationStrategy::FIRST,
})
}
3. Shipping Discount Function
Kargo ücretinde indirim — çoğunlukla „X eşik üstünde ücretsiz kargo". Önemli: bu sadece zaten hesaplanmış bir shipping rate üzerinde discount uygular. Shipping rateleri tamamen gizlemek ya da yeniden adlandırmak için Delivery Customization Function gerekir (sonraki bölüm).
export function run(input) {
const subtotal = parseFloat(input.cart.cost.subtotalAmount.amount);
const targets = input.cart.deliveryGroups.flatMap((group) =>
group.deliveryOptions.map((option) => ({
deliveryOption: { handle: option.handle }
}))
);
if (subtotal < 75.0 || targets.length === 0) {
return { discounts: [], discountApplicationStrategy: "FIRST" };
}
return {
discounts: [{
message: "Free shipping over 75 EUR",
targets,
value: { percentage: { value: 100.0 } }
}],
discountApplicationStrategy: "FIRST"
};
}
4. Delivery Customization Function
Bu Function gösterilen kargo yöntemleri listesini manipüle eder. Üç operasyon mümkün: hide, rename ve move (sıralama değiştir). Use case: sepette „fragile" tagli ürün varsa express kargoyu gizle.
export function run(input) {
const hasFragile = input.cart.lines.some((line) =>
line.merchandise.__typename === "ProductVariant"
&& line.merchandise.product.hasAnyTag
);
if (!hasFragile) {
return { operations: [] };
}
const operations = input.cart.deliveryGroups.flatMap((group) =>
group.deliveryOptions
.filter((option) => option.title.toLowerCase().includes("express"))
.map((option) => ({
hide: { deliveryOptionHandle: option.handle }
}))
);
return { operations };
}
5. Payment Customization Function
Delivery Customization ile aynı, ama ödeme yöntemleri için. Popüler use case: faturayı sadece „credit-approved" tagli B2B müşterilere göster.
export function run(input) {
const isCreditApproved = input.cart.buyerIdentity?.customer?.hasAnyTag === true;
if (isCreditApproved) {
return { operations: [] };
}
const operations = input.paymentMethods
.filter((method) => method.name.toLowerCase().includes("invoice")
|| method.name.toLowerCase().includes("rechnung"))
.map((method) => ({
hide: { paymentMethodId: method.id }
}));
return { operations };
}
6. Cart Transform Function
Bu Function daha güçlü ve daha karmaşıktır. Line itemları expand edebilir (bundle stok için üç ayrı iteme dönüşür) ya da merge edebilir (üç item gösterimde tek bundle olur). Bundle bileşenlerini tanımlamak için Cart Transforma özgü metafieldlar gerekir.
Use case: bir „starter kit" ürünü üç bileşen içeriyor. Storefrontta müşteri tek item görür, sipariş üç line item olarak gelir, böylece WMS her bileşeni doğru toplayabilir.
export function run(input) {
const operations = input.cart.lines
.filter((line) => line.merchandise.__typename === "ProductVariant"
&& line.merchandise.bundleComponents?.value)
.map((line) => {
const components = JSON.parse(line.merchandise.bundleComponents.value);
return {
expand: {
cartLineId: line.id,
expandedCartItems: components.map((c) => ({
merchandiseId: c.variantId,
quantity: c.quantity * line.quantity,
price: { adjustment: { fixedPricePerUnit: { amount: c.price } } }
}))
}
};
});
return { operations };
}
7. Cart and Checkout Validation Function
İş kuralları ihlal edildiğinde checkoutu engeller. Örnek: B2B müşteri MOQun altında sipariş verme girişimi ya da sepette uyumsuz karışık ürünler.
export function run(input) {
const errors = [];
const moq = 50;
const totalQty = input.cart.lines.reduce((sum, line) => sum + line.quantity, 0);
const isB2B = input.cart.buyerIdentity?.customer?.hasAnyTag === true;
if (isB2B && totalQty < moq) {
errors.push({
localizedMessage: `B2B minimum order is ${moq} units. Current cart: ${totalQty}.`,
target: "$.cart"
});
}
return { errors };
}
Build ve deploy workflowu
Tam Functions workflowu Shopify CLI 3.x üzerinde çalışır. Makine başına bir kerelik setup:
npm install -g @shopify/cli @shopify/app
shopify version # 3.50.0 ya da üstü olmalı
shopify app init my-functions-app --template=remix
cd my-functions-app
shopify app generate extension --type=product_discounts --name=tiered-b2b-discount
Function extensions/tiered-b2b-discount/ altında src/run.ts ya da src/lib.rs, bir GraphQL query dosyası ve Shopify config ile generate edilir. Function Runner ile lokal test:
cat test-input.json # contains: { "cart": { "lines": [...] } }
shopify app function run --path=extensions/tiered-b2b-discount < test-input.json
Deployment:
shopify app deploy
Her deploy yeni bir versiyon yaratır. Shopify adminde versiyonlar arası geçiş yapabilirsiniz — production buglarında rollback için kritik. Versiyonlar Shopify Partners API üzerinden numaralandırılır; 2026da versions API kararlıdır ve Function başına version pinningi destekler.
Rust vs JavaScript — hangi dili seçmeli
Her iki dil de Wasma derlenir, her ikisi de resmi olarak desteklenir, her ikisi de aynı edgede çalışır. Ama trade-offlar gerçek:
| Boyut | Rust | JavaScript (Javy) |
|---|---|---|
| Cold latency | 3-5ms | 10-30ms |
| Bytecode boyutu | tipik 30-100KB | tipik 80-220KB |
| Öğrenme eğrisi | dik (borrow checker, lifetimes) | düz (modern ES6/TS) |
| Yazma hızı | 2-3 kat yavaş | baseline |
| Type safety | compile-time garantili | sadece TypeScript ile |
| JSON handling | serde, biraz verbose | native, kolay |
| Wasm toolchainı | cargo + wasm-pack olgun | Javy 2024ten beri stabil |
2026 önerimiz:
- JavaScript: basit discount logici, hızlı prototip, Rust deneyimi olmayan ekipler, 50 satır altı logic içeren Functions
- Rust: hesap-yoğun validation Functionsları, büyük bundle hiyerarşili Cart Transformlar, karmaşık tiered discount engineları, 256KB limitine yaklaşan Functions
Pratik kural: Functionslarımızın yüzde 70ini JavaScript, yüzde 30unu Rust ile yazıyoruz. Performans farkı gerçek ama çoğu use casete insan algı eşiğinin altında.
Shopify Scriptsten Functionsa migration
2026da hâlâ migrate olmamış bir mağaza varsa sorun var — Scripts Ağustos 2025te tamamen kapatıldı. Migration 1:1 değil, çünkü programlama modeli temelden farklı.
| Eski Script tipi | Yeni Function API | Migration zorluğu |
|---|---|---|
| Line Item Script | Product Discount Function | kolay |
| Shipping Script | Delivery Customization + Shipping Discount | orta (iki Function gerekli) |
| Payment Script | Payment Customization Function | kolay |
| Bundle logic (informal) | Cart Transform Function | zor (yeni veri modellemesi) |
| MOQ doğrulaması | Cart and Checkout Validation Function | kolay |
Migrationda en sık tökezleme noktaları:
- Harici API çağrıları: Scriptlerde bazen harici çağrılar için workaroundlar vardı. Functions yapamaz. Bu datayı cart-metafield modeline taşımak zorundasınız.
- Customer-tag logici: taglar artık
hasAnyTagüzerinden açıkça sorgulanabilir. Eskiden customer notesı parse edenler yapıyı değiştirmek zorunda. - Discount stacking: Functionsda açık bir
discountApplicationStrategyvardır. Eski logic FIRST, MAXIMUM ya da ALL hangisine denk geliyor, doğrulayın. - Test coverage: Scripts canlı checkoutta test ediliyordu. Functions için Function Runner ve ideal olarak otomatik test suiti gerekir.
Case study — Plus merchant 4 Function ile 180K EUR marj kazanıyor
Kuzey Ren-Vestfalyadan bir Shopify Plus merchant, talep üzerine anonim, B2B + DTC hibrit yaklaşık 4,2 milyon EUR yıllık ciro yapıyor. Şubat 2026 durumu:
- Scripts Ağustos 2025ten beri kapalı, geçici çözüm manuel discount kodları
- Operasyon ekibi ayda 80 saatini manuel düzeltmeye harcıyor
- Discount hataları ayda 12-18K EUR fazla verilen indirim olarak maliyet
- B2B müşteriler eksik tier discountlarından şikayetçi
- Express kargo kırılgan cam ürünlere de sunuluyor — yüzde 7 kırık oranı
8 hafta içinde dört Function inşa ettik:
- Tiered B2B Order Discount Function (Rust) — dört tier, top hesaplar için customer-tag multiplikatörü ile birleşik
- Fragile Items Delivery Customization Function (JavaScript) — sepette „fragile" tag varsa express kargoyu gizler
- B2B Invoice Payment Customization Function (JavaScript) — fatura sadece credit-approved müşterilere
- Bundle Cart Transform Function (Rust) — üç starter kit WMS picking için bileşenlere genişler
Üç ay productionda kaldıktan sonra sonuç:
- Discount hataları: 14K EUR/ay → 200 EUR/ay
- Manuel ops saati: 80/ay → 6/ay
- Cam ürün kırık oranı: yüzde 7 → yüzde 0,4
- Ortalama B2B sipariş değeri: doğru uygulanan tier discountlarıyla yüzde 18 artış
- Yıllıklandırılmış etki: yaklaşık 180K EUR marj geri kazanımı
Yatırım: 24K EUR implementation, 800 EUR/ay bakım retainerı. ROI ikinci ayda yakalandı.
Tipik Functions delivery sürecimiz
Hafta 1: Discovery
Mevcut tüm custom logic gereksinimlerini map ediyoruz, legacy Scripts (hâlâ varsa) çıkarıyoruz, manuel süreçler için ops ve sales ekibiyle görüşüyoruz, veri kaynaklarını (customer tag, metafield, collection) belirliyoruz. Çıktı: planlanan her Function, input dataları ve başarı kriterleri içeren bir doküman.
Hafta 2: Mimari
Function başına dil seçimi (Rust vs JavaScript), metafield şema tasarımı, GraphQL query modellemesi, test stratejisi, deploy pipelineı. Shopify CLI ile app iskeletini scaffold ediyor ve repoyu commit ediyoruz.
Hafta 3-7: Implementation
Function başına: iskelet, GraphQL query, logic, unit test, Function Runner integration testi. Dört Function tipik olarak karmaşıklığa göre 3-5 hafta sürer.
Hafta 8: Test ve deployment
Dev storeda tam end-to-end test, performans profili, version pinningli production deploy, kritik Functions için iki haftalık A/B test fazı.
Devam: Handover
Dokümantasyon, Shopify Functions Logs API üzerinden monitoring kurulumu, API versiyon güncellemeleri ve küçük logic ayarları için bakım retainerı.
2026da Functions geliştirme için en iyi Shopify app ve toollar
| Tool | Amaç | Ne zaman kullanılır |
|---|---|---|
| Shopify CLI 3.x | Function scaffolding, lokal test, deploy | Zorunlu — her Function projesinin temel toolu |
| Function Runner | Test inputları ile lokal Function execution | Geliştirme sırasında, her deploy öncesi |
| GraphQL Admin API Explorer | Query geliştirme, şema inceleme | Her yeni Functionda input doğrulama için |
| Shopify Functions API Reference | Resmi şema dokümantasyonu | Output shape ve strategy lookupu |
| App Bridge | Functions için admin UI konfigürasyonu | Merchantın Function parametrelerini kendi ayarlaması gerektiğinde |
| Polaris Components | Admin settings paneli için UI library | Her configuration UIsi için standart |
| Shopify Flow | Functions etrafında workflow orchestrationu | Function triggerları başka eventlerle tetiklenecekse |
| Klaviyo Server-Side Events | Discount sonrası marketing eventi tetikleme | Agresif e-mail otomasyonu olan DTC markaları için |
| VS Code Shopify Extension | Liquid + Functions syntax highlighting | Her Shopify projesinde DX iyileştirmesi |
| wasm-pack | Rust-to-Wasm toolchainı | Her Rust tabanlı Function için |
| Hydrogen Storefront | Functions ile frontend entegrasyonu | Custom cart UIli headless setuplarda |
| Postman / Insomnia | Metafield setupı için Admin API testi | Configuration metafieldlı her Functionda |
Sıkça sorulan sorular
Shopify Functions kullanmak için Rust bilmek gerekir mi?
Hayır. Javy toolchainı üzerinden JavaScript resmi olarak desteklenir ve Functionsların büyük çoğunluğunda yeterlidir. Rust yaklaşık 3-5 kat daha iyi cold latency ve daha sıkı bytecode verir, ama basit discount logici için performans farkı zar zor algılanır. Default olarak JavaScripti, sadece hesap-yoğun Cart Transform ya da Validation Functions için Rustı öneriyoruz.
Functions Shopify Plusa dahil mi yoksa ek ücret mi var?
Functionsın kendisi her Shopify planına dahildir, ek ücret yoktur — Lambdadaki gibi per-execution ücreti yok. Ancak merchant başına limitler var: mağaza başına maksimum 5 Discount Function, 1 Cart Transform Function, 5 Validation Function (Mayıs 2026 itibarıyla). Custom app lisansları ya da geliştirme için ajans saatleri ayrıdır.
Functions harici API çağrısı yapabilir mi?
Hayır, ve bu en kritik kısıtlamadır. Functions hermetik kapalıdır — sabit latency budgetı içinde Wasm-sandboxed çalışır. İhtiyaç duyduğunuz tüm data cart inputundan, customer datasından ya da metafieldlardan gelmek zorunda. Logiciniz harici dataya ihtiyaç duyuyorsa onu bir background job ile metafieldlara senkronize etmeniz gerekir (genellikle Shopify Flow ya da ayrı bir app üzerinden).
Checkouta ne kadar latency ekler?
Tipik olarak Rust için 3-5ms, JavaScript için 10-30ms. 800ms checkout roundtripine kıyasla ihmal edilebilir. Shopify Function başına sert 5ms execution limiti uygular — aşarsanız Function abort edilir ve operasyonları görmezden gelinir. Functions mümkün olduğunda paralel çalıştırılır.
Bir Functionı canlıya almadan nasıl test ederim?
Üç aşama: (1) Geliştirme sırasında sentetik inputlarla Function Runner. (2) Gerçek cart akışında end-to-end test için development store deployu. (3) Gerçek payment metodlarıyla pre-production testi için staging store ya da Plus branch storeu. CI pipelineında otomatik Function-Runner testleri öneriyoruz.
Shopify yeni bir API versiyonu çıkarınca Functionsa ne olur?
Functions açıkça bir API versiyonuna bağlıdır (örn. 2025-10). Shopify yeni bir versiyon çıkardığında Functionınız siz aktif olarak migrate edene kadar eski versiyonda çalışmaya devam eder. Shopify versiyon başına tipik olarak 12 ay migration penceresi verir. Versiyon migration: GraphQL queryyi güncelle, gerekirse output shapeleri ayarla, yeniden deploy et, eski versiyonu arşivle.
Sonuç — hepsini bir araya getirmek
Shopify Functions 2026da artık opsiyon değil, non-trivial iş mantığı olan her Plus merchant için zorunluluk. Eski Scripts ölü, app marketi yalnızca en yaygın yüzde 60 use casei kapsıyor ve marjı ya da operasyonel verimliliği gerçekten etkileyen her şey custom Functionsdan geçiyor. Bunu görmezden gelen ya manuel emekle ya da yanlış uygulanan discountlar yüzünden marj kaybıyla ödüyor.
İyi haber: tooling 2026da olgunlaştı. Shopify CLI 3.x stabil, Function Runner sağlam test deneyimi sunuyor, JavaScript desteği öğrenme eğrisini dramatik şekilde düşürdü ve GraphQL tabanlı şemalar programlama modelini açık ve test edilebilir kılıyor. Bir Functionı başarıyla deploy ettikten sonra kavramsal sorun ortadan kalkar — sonraki Functions daha hızlı gelir.
Functions değerlendiriyor, başlangıç yapıyor ya da Scriptsten migrate ediyorsanız ilgili pillar postlarımızı da okuyun: frontend entegrasyonu için Shopify Hydrogen ve Headless Commerce, checkout UI özelleştirmesi için Shopify Checkout Extensibility ve B2Bdeki en yaygın Functions uygulaması için Shopify Plus B2B Wholesale Portal. Somut bir discovery görüşmesi için Korschenbroichteki Shopify Plus ajansımıza ulaşın — Düsseldorftan 20 dakika, gerçek Functions deneyimiyle.