Saat Semua Framework Tambah Fitur, Laravel 11 Justru Menghilangkan—dan Itulah Hal Terbaiknya
Tech Pulse
Ditulis 14 June 2025 Baca ± 13 menit
Waktu Laravel 11 dirilis, saya gak langsung lompat nyoba. Sejujurnya, Laravel 10 sudah lebih dari cukup buat kebutuhan saya—stabil, cepat, dan terasa familiar. Rasanya kayak rumah yang udah nyaman: gak mewah, tapi tahu di mana letak semua barang.
Sampai akhirnya saya coba Laravel 11 di proyek kecil-kecilan. Gak ada
ekspektasi macam-macam, cuma penasaran. Tapi begitu buka folder proyeknya, ada
sesuatu yang terasa beda.
“Lho, kok tampilannya bersih banget? Tapi enak dilihat…”
Saya sempat mikir, “Ini Laravel yang saya kenal, atau versi dietnya?” Banyak struktur default yang biasanya muncul—seperti Http/Middleware atau Exceptions—sekarang gak langsung ada. Tapi anehnya, justru terasa lebih fokus. Alih-alih bingung nyari file yang jarang disentuh, saya bisa langsung nyemplung ke bagian penting aplikasi.
Laravel 11 bukan rilis yang penuh kejutan besar. Gak ada fitur bombastis
yang langsung mencolok. Tapi diam-diam, dia membawa perubahan yang terasa lebih
elegan.
Fokusnya bukan lagi nambah banyak hal, tapi menyaring mana yang
benar-benar dibutuhkan.
Dan justru dari situ, Laravel 11 terasa makin matang. Alih-alih memaksamu
mengadopsi cara kerja baru, dia lebih seperti bilang:
"Nih, udah disederhanain. Kalau kamu siap, mari kita bikin aplikasi
yang lebih rapi bareng-bareng."
Sekarang, mari kita lihat lebih dekat apa saja yang berubah—dan kenapa kesederhanaan ini justru terasa seperti langkah paling dewasa yang pernah diambil Laravel.
Struktur Aplikasi yang Lebih Ringkas
Begitu buka folder proyek Laravel 11 untuk pertama kali, kamu mungkin akan sedikit terdiam. Bukan karena error, tapi karena... sepi. Folder yang biasanya jadi penghuni tetap seperti app/Http/Middleware, app/Console, dan
Awalnya kamu mungkin berpikir, “Eh ini incomplete ya? Apa ada yang salah waktu install?” Tapi ternyata, bukan hilang—hanya disederhanakan.
Laravel 11 mengambil langkah berani: mengurangi “kebisingan” dari struktur awal proyek. Banyak hal yang dulunya otomatis dibuatkan, kini hanya akan muncul kalau memang kamu butuhkan. Semua yang berkaitan dengan middleware, handler, dan routing sekarang dikelola di satu tempat: bootstrap/app.php.
Sekilas terdengar ekstrem, tapi justru di situlah keindahannya. Struktur proyek yang lebih ramping ini memberi dua keuntungan besar:
1. Lebih fokus. Kamu langsung bisa melihat fondasi aplikasi tanpa harus membongkar-bongkar banyak folder yang isinya cuma satu-dua file placeholder.
2. Lebih ringan untuk memulai. Buat proyek kecil, microservice, atau prototipe, kamu gak lagi harus ngurusin banyak file yang “harus ada” tapi belum tentu dipakai.
Dan jangan khawatir, ini bukan penghilangan fitur. Semua masih bisa kamu munculkan dengan Artisan Command seperti:
php artisan install:exceptions php artisan install:middleware php artisan install:api
Artinya, Laravel memberi kendali penuh ke tangan kamu. Kalau kamu butuh, tinggal panggil. Kalau nggak, biarkan tetap sederhana.
Langkah ini mungkin mengejutkan bagi yang terbiasa dengan Laravel versi lama. Tapi setelah beberapa waktu, kamu akan menyadari: struktur baru ini lebih bersih, lebih modular, dan lebih terasa modern.
Buat saya pribadi, perubahan ini seperti merapikan ruang kerja. Semua barang tetap ada, hanya sekarang ditaruh di tempat yang benar-benar perlu—dan sisanya? Disimpan rapi sampai dibutuhkan.
Laravel 11 seperti bilang,
"Ngoding itu udah cukup kompleks. Yuk, kita bikin hal-hal dasarnya jadi
lebih simpel dulu."
Artisan Commands Baru
Salah satu hal yang saya paling suka dari Laravel adalah betapa manjanya dia bikin kita sebagai developer. Dan di Laravel 11, rasa dimanjakan itu makin terasa—terutama lewat tambahan beberapa perintah baru di Artisan.
Sekarang kamu bisa langsung bikin berbagai elemen penting dalam arsitektur OOP tanpa ngetik manual lagi. Laravel 11 menambahkan command baru seperti:
- php artisan make:trait
- php artisan make:interface
- php artisan make:enum
- php artisan make:class
Kelihatannya sepele. Tapi buat kamu yang terbiasa menerapkan prinsip SOLID, Clean Architecture, atau Domain-Driven Design, fitur kecil ini sangat membantu. Gak perlu lagi copas dari file lama atau bikin struktur dasar satu per satu. Tinggal satu baris, Laravel bantu siapkan semuanya.
Misalnya kamu mau bikin trait HasSlug, sekarang cukup ketik:
php artisan make:trait HasSlug
Dan boom—file langsung tersedia lengkap dengan namespace dan struktur dasar. Gak perlu buka-buka dokumentasi atau template lagi.
Atau kamu sedang membuat sistem pembayaran dan butuh PaymentStatus dalam bentuk enum? Laravel siap bantu juga:
php artisan make:enum PaymentStatus
Perintah-perintah ini memberi kesan bahwa Laravel semakin mengerti pola kerja developer modern. Kita gak butuh fitur besar setiap kali update—kadang yang kita cari adalah kenyamanan kecil yang menghemat waktu 5 menit, tapi berulang sepanjang hari.
Dan itu yang Laravel 11 lakukan. Memberi alat kecil, tapi berdampak nyata untuk efisiensi kerja kita.
Ini bukan sekadar soal kemudahan, tapi soal bagaimana Laravel mendorong kita menulis kode yang lebih terstruktur, lebih bersih, dan lebih siap tumbuh.
Pest sebagai Default Testing Framework
Laravel 11 juga mengambil keputusan yang bisa dibilang cukup berani: menjadikan Pest sebagai framework testing default, menggantikan PHPUnit yang selama ini sudah lama menjadi standar.
Kalau kamu belum pernah pakai Pest sebelumnya, mungkin awalnya terdengar asing. Tapi begitu lihat contoh sintaksnya, kamu akan langsung paham kenapa ini langkah yang cerdas.
it('creates a new post', function () { $response = post('/posts', [ 'title' => 'Laravel 11', 'body' => 'Sederhana tapi solid.', ]); $response->assertStatus(201); });
Simple, bersih, dan langsung ke intinya.
Dibandingkan dengan struktur verbose-nya PHPUnit, Pest terasa seperti napas segar. Ini bukan cuma soal estetika, tapi juga soal mindset. Pest mendorong kita untuk menulis test-case yang fokus dan human-readable—yang bisa dimengerti bahkan oleh anggota tim yang gak terlalu suka testing.
Dan buat kamu yang selama ini anti-testing karena merasa terlalu “berat”, Pest bisa jadi jalan masuk yang lebih bersahabat. Nggak perlu inheritance ribet, nggak perlu setup panjang, kamu cukup tulis it() dan langsung jalan.
Laravel tahu bahwa testing adalah bagian penting dari pengembangan aplikasi modern. Tapi Laravel juga sadar, gak semua developer datang dari latar belakang yang terbiasa menulis test. Dengan menjadikan Pest sebagai default, Laravel 11 seperti berkata:
“Ayo, kita bikin testing itu terasa ringan dan menyenangkan dulu. Setelah itu, baru kita gali lebih dalam.”
Dan jangan khawatir buat kamu yang masih nyaman dengan PHPUnit—Laravel tetap kompatibel. Kamu bisa tetap pakai style lama kalau mau. Tapi begitu kamu coba Pest untuk satu atau dua test… jangan kaget kalau kamu jadi ketagihan.
Buat saya pribadi, perubahan ini bukan hanya soal tool, tapi soal budaya. Laravel mendorong kita untuk lebih peduli dengan kualitas kode, tanpa mengintimidasi. Dan itu nilai yang luar biasa.
Model Casts Jadi Lebih Fleksibel
Dulu, kalau kamu pernah bekerja dengan model di Laravel, pasti sudah akrab dengan properti $casts. Fungsinya jelas—ngasih tahu Laravel cara “membaca” kolom tertentu dari database. Misalnya, kamu mau created_at dibaca sebagai objek Carbon, atau is_active sebagai boolean.
Formatnya begini:
protected$casts = [ 'created_at' => 'datetime', 'is_active' => 'boolean', ];
Sederhana. Tapi, kadang juga terasa… terbatas.
Nah, di Laravel 11, $casts mendapatkan wajah baru. Sekarang kamu bisa mendefinisikannya lewat method casts():
protectedfunctioncasts(): array { return [ 'email_verified_at' => 'datetime', 'password' => 'hashed', ]; }
Apa bedanya? Sekilas mungkin terlihat sama aja. Tapi perbedaan ini membuka banyak pintu.
Dengan pendekatan baru ini, kamu bisa:
· Memberikan logika dinamis dalam casting.
· Melewatkan dependency (misalnya service) ke dalam proses casting (dengan trik).
· Lebih mudah override atau menggabungkan casting lewat inheritance.
Artinya, Laravel memberi kamu lebih banyak kendali, tanpa mengubah prinsip dasarnya.
Saya pribadi merasa ini sejalan dengan semangat Laravel 11: menyederhanakan di permukaan, tapi memperdalam di dalam. Kamu tetap bisa pakai cara lama kalau mau, tapi kalau kamu ingin fleksibilitas lebih, sekarang Laravel kasih kamu ruang untuk itu.
Dan seperti biasa, Laravel gak memaksa. Kamu gak harus migrasi semua $casts ke bentuk method. Tapi ketika kamu butuh sedikit keluwesan ekstra—Laravel 11 sudah siap.
Trait Dumpable: Debugging yang Lebih Rapi
Debugging adalah bagian tak terpisahkan dari hidup seorang developer. Kadang kita tulis dd($this)< di controller, kadang dump() di tengah service, atau bahkan logging manual demi tahu “isi sebenarnya” dari sebuah objek.
Dan jujur aja, semakin kompleks aplikasimu, semakin sering kamu butuh mengintip isi dari class-class internal—entah untuk tahu apa yang sebenarnya terjadi, atau cuma sekadar memastikan nilainya gak aneh-aneh.
Di Laravel 11, kamu gak perlu lagi repot-repot keluar dari class atau bikin helper sendiri buat itu. Cukup gunakan Trait Dumpable, dan objek kamu bisa langsung dump() atau dd() dari dalam dirinya sendiri.
Contoh penggunaannya:
useIlluminate\Support\Traits\Dumpable; classOrder { useDumpable; }
Lalu kamu bisa langsung:
$order->dd();
Atau:
$this->dump();
Sederhana? Iya. Tapi sangat terasa manfaatnya saat kamu bekerja dengan class yang berdiri sendiri—misalnya service layer, data transfer object (DTO), value object, atau bahkan model yang kompleks.
Dulu, kalau kamu mau dd() di dalam class, kamu harus inject logger, atau lempar data ke controller buat dicek. Sekarang, cukup tempel Dumpable, dan class itu bisa debug dirinya sendiri. Praktis dan elegan.
Fitur ini memang kecil, tapi sangat mencerminkan filosofi Laravel: “developer experience dulu, baru yang lain.” Kita gak diminta ngafalin cara baru, hanya diberi alat yang mempermudah hidup kita sebagai developer.
Dan seperti fitur lainnya di Laravel 11, ini gak memaksa. Kalau kamu gak butuh, gak apa-apa. Tapi kalau kamu tipikal developer yang senang debugging cepat di tengah pengerjaan—Dumpable bisa jadi teman akrab barumu.
Rate Limiting per Detik
Pernah gak, kamu lagi ngetes API yang baru kamu buat, lalu kirim request berkali-kali pakai Postman atau curl — dan tiba-tiba server mulai ngos-ngosan? Atau kamu pernah deploy API ke publik dan dalam beberapa detik trafiknya naik gila-gilaan entah dari mana?
Masalahnya bukan karena API kamu jelek. Tapi karena gak semua aplikasi siap untuk lonjakan request yang terjadi dalam waktu sangat singkat. Dan selama ini, rate limiting di Laravel default-nya hanya per menit. Artinya, kamu bisa set batasan seperti “60 request per menit” — tapi kalau 60 request itu datang dalam 3 detik? Server kamu tetap bisa tumbang.
Nah, di Laravel 11, itu diperbaiki.
Sekarang kamu bisa bikin rate limit per detik, bukan cuma per menit. Sebuah pembaruan kecil, tapi berdampak besar — terutama untuk aplikasi real-time, integrasi eksternal, dan API publik yang rawan spam.
Contohnya kayak gini:
useIlluminate\Cache\RateLimiting\Limit; useIlluminate\Support\Facades\RateLimiter; RateLimiter::for('api', function (Request $request) { returnLimit::perSecond(5); });
Dengan begitu, kamu bisa atur misalnya: maksimal 5 request per detik per user/IP. Gak peduli berapa request per menitnya—kalau dia spam dalam 1 detik, langsung ditolak.
Fitur ini penting banget buat:
· Endpoint webhook yang nerima banyak callback secara bersamaan.
· API produk atau layanan populer yang diakses publik.
· Sistem polling data real-time, seperti live dashboard.
Dan seperti biasa, Laravel gak cuma kasih fitur—tapi kasih sintaks yang ramah dan mudah dipahami. Kamu gak perlu mikir gimana cara ngitung timestamp atau tracking manual. Laravel urus semuanya di balik layar.
Buat saya, perSecond() ini adalah salah satu fitur kecil yang muncul dari pengamatan nyata: Laravel tahu kebutuhan developer saat ini bukan lagi soal “berapa banyak request per jam,” tapi seberapa cepat beban itu bisa datang — dan seberapa cepat kita bisa membendungnya.
Laravel Reverb: WebSocket Resmi Laravel
Kalau kamu pernah bikin aplikasi real-time di Laravel—entah itu fitur notifikasi, live chat, atau update stok secara langsung di dashboard admin—kamu pasti tahu satu hal: broadcasting di Laravel powerful, tapi setup WebSocket-nya gak selalu mudah.
Biasanya, kita pakai Pusher. Praktis, cepat, tinggal konek, jalan. Tapi ya… itu layanan pihak ketiga. Kadang ada keterbatasan free tier, kadang soal latensi, kadang soal privasi data. Mau bikin WebSocket server sendiri? Bisa, tapi ribet—harus pakai package tambahan, ngatur server khusus, dan belum tentu integrasi mulus sama Laravel-nya.
Laravel tahu soal itu. Dan akhirnya, lewat Laravel 11, datanglah satu solusi yang udah lama ditunggu-tunggu: Laravel Reverb.
Reverb adalah WebSocket server resmi dari Laravel. Dibangun khusus untuk berjalan selaras dengan ekosistem Laravel—dari broadcasting, event, sampai authentication-nya. Dan yang paling penting: kamu bisa host sendiri.
Gak perlu langganan. Gak perlu vendor pihak ketiga. Cukup jalankan php artisan reverb:start, dan kamu sudah punya WebSocket server sendiri yang langsung bisa dipakai.
Bayangin bikin fitur notifikasi instan ke user ketika ada pesanan masuk, dan semuanya berjalan tanpa kamu harus keluar dari Laravel. Gak ada setup yang aneh-aneh. Gak ada adapter tambahan. Cukup event Laravel yang kamu kenal, dan semuanya langsung nyambung.
Reverb juga mendukung skalabilitas. Artinya, dia bukan cuma untuk proyek kecil. Kalau kamu punya aplikasi besar dengan ribuan koneksi real-time, Reverb siap juga. Bahkan Laravel Reverb bisa dijalankan bersamaan dengan Redis atau queue system lainnya, jadi kamu gak perlu pilih antara performa dan kenyamanan.
Dan tentu, dokumentasinya dibuat dengan gaya khas Laravel: ringkas, jelas, dan to the point.
Buat saya pribadi, kehadiran Reverb ini seperti Laravel berkata:
“Sekarang kamu bisa bikin fitur real-time dengan tenang. Kami yang urus bawah kap mesinnya.”
Reverb bukan cuma fitur baru. Dia adalah bagian dari filosofi Laravel 11—membuat hal-hal kompleks jadi lebih mudah didekati.
Routing & Konfigurasi Sekarang Lebih Modular
Dulu, setiap kali kamu bikin proyek baru di Laravel, pasti langsung ada satu set file routing default: web.php, api.php, channels.php, dan setumpuk file konfigurasi di folder config/. Sebagian kamu pakai, sebagian lagi cuma numpang lewat.
Laravel 11 datang dengan pendekatan yang lebih… dewasa.
Sekarang, file seperti routes/api.php atau routes/channels.php tidak langsung muncul secara default. Begitu juga dengan beberapa file konfigurasi seperti config/broadcasting.php, config/view.php, dan lainnya. Awalnya mungkin kamu kaget—kok kosong? Tapi tunggu dulu.
Laravel sekarang kasih kamu pilihan: hanya sertakan bagian yang kamu butuh.
Kalau kamu memang butuh API routes, tinggal panggil:
php artisan install:api
Butuh broadcasting? Gampang:
php artisan install:broadcasting
Perubahan ini bukan sekadar gaya baru. Ini bentuk penghormatan Laravel ke developer—Laravel gak lagi berasumsi bahwa semua proyek perlu semuanya. Kadang kita cuma bikin app satu halaman, kadang cuma service internal, kadang cuma webhook handler. Gak perlu semua fitur Laravel dimuat sejak awal.
Struktur ini juga bikin proyek baru terasa lebih ringan dan gak intimidating. Bayangkan kamu baru belajar Laravel—dan buka folder project yang isinya ramping, langsung ke intinya. Lebih gampang masuk, lebih cepat paham.
Dan kalau kamu butuh konfigurasi tambahan di kemudian hari? Laravel udah siapin semuanya. Tinggal php artisan config:publish, dan file yang kamu butuhkan langsung muncul lengkap dengan isinya.
Buat saya pribadi, ini seperti Laravel bilang:
“Framework ini milik kamu. Silakan ambil yang kamu perlu, sisanya kami simpan rapi.”
Modularisasi ini bukan sekadar tentang mengurangi file. Tapi tentang mengembalikan kendali ke tangan developer. Laravel tidak lagi mengasumsikan—tapi menawarkan. Dan di situlah bedanya.
Laravel 11, Kesederhanaan yang Penuh Arah
Laravel 11 tidak datang dengan gegap gempita. Tidak ada fitur revolusioner yang langsung mencolok mata. Tapi justru di situ letak kekuatannya. Framework ini seperti seseorang yang sudah melewati banyak fase—dan akhirnya tahu, apa yang perlu dipertahankan, dan apa yang sudah waktunya dilepaskan.
Strukturnya kini lebih ringan, tanpa terasa dikurangi. Tooling-nya semakin tajam, tapi tetap ramah digunakan. Testing jadi aktivitas yang tidak lagi terasa berat. Dan debugging? Jauh lebih manusiawi.
Laravel 11 bukan tentang sekadar “apa yang baru”—tapi tentang bagaimana cara kita bekerja jadi lebih rapi, lebih efisien, dan lebih fokus. Ini adalah pembaruan yang tidak memaksa, tapi membimbing. Mengajak kita untuk membangun aplikasi dengan pendekatan yang lebih bersih, lebih modular, dan lebih modern.
Jadi, kalau kamu masih bertanya-tanya,
“Worth it gak upgrade ke Laravel 11?”
Coba rasakan sendiri lewat satu proyek kecil. Mulai dari awal. Biarkan kamu
berinteraksi dengan setiap bagian barunya.
Karena Laravel 11 bukan hanya tentang teknologi—tapi tentang pengalaman membangun sesuatu dengan cara yang lebih tenang dan terarah.
Dan kadang, itu justru hal yang paling kita butuhkan.
Leave a comment