Salesforce'un Winter '27 sürümü (API 68.0), 12 Ekim 2026'da genel kullanıma açılıyor. Bu sürümde Agentforce tarafı yine gündemin merkezinde olsa da asıl sürpriz, günlük geliştirme işini doğrudan etkileyen platform yenilikleri.
Yıllardır etrafından dolandığımız heap limitleri, mock'larla sınırlı kalan entegrasyon testleri ve LWC'de sadece formatlama için yazılan getter'lar bu sürümle ciddi şekilde değişiyor. Bu yazıda Apex, LWC ve API tarafında projelerimize en hızlı yansıyacak yenilikleri, dikkat edilmesi gereken noktalarla birlikte ele alıyoruz.
Not: Bazı özellikler beta veya Developer Preview aşamasında. Bu özellikleri production ortamında kullanmadan önce sandbox'ta denemek ve sürüm notlarını takip etmek gerekiyor.
1. Apex Heap Limitleri Artıyor
Winter '27 ile senkron işlemlerde heap limiti 6 MB'dan 10 MB'a, asenkron işlemlerde ise 12 MB'dan 25 MB'a çıkıyor. Bu, özellikle production'daki yüksek veri hacminde ortaya çıkan ve geliştirme ortamında yakalanamayan heap hatalarını ciddi ölçüde azaltacak.
| İşlem Türü | Önceki Limit | Winter '27 | Artış |
|---|---|---|---|
| Senkron (trigger, buton tıklaması) | 6 MB | 10 MB | %66 |
| Asenkron (Batch, Queueable, Future) | 12 MB | 25 MB | %108 |
- Geçiş Ayarı: Salesforce, "Enforce the Summer '26 Apex heap limit" adında bir ayar ekledi. Sandbox Winter '27'ye geçmiş ama production henüz geçmemişse, bu ayarla kodunuzu eski limitlere göre test edip deploy sırasında sürprizle karşılaşmazsınız.
- Kontrol: Org'unuzdaki güncel limiti
Limits.getLimitHeapSize()metoduyla doğrulayabilirsiniz. - Dikkat: Limitin artması, verimsiz kodu meşrulaştırmamalı. Batch scope'larını küçültmek için yazılmış geçici çözümleri gözden geçirmek için iyi bir fırsat; ancak büyük koleksiyonları bellekte tutmak yerine SOQL for-loop kullanmak hâlâ en doğru yaklaşım.
2. Gerçek Callout ile Apex Entegrasyon Testleri (Developer Preview)
Mock callout'lar, kodumuzun belirli bir formattaki yanıtı doğru işlediğini kanıtlar; ancak dış servisin gerçekte döndüğü yanıtı garanti etmez. Winter '27 ile gelen entegrasyon testleri, Apex testlerinden gerçek HTTP callout yapılmasına izin veriyor.
- Kurulum: Scratch org tanım dosyasında
ApexIntegrationTestsözelliği açılır, test sınıfı ve ilgili metotlar@IntegrationTestanotasyonu ile işaretlenir. - Veri Yönetimi: Bu testlerde otomatik rollback yok. Paylaşılan test verisi
@BeforeClassile oluşturulur, işlem sonunda commit edilen veri@TearDownmetodu ile temizlenir. - Kısıtlar: Aynı anda yalnızca bir entegrasyon testi çalışabiliyor ve testler sadece asenkron olarak koşturulabiliyor.
Entegrasyon yoğun projelerde, dış sistemin API formatı sessizce değiştiğinde bunu production'a çıkmadan yakalamak için değerli bir araç. Henüz Developer Preview olduğu için şimdilik scratch org'larda denemek doğru olur.
3. LWC Tarafında İki Önemli GA
Karmaşık Template İfadeleri (Complex Template Expressions)
Spring '26'da beta olarak gelen bu özellik Winter '27 ile genel kullanıma açıldı. Artık HTML template içinde JavaScript ifadelerinin geniş bir alt kümesi kullanılabiliyor.
- Daha Az Getter: Sadece veri formatlamak veya CSS class metni oluşturmak için yazılan getter'lara gerek kalmıyor.
- Döngülerde Kolaylık: Getter, döngüde hangi eleman için çağrıldığını bilemediği için veriyi JS tarafında map ile zenginleştirmek zorundaydık. Artık ham veriyi bağlayıp hesaplamayı template'te yapabiliyoruz.
- Opt-in: Özellik yalnızca API 66.0 ve üzeri sürümlerde çalışıyor ve bileşen bazında
.js-meta.xmldosyasından açılıyor.
Üçüncü Parti Web Bileşenleri (lwc:external)
Gelişmiş bir üçüncü parti bileşeni LWC'de göstermek için iframe (stil sorunlarıyla birlikte), static resource ile kütüphane yüklemek veya bileşeni sıfırdan yazmak gerekiyordu. Artık template'teki elemana lwc:external direktifi eklenerek standart web bileşenleri doğrudan kullanılabiliyor.
Bu iki özellik birlikte düşünüldüğünde, JS dosyalarımız incelecek ve bakım maliyeti düşecek. Yeni bileşenlerde API sürümünü güncel tutmak, bu özelliklerden yararlanmanın ön koşulu.
4. SOQL, REST API ve Derleme Tarafında Küçük Ama Etkili Değişiklikler
SOQL'de Alanları Karşılaştırma: FORMULA() (Beta)
İki alanı karşılaştırmak için ya sadece sorguda kullanılacak bir formula alanı oluşturuyor ya da fazla veri çekip Apex'te filtreliyorduk. Artık WHERE koşulu içinde basit hesaplamalar yapılabiliyor:
SELECT Id, Name FROM Opportunity
WHERE FORMULA('Amount_To_Pay__c - Amount_Paid__c') > 0
Özellik şu an beta; API 68.0 ve üzeriyle sandbox, Developer Edition ve scratch org'larda çalışıyor, production'da henüz kullanılamıyor.
REST API'de "latest" Sürümü
Entegrasyonlarda URI içindeki sürüm numarası yerine artık latest yazılabiliyor: /services/data/latest/sobjects/Account. Her sürümde URI güncelleme derdi ortadan kalkıyor. Ancak davranışı sürümden sürüme değişebilecek kritik entegrasyonlarda sabit sürüm kullanmaya devam etmek daha kontrollü bir tercih olabilir.
Sadece Geçersiz Apex Sınıflarını Derleme
Büyük org'larda tüm Apex sınıflarını yeniden derlemek uzun sürdüğü için genelde ertelenir. Winter '27 ile yalnızca geçersiz (invalid) sınıf ve trigger'ları derleme seçeneği geliyor.
Bonus: Managed Package'larda Alan Adı Çakışması
ISV tarafında Database.QueryOptions üzerindeki explicitNamespace özelliği ile dinamik SOQL sorgularında abone org'daki aynı isimli custom alanlarla çakışma yaşanmasının önüne geçilebiliyor.
Sonuç: Geçişe Nasıl Hazırlanmalı?
Winter '27, geliştiriciler için uzun zamandır beklenen iyileştirmeleri tek sürümde topluyor. Production geçişinden önce aşağıdaki adımları atmak faydalı olacaktır:
- Sandbox'ları güncel metadata ile yenileyip mevcut test sınıflarını Winter '27 üzerinde çalıştırın.
- Heap hatası nedeniyle scope'u düşürülmüş Batch job'ları listeleyin ve yeni limitlerle yeniden değerlendirin.
- Yeni LWC bileşenlerinde API sürümünü güncelleyerek karmaşık template ifadelerinden yararlanın.
- Beta ve Developer Preview özelliklerini yalnızca sandbox ve scratch org'larda deneyin.
Bu yeniliklerin projelerimize etkisini birlikte takip etmek, ekip olarak sürüm geçişlerini daha sorunsuz yönetmemizi sağlayacaktır.
