# Hapus akun di app iOS: alur yang wajib dites sebelum Apple

> Tombol hapus, data terkait, langganan, dan login ulang: daftar uji konkret untuk memeriksa alur ini sebelum dikirim ke App Review.

Halaman asli: [Hapus akun di app iOS: alur yang wajib dites sebelum Apple](https://devoria.fr/id/blog/hapus-akun-app-ios-alur-tes-sebelum-apple)
Penulis: [Mehdi Azizi](https://devoria.fr/id/mehdi-azizi)
Terbit: 2026-10-02
Revisi konten terakhir: 2026-10-09


## Tombol saja tidak cukup: kamu harus cek apa yang benar-benar hilang

Kalau app kamu memungkinkan pembuatan akun, Apple meminta agar pengguna bisa memulai penghapusan akun itu dari dalam app. Sekadar menonaktifkan akun tidak memenuhi syarat ini. Alurnya harus mudah ditemukan dan menjelaskan konsekuensinya. Kalau sebagian prosesnya selesai di Web, tautannya harus langsung menuju halaman yang bersangkutan. [Sumber: penghapusan akun menurut Apple](https://developer.apple.com/support/offering-account-deletion-in-your-app).

Jadi pekerjaannya tidak berhenti di tombol merah di pengaturan. Kamu perlu mendata semua data, menjalankan penghapusan di sisi server, menangani error, lalu memeriksa apa yang dilihat pengguna setelahnya. Panduan ini memberi daftar uji dari sisi produk dan teknis. Data yang wajib disimpan karena kewajiban hukum perlu ditangani sesuai jenis usahamu.

## Mulai dari peta data

Ambil contoh app fiktif catatan bacaan. App ini punya akun, profil, catatan pribadi, dan foto sampul yang ditambahkan pengguna. Contoh di bawah adalah rencana yang perlu diverifikasi, bukan penghapusan yang sudah dijalankan di app Devoria.

- **Identitas login:** bagaimana membuat akun tidak bisa dipakai lagi setelah dihapus?
- **Profil dan catatan:** baris data mana yang milik orang ini, dan bagaimana menghapusnya?
- **Foto yang disimpan:** proses apa yang menghapus file beserta referensinya?
- **Cache di ponsel:** apakah layar menghapus data lokal saat operasinya benar-benar berhasil?
- **Layanan pihak ketiga:** apakah data yang terkait akun ini perlu dihapus secara terpisah?
- **Data yang harus disimpan:** data apa saja, untuk kewajiban apa, dan bagaimana pengguna diberi tahu?

Peta ini mencegah kamu baru sadar belakangan bahwa sebuah foto masih bisa diakses padahal data pengguna sudah hilang. Peta ini juga memberimu daftar objek yang harus dicari saat pengujian.

## Alur yang jelas dalam empat status

Ini usulan untuk app fiktif tadi, sesuaikan dengan konsekuensi nyata di produkmu:

1. **Pengaturan akun.** Menu "Hapus akun saya" selalu bisa diakses.
2. **Konfirmasi.** Layar menjelaskan data yang terdampak dan menampilkan opsi batal yang sama jelasnya dengan opsi hapus.
3. **Proses.** Tombol mencegah permintaan ganda, dan antarmuka menunjukkan bahwa operasi sedang berjalan.
4. **Hasil.** Keberhasilan yang sudah terkonfirmasi membuka status logout. Kegagalan menampilkan pesan yang berguna dan cara untuk mencoba lagi, tanpa mengklaim akunnya sudah hilang.

Kalau prosesnya butuh waktu, Apple menerima alur tertunda asalkan pengguna diberi tahu dan penyelesaiannya dikonfirmasi. App tidak boleh membuat orang mengira penghapusan sudah selesai padahal baru permintaannya yang tercatat. [Dokumentasi Apple](https://developer.apple.com/support/offering-account-deletion-in-your-app) yang sama juga menjelaskan kasus autentikasi ulang dan pengecualian untuk bidang usaha yang sangat diatur.

## Yang perlu diantisipasi dengan Supabase

Menghapus pengguna Auth saja belum membuktikan bahwa semua objek di produkmu sudah ditangani. Supabase menjelaskan, misalnya, bahwa pengguna yang masih memiliki objek Storage tidak bisa dihapus sebelum hal itu diselesaikan. Dokumentasinya juga menyebut bahwa menghapus pengguna tidak langsung membuat semua JWT yang sudah diterbitkan jadi tidak berlaku: masa berlakunya harus diperhitungkan dalam desain. [Sumber: pengelolaan pengguna Supabase](https://supabase.com/docs/guides/auth/managing-user-data).

Jadi, buat proses di server yang memverifikasi identitas peminta dan resource miliknya. Jangan mengandalkan ID yang dikirim bebas dari ponsel untuk memilih akun yang dihapus. Hak admin tetap di sisi server, sesuai [dokumentasi kunci Supabase](https://supabase.com/docs/guides/getting-started/api-keys).

Untuk proses bertahap, tentukan apa yang harus dilakukan percobaan ulang kalau tahap pertama berhasil tapi tahap berikutnya gagal. Misalnya, kalau file sudah dihapus, permintaan baru tidak boleh gagal hanya karena file itu tidak ada. Ini skenario yang harus ditulis sebelum pengujian, bukan perilaku yang diasumsikan.

## Akun dan langganan: dua pemeriksaan terpisah

Seseorang bisa menghapus akunnya sementara langganan Apple tetap berjalan. Apple meminta kamu menjelaskan nasib tagihannya dan memberi akses ke pengelolaan langganan. Siapkan juga pencabutan token yang sesuai kalau kamu memakai Sign in with Apple. Poin-poin ini dijelaskan di [panduan Apple tentang penghapusan](https://developer.apple.com/support/offering-account-deletion-in-your-app).

Di rencana pengujianmu, pisahkan hilangnya akun, status akses berbayar, dan pengelolaan langganan. Panduan [langganan atau pembelian sekali bayar](https://devoria.fr/id/blog/langganan-atau-beli-sekali-aplikasi-ios) membantu menempatkan alur ini dalam model bisnismu.

## Daftar uji yang dijalankan di build tes

Gunakan hanya akun tes dan data fiktif. Catat build, perangkat, hasil yang diamati, dan batasan setiap pemeriksaan.

1. **Batal.** Akun dan data tetap bisa diakses.
2. **Hapus akun yang berisi data.** Status akhir sesuai proses yang dijanjikan; data terkait benar-benar terhapus.
3. **Matikan jaringan.** App tidak menampilkan keberhasilan palsu.
4. **Ulangi setelah kegagalan sebagian.** Permintaan bisa berhasil tanpa menyasar data lain.
5. **Buka sesi kedua.** Akses lama ditangani sesuai mekanisme yang direncanakan.
6. **Buat ulang akun dengan alamat email yang sama, jika diizinkan.** Data pribadi lama tidak muncul lagi.

Tambahkan kasus-kasus ini ke [daftar uji Devoria](https://devoria.fr/id/resources). Untuk membagikannya ke tester, ikuti panduan [TestFlight](https://devoria.fr/id/blog/testflight-cara-tes-aplikasi-iphone). Tidak adanya pesan error di console tidak menggantikan pemeriksaan data dan alur.

## Menyiapkan pengiriman ke App Review

Di catatan review, jelaskan di mana fitur ini berada dan cara mengujinya. Kalau ada tahap yang bergantung pada suatu layanan, pastikan layanan itu tersedia selama review. Jangan pakai catatan untuk menjanjikan fitur yang belum ada di build yang dikirim.

Halaman [app ditolak Apple](https://devoria.fr/id/expertise/aplikasi-ditolak-apple) membantu menyusun balasan saat masalah sudah dilaporkan. Untuk menyiapkannya, [Apple Review Kit](https://devoria.fr/id/kits/review-apple) membantumu menemukan aturan yang dikutip, apa yang dimintanya, serta contoh perbaikan dan balasan.

Kalau kamu sedang menyiapkan pengiriman pertama, [diagnostik gratis](https://devoria.fr/id/diagnostic) memberi tahu apa yang masih harus dikerjakan dan mengirimkan checklist anti-penolakan Apple milikku, termasuk soal penghapusan akun. Kalau app kamu sudah ditolak Apple, [pesan sesi satu jam denganku](https://devoria.fr/id/coaching): kita baca pesannya bersama lewat video call.

## Pertanyaan umum

### Apakah penghapusan akun wajib di app iOS?

Ya, kalau app kamu memungkinkan pembuatan akun: Apple meminta agar pengguna bisa memulai penghapusannya dari dalam app. Sekadar menonaktifkan akun tidak memenuhi syarat ini. Alurnya harus mudah ditemukan dan menjelaskan konsekuensinya. Kalau sebagian prosesnya selesai di Web, tautannya harus langsung menuju halaman yang bersangkutan.

### Apa yang harus dihapus saat pengguna menghapus akunnya?

Semua yang menjadi milik orang itu, bukan hanya data penggunanya. Buat daftarnya: identitas login, profil dan konten yang dibuat, file yang disimpan beserta referensinya, cache di ponsel, data di layanan pihak ketiga. Catat juga data yang harus disimpan, untuk kewajiban apa, dan beri tahu penggunanya. Tanpa inventaris ini, sebuah foto bisa tetap diakses padahal data pengguna sudah hilang.

### Apakah Apple menerima penghapusan akun yang tidak langsung?

Ya. Kalau prosesnya butuh waktu, Apple menerima alur tertunda asalkan pengguna diberi tahu dan penyelesaiannya dikonfirmasi. App tidak boleh membuat orang mengira penghapusan sudah selesai padahal baru permintaannya yang tercatat. Kalau gagal, tampilkan pesan yang berguna dan cara untuk mencoba lagi, tanpa mengklaim akunnya sudah hilang.

### Bagaimana nasib langganan saat pengguna menghapus akunnya?

Langganan Apple bisa tetap berjalan setelah akun dihapus. Apple meminta kamu menjelaskan nasib tagihannya dan memberi akses ke pengelolaan langganan. Kalau kamu memakai Sign in with Apple, siapkan juga pencabutan token yang sesuai. Di rencana pengujianmu, pisahkan hilangnya akun, status akses berbayar, dan pengelolaan langganan.

### Apakah cukup menghapus pengguna di Supabase Auth?

Tidak, menghapus pengguna Auth tidak membuktikan bahwa semua objek di produkmu sudah ditangani. Menurut dokumentasi Supabase, pengguna yang memiliki objek Storage tidak bisa dihapus sebelum hal itu diselesaikan. Menghapus pengguna juga tidak langsung membuat semua JWT yang sudah diterbitkan jadi tidak berlaku. Siapkan proses di sisi server yang memverifikasi identitas peminta.

### Bagaimana cara menguji penghapusan akun sebelum dikirim ke Apple?

Gunakan akun tes dan data fiktif di build tes. Jalankan enam kasus: batal, hapus akun yang berisi data, matikan jaringan, ulangi setelah kegagalan sebagian, buka sesi kedua, buat ulang akun dengan alamat email yang sama jika diizinkan. Periksa data dan alurnya: tidak adanya error di console belum cukup. Untuk membagikan build kamu, ikuti panduan [TestFlight](https://devoria.fr/id/blog/testflight-cara-tes-aplikasi-iphone).


## Proyekmu

[Apple Review Kit](https://devoria.fr/id/kits/review-apple): Checklist review App Store yang kupakai, penolakan Apple yang sudah kuperbaiki, catatan untuk penguji, dan dua skill Claude Code yang meninjau aplikasimu. 29 €.

[iOS Kit](https://devoria.fr/id/kits/ios): Bikin aplikasi iPhone dengan Claude Code: starter code aplikasiku, skill yang memeriksa kerjanya, plus Apple Review Kit, App Store Screenshots Kit, dan ASO Kit. 129,99 €.
