Komuniti pembangunan web sedang mengalami gelombang kritikan terhadap Next.js, salah satu framework React yang paling popular. Apa yang bermula sebagai catatan blog seorang pembangun mengenai kesukaran logging telah mencetuskan perbincangan yang lebih luas tentang kerumitan framework yang semakin meningkat dan kaitan rapatnya dengan platform hosting Vercel.
Mimpi Ngeri Middleware dan Logging
Isu teras yang mencetuskan perbincangan ini berpusat pada middleware Next.js dan production logging. Tidak seperti framework web tradisional di mana menyediakan logging adalah mudah, Next.js menimbulkan cabaran unik disebabkan model pelaksanaannya yang kompleks. Pembangun melaporkan menghabiskan berjam-jam cuba melaksanakan fungsi logging asas yang berfungsi merentasi persekitaran runtime yang berbeza - edge functions, server-side rendering, dan kod client-side.
Masalah ini berpunca daripada Next.js menjalankan kod dalam pelbagai konteks secara serentak. Sesetengah kod dilaksanakan pada edge servers, sesetengah pada pelayan Node.js tradisional, dan sesetengah dalam pelayar. Ini mewujudkan kekeliruan tentang di mana log sebenarnya muncul dan bagaimana untuk mengekalkan logging yang konsisten merentasi keseluruhan kitaran hayat aplikasi.
Masalah Umum Next.js:
- Had middleware: Keperluan fail middleware tunggal, rangkaian yang kompleks
- Kesukaran logging: Tingkah laku tidak konsisten merentas persekitaran edge/server/client
- Kekeliruan runtime: Konteks pelaksanaan kod tidak jelas (edge vs server vs client)
- Gandingan Vercel: Ciri-ciri dioptimumkan untuk hosting Vercel, bermasalah di tempat lain
- Jurang dokumentasi: Butiran yang hilang tentang konteks pelaksanaan dan perangkap
Perdebatan Vendor Lock-in Vercel
Sebahagian besar perbincangan komuniti memberi tumpuan kepada dakwaan bahawa Next.js sengaja direka untuk mendorong pembangun ke arah perkhidmatan hosting berbayar Vercel. Ramai pembangun melaporkan bahawa ciri-ciri berfungsi dengan lancar di Vercel tetapi menjadi bermasalah apabila digunakan di tempat lain. Ini telah membawa kepada tuduhan bahawa kerumitan framework bukanlah tidak sengaja tetapi sebaliknya strategi perniagaan.
Pengalaman saya dengan Next.js ialah rough edges-nya adalah ciri, bukan bug. Semuanya diarahkan untuk membuatkan anda berputus asa dan hanya menggunakan hosting Vercel
Beberapa pembangun berkongsi cerita mewarisi projek Next.js yang begitu rapat berkait dengan infrastruktur Vercel sehingga berpindah ke penyedia hosting lain terbukti hampir mustahil, kadangkala memerlukan penulisan semula yang lengkap.
Breaking Changes dan Ketidakstabilan API
Komuniti telah menyatakan kekecewaan dengan kitaran pelepasan pantas Next.js dan breaking changes yang kerap. Dengan versi 15 yang baru dikeluarkan, pembangun menyatakan bahawa framework telah memperkenalkan 15 versi utama dalam 8 tahun, setiap satu berpotensi mengandungi perubahan yang tidak serasi ke belakang. Ini mewujudkan beban penyelenggaraan untuk projek jangka panjang dan menyukarkan pasukan untuk mengekalkan aplikasi yang dikemas kini.
Peralihan daripada Pages Router kepada App Router telah menjadi kontroversi terutamanya. Ramai pembangun mendapati Pages Router intuitif dan mudah, tetapi App Router yang lebih baharu memperkenalkan kerumitan tambahan yang sesetengahnya berpendapat tidak perlu untuk kebanyakan aplikasi.
Sejarah Versi Next.js:
- 15 versi utama dikeluarkan dalam tempoh 8 tahun (2017-2025)
- Setiap versi utama berpotensi mengandungi perubahan yang memecahkan keserasian
- Versi 15.5 menambah sokongan middleware Node.js untuk menangani beberapa isu
Penyelesaian Alternatif Mendapat Tarikan
Apabila kekecewaan meningkat, pembangun semakin meneroka alternatif. React Router v7 (dahulunya Remix) semakin popular kerana pendekatannya yang lebih mudah terhadap server-side rendering tanpa lapisan abstraksi yang merumitkan Next.js. SvelteKit juga kerap disebut sebagai pilihan yang lebih mesra pembangun dengan keupayaan self-hosting yang lebih baik.
Sesetengah pembangun kembali kepada pendekatan yang lebih tradisional, menggabungkan aplikasi frontend dan backend yang berasingan menggunakan teknologi yang mantap seperti Django, Rails, atau Express.js dengan aplikasi single-page React. Pemisahan ini menyediakan sempadan yang lebih jelas dan debugging yang lebih mudah berbanding pendekatan campuran Next.js.
Alternatif Popular Next.js Yang Disebut:
- React Router v7 (dahulunya Remix): Model permintaan/respons yang lebih mudah
- SvelteKit: Keupayaan hos sendiri yang lebih baik, pengalaman pembangun yang lebih bersih
- Astro: Penjanaan laman statik dengan pulau komponen
- Pemisahan tradisional: Backend Django/Rails + frontend React SPA
- HTMX + Alpine.js: Pendekatan JavaScript minimal untuk HTML yang dipertingkatkan
JavaScript Framework Fatigue yang Lebih Luas
Kritikan Next.js ini mencerminkan trend yang lebih luas iaitu JavaScript framework fatigue dalam komuniti pembangunan. Ramai pembangun berpengalaman mempersoalkan sama ada kerumitan yang diperkenalkan oleh framework moden dibenarkan oleh faedahnya. Sesetengah menyokong pendekatan yang lebih mudah menggunakan vanilla JavaScript, HTML, dan CSS, atau perpustakaan ringan seperti HTMX untuk interaktiviti yang dipertingkatkan.
Perbincangan ini juga telah menyerlahkan kestabilan dan jangka hayat framework yang lebih mantap. Pembangun kerap membezakan pengalaman Next.js mereka dengan ekosistem yang lebih matang seperti Angular, yang walaupun evolusinya sendiri, menyediakan laluan naik taraf yang lebih jelas dan keserasian ke belakang yang lebih baik.
Kesimpulan
Walaupun Next.js kekal digunakan secara meluas dan terus berkembang, kebimbangan komuniti yang semakin meningkat tentang kerumitan, vendor lock-in, dan kestabilan tidak boleh diabaikan. Bagi pembangun yang mempertimbangkan projek seterusnya, perbincangan ini berfungsi sebagai peringatan penting untuk menilai dengan teliti sama ada ciri-ciri framework selaras dengan keperluan sebenar mereka, bukannya hanya mengikuti trend popular.
Perdebatan ini akhirnya mencerminkan ketegangan berterusan dalam pembangunan web antara framework yang berkuasa dan kaya dengan ciri serta alat yang lebih mudah dan boleh diramal. Apabila ekosistem terus matang, pembangun menjadi lebih bijak tentang pertukaran yang mereka sanggup terima untuk kemudahan dan ciri-ciri.
Rujukan: Next.js Is Infuriating