𝗬𝗼𝘂𝗿 𝗔𝗽𝗲𝘅 𝗠𝗶𝗴𝗵𝘁 𝗥𝗲𝘁𝘂𝗿𝗻 𝗙𝗲𝘄𝗲𝗿 𝗥𝗲𝗰𝗼𝗿𝗱𝘀 𝗶𝗻 𝗦𝘂𝗺𝗺𝗲𝗿 '𝟮𝟲
Salesforce Summer '26 (API v67.0) membawa perubahan besar pada Apex. Perubahan ini dapat mengubah hasil kode Anda tanpa memunculkan error.
Selama bertahun-tahun, Apex berjalan dalam system mode secara default. Ini berarti SOQL, SOSL, dan DML mengabaikan izin pengguna (user permissions) dan aturan berbagi (sharing rules). Kode Anda bisa saja menampilkan data kepada pengguna yang seharusnya tidak dapat melihatnya.
Pada API v67.0, setelan default-nya berubah. Operasi database kini berjalan dalam user mode.
Apa yang berubah di v67.0:
• SOQL, SOSL, dan DML menerapkan izin pengguna dan aturan berbagi secara default. • Class tanpa deklarasi sharing kini secara default menjadi "with sharing." • "WITH SECURITY_ENFORCED" dihapus. Anda harus menggunakan "WITH USER_MODE" sebagai gantinya. • Trigger selalu berjalan dalam system mode.
Perubahan ini terikat pada versi API dari class Anda. Class lama Anda akan tetap sama sampai Anda meningkatkannya ke versi 67.0. Hal ini memungkinkan Anda untuk mengontrol migrasi tersebut.
Waspadai masalah-masalah tersembunyi berikut:
- Record yang lebih sedikit dalam query: Sebuah query mungkin mengembalikan 40 baris alih-alih 500 karena pengguna tidak memiliki akses. Ini menyebabkan total yang salah dan laporan yang tidak akurat.
- Error kompilasi: "WITH SECURITY_ENFORCED" akan gagal dikompilasi pada versi baru.
- Kegagalan integrasi: Pengguna integrasi mungkin kehilangan akses ke data yang mereka butuhkan untuk pekerjaan otomatis (automated jobs).
- Perubahan sharing: Class yang mengandalkan tanpa deklarasi sharing kini akan menerapkan sharing.
Cara migrasi dengan aman:
- Inventarisasi kode Anda: Cari "WITH SECURITY_ENFORCED" dan class tanpa deklarasi sharing.
- Uji di sandbox: Perbarui class berisiko tinggi seperti controller dan REST endpoint terlebih dahulu.
- Gunakan System.runAs(): Jangan hanya percaya pada test yang berhasil (passing tests). Uji dengan pengguna terbatas untuk memeriksa visibilitas data.
- Lakukan dengan sengaja: Hanya gunakan "SYSTEM_MODE" atau "without sharing" jika Anda memiliki alasan khusus.
Melakukan perubahan ini sekarang akan mencegah bug produksi yang tersembunyi di kemudian hari.
Komunitas pembelajaran opsional: https://t.me/GyaanSetuAi