26 Maret 2026

šŸ‡®šŸ‡© Bahasa Indonesia

Upgrade Platform E-Learning Laravel dari Laravel 12 ke Laravel 13

Panduan lengkap upgrade Platform E-Learning & CBT Laravel dari Laravel 12 ke Laravel 13, mencakup PHP 8.3, update dependency, breaking changes, dan deployment.

5 min read

Series Terkait

Artikel ini adalah lanjutan dari Series Rebuild Laravel E-Learning:

šŸ‡¬šŸ‡§ Read in English


Kenapa Harus Upgrade ke Laravel 13?

Laravel 13 membawa beberapa peningkatan penting:

  • Minimum PHP 8.3 — Performa lebih cepat dan akses ke fitur modern PHP seperti typed class constants, json_validate(), dan atribut #[Override].
  • Core Lebih Ringan — Penghapusan polyfill dan kode backward-compatibility yang redundan membuat framework lebih ringan dan cepat.
  • Dukungan Symfony 7.4/8.0 — Komponen Symfony yang diperbarui memberikan fondasi lebih stabil dan future-proof.
  • Method Baru Cache::touch() — Perpanjang TTL cache tanpa perlu membaca ulang nilainya, mengurangi pembacaan yang tidak perlu.
  • Queue Lebih Konsisten — Perilaku lebih terprediksi di berbagai driver queue (database, Redis, SQS).
  • Utilitas Testing Lebih Baik — Isolasi test yang ditingkatkan dengan auto-reset Str factories dan perbaikan lainnya.
  • Peningkatan Keamanan — Pembaruan encryption primitives dan upgrade dependency.

Sebelum Memulai

Pastikan kamu sudah punya:

  1. PHP 8.3+ terinstall (ini yang paling penting — Laravel 13 tidak lagi mendukung PHP 8.2)
  2. Backup database (selalu backup sebelum upgrade besar)
  3. Branch Git yang bersih untuk pekerjaan upgrade
git checkout -b upgrade/laravel-13

Langkah 1: Update PHP

Pertama, cek versi PHP kamu:

php -v

Kalau masih di PHP 8.2, upgrade ke 8.3 atau lebih baru. Di macOS dengan Homebrew:

brew install [email protected]
brew link [email protected]

Di Ubuntu:

sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.3 php8.3-cli php8.3-mbstring php8.3-xml php8.3-curl php8.3-mysql php8.3-zip

Langkah 2: Update Dependency Composer

Inti dari upgrade ini adalah memperbarui composer.json. Berikut perubahan utama untuk project e-learning kita:

Framework & Package First-Party

{
    "require": {
        "php": "^8.3",
        "laravel/breeze": "^2.3",
        "laravel/framework": "^13.0",
        "laravel/reverb": "^1.8",
        "laravel/tinker": "^3.0",
        "livewire/livewire": "^3.6.4",
        "livewire/volt": "^1.7.0",
        "maatwebsite/excel": "^3.1",
        "spatie/laravel-permission": "^7.2"
    }
}

Perubahan utama: php (^8.2 → ^8.3), laravel/framework (^12.0 → ^13.0), laravel/reverb (^1.7 → ^1.8), dan laravel/tinker (^2.10.1 → ^3.0). Dependency dev tetap sama — sudah kompatibel dengan Laravel 13.

Dependency Dev

Tidak ada perubahan yang diperlukan. Semua package (phpunit, collision, pint, sail, pail) sudah kompatibel dengan Laravel 13.

{
    "require-dev": {
        "fakerphp/faker": "^1.23",
        "laravel/pail": "^1.2.2",
        "laravel/pint": "^1.24",
        "laravel/sail": "^1.41",
        "mockery/mockery": "^1.6",
        "nunomaduro/collision": "^8.6",
        "phpunit/phpunit": "^11.5.3"
    }
}

Kemudian jalankan:

rm -rf vendor composer.lock
composer install

šŸ’” Tips: Kalau menemui konflik dependency, coba composer update --with-all-dependencies untuk menyelesaikannya secara otomatis.

Langkah 3: Review Perubahan Konfigurasi

Laravel 13 mungkin memperbarui nilai konfigurasi default. Bandingkan file config kamu:

php artisan config:publish

File-file yang perlu diperhatikan:

  • config/app.php — Cek nilai default baru
  • config/cache.php — Dukungan method touch baru
  • config/queue.php — Perubahan konsistensi driver queue

Langkah 4: Tangani Breaking Changes

Penghapusan Polyfill

Laravel 13 menghapus kode backward-compatibility untuk versi PHP lama. Kalau kamu menggunakan helper yang sudah deprecated, perbarui sekarang.

PHPUnit

PHPUnit 11 tetap kompatibel dengan Laravel 13 — tidak perlu upgrade paksa. Ketika PHPUnit 12 dirilis untuk package Laravel, perhatikan:

  • Assertion deprecated yang mungkin dihapus
  • Signature method setUp() dan tearDown() yang lebih ketat

Langkah 5: Update Dependency Frontend

Tidak ada perubahan dependency frontend yang diperlukan:

npm install
npm run build

laravel-vite-plugin (^2.0.0) dan Vite (^7.0.7) yang ada sudah kompatibel dengan Laravel 13.

Langkah 6: Test Semuanya

Jalankan seluruh test suite untuk menangkap masalah:

php artisan test

Untuk platform e-learning kita, perhatikan hal-hal berikut:

  • Test komponen Livewire — Pastikan semua komponen admin, guru, dan siswa render dengan benar
  • Fitur real-time — Test koneksi WebSocket dengan Laravel Reverb
  • Import Excel — Verifikasi import siswa masih berfungsi dengan Maatwebsite Excel
  • Akses berbasis role — Konfirmasi gates Spatie Permission masih berfungsi dengan benar

Langkah 7: Adopsi Fitur Baru

Setelah upgrade stabil, pertimbangkan untuk menggunakan fitur baru Laravel 13:

Cache::touch()

Cocok untuk caching sesi ujian kita — perpanjang TTL tanpa membaca ulang:

// Di ujian CBT: jaga sesi tetap hidup tanpa re-fetch
Cache::touch("exam_session:{$studentId}:{$examId}", now()->addMinutes(30));

Fitur PHP 8.3

Manfaatkan PHP 8.3 di codebase kamu:

// Typed class constants
class ExamStatus
{
    const string PENDING = 'pending';
    const string ACTIVE = 'active';
    const string COMPLETED = 'completed';
}

// json_validate() — Tidak perlu lagi json_decode + cek error
if (json_validate($submissionData)) {
    // Proses submission
}

Langkah 8: Deploy ke Production

Ikuti checklist deployment standar dengan perhatian ekstra pada versi PHP:

# Verifikasi versi PHP di production
php -v  # Harus >= 8.3

# Pull dan install
git pull origin main
composer install --no-dev --optimize-autoloader
npm install && npm run build

# Migrasi dan optimasi
php artisan migrate --force
php artisan optimize

# Restart background services
sudo supervisorctl restart laravel-queue:*
sudo supervisorctl restart laravel-reverb

Ringkasan

Upgrade dari Laravel 12 ke Laravel 13 untuk project e-learning ini cukup straightforward. Prasyarat terbesar adalah memastikan PHP 8.3+ tersedia. Perubahan kode yang sebenarnya sangat minimal — sebagian besar hanya bump versi dependency dan menangani assertion PHPUnit yang deprecated.

AreaTingkat Usaha
Upgrade PHP🟔 Sedang (tergantung hosting)
Dependency Composer🟢 Rendah (hanya 4 package berubah)
Perubahan kode🟢 Rendah (breaking changes minimal)
Perbaikan test🟢 Rendah (PHPUnit tidak berubah)
Deployment production🟢 Rendah

Upgrade ini seharusnya bisa diselesaikan dalam kurang dari satu hari untuk kebanyakan project. Selamat meng-upgrade! šŸš€


šŸ”— Resources: