- Kumpulan materi kurasi yang menghimpun tulisan-tulisan kritik tentang React dan alat-alat turunannya, disusun dalam format kutipan dari berbagai developer dan blogger
- Banyak tulisan yang menyoroti keterbatasan struktural React seperti penurunan performa, meningkatnya kompleksitas, dan masalah hidrasi
- Pilihan teknologi yang berpusat pada React dikritik karena lebih mengeras akibat inersia dan efek jaringan daripada kecocokan teknis, dan asumsi bahwa “semua orang tahu React” dianggap mendahului keputusan arsitektur
- Kekhawatiran soal keamanan dan tata kelola di sekitar React Server Components dan Next.js membesar, dan CVE-2025-55182 dipublikasikan sebagai kerentanan remote code execution tanpa autentikasi dengan rating CVSS 10.0
- Kekacauan desain API dan krisis kualitas dalam ekosistem React, serta kompleksitasnya, menyulitkan pemeliharaan jangka panjang dan pembelajaran, hingga memicu perdebatan tentang arah React mulai dari Hooks, fitur UI modern, sampai alur rilis
Gambaran situs
- Situs kurasi dengan pertanyaan provokatif "Does anybody actually like React?"
- Koleksi cherry-picked yang menghimpun tulisan-tulisan kritik terhadap React dan alat-alat yang dipengaruhi React
- Menyediakan fitur langganan RSS
Kritik mendasar terhadap React itu sendiri
-
- React hampir selalu merupakan solusi yang keliru, dan telah menjadi palu yang membuat segala sesuatu tampak seperti paku
- React memang bisa digunakan dengan baik, tetapi dalam praktiknya hampir tidak pernah benar-benar digunakan dengan baik
-
- Proyek yang berpusat pada JS di atas skala tertentu lebih lambat daripada yang diiklankan, dan makin lama makin lambat
- Pengembangan dan pemeliharaannya memerlukan lebih banyak upaya, dan bug-nya juga tidak kalah banyak dibanding pendekatan lain
-
- Mudah untuk langsung menyimpulkan bahwa React “memang gila”, tetapi perlu ada upaya untuk memahaminya secara rasional
-
- Berdasarkan pengalaman panjang menggunakan React, tidak ada alasan untuk memakainya dan banyak alasan untuk menolaknya
-
- Menyatakan bahwa penggunaan React harus dihentikan, dan sejak awal seharusnya tidak digunakan
-
- React bukan sekadar lambat, tetapi ekosistem yang membengkak dengan utang teknis yang tertanam dalam DNA-nya
- Sekalipun begitu, tetap dipilih, sehingga memunculkan pertanyaan tentang kenyataan tersebut
Masalah keamanan dan tata kelola
-
- Pada 29 November, Lachlan Davidson melaporkan kerentanan remote code execution (RCE) tanpa autentikasi
- Dipublikasikan sebagai CVE-2025-55182, dengan rating CVSS 10.0
-
- Vercel mengungkap kerentanan keamanan serius di Next.js
- Isunya sendiri tergolong normal, tetapi cara respons Vercel dinilai buruk dan tidak bertanggung jawab
- Hal ini memperdalam kekhawatiran terhadap tata kelola proyek
-
- Next.js telah berubah menjadi bentuk vendor lock-in Vercel yang menyamar sebagai framework open source
Masalah desain API dan kurva pembelajaran
-
- Kegagalan inti React diperparah oleh desain API yang membingungkan
- Dokumentasinya plin-plan, dan perdebatan tentang cara penggunaan yang benar terus berlanjut tanpa akhir
-
- Berlawanan dengan klaim bahwa React mengajarkan UI modern, pada kenyataannya React hampir tidak benar-benar menangani UI modern
- autofocus rusak, dan custom elements tidak berjalan di luar versi eksperimental
- Untuk memakai fitur modern seperti dialog dan popover, diperlukan
useEffect
- Karena sistem synthetic event, pengguna hampir tidak belajar perilaku DOM yang sebenarnya
- Bukan UI modern, melainkan UI level tahun 2013
-
- Sikap yang menganggap semua masalah sebagai “skill issue” dan mengatakan semuanya bisa diselesaikan dengan library eksternal terasa aneh
- Teknologi seharusnya tetap bisa dikerjakan meski kembali setelah 3 tahun, tetapi frontend, khususnya React, tidak demikian
-
- Dua masalah yang membuat React semakin tidak menyenangkan hari ini: ownership dan complexity
- Ada kekhawatiran bahwa developer baru bisa merasa ciut menghadapi React
Masalah performa dan pengalaman pengguna
-
- Pada dasarnya terjebak dalam pola hidrasi yang sudah terkenal buruk
- Struktur yang menjalankan semua komputasi dengan JS di server, langsung mengirim HTML, lalu mengirim ulang JS yang sama ke klien
-
- Setelah penolakan terbuka dan perdebatan sengit, tim React menunda perubahan tersebut
-
- Beralih dari React ke Web Components modern + arsitektur HTML-first
- Memberi manfaat besar terutama bagi pengguna perangkat keras kelas bawah
-
- Berharap akan ada lebih banyak keluhan tentang pengalaman pengguna yang buruk yang dipaksakan oleh React sisi klien
- Namun, keluhan nyata hampir semuanya justru berfokus pada pengalaman developer
-
- Sebuah tim developer beralih dari “VDOM yang terlalu dominan” di React ke DOM API modern
- Peningkatan kecepatan dan interaksi langsung terasa
Masalah mobile dan platform
-
- Strategi mobile React pada dasarnya mendorong tim ke ketergantungan pada platform (platform capture)
- Web menawarkan alternatif yang dapat dideploy langsung tanpa gatekeeper atau biaya platform
Masalah ekosistem dan komunitas
-
- Saat butuh frontend baru, titik mulainya bukan "apa batasannya dan alat apa yang cocok", melainkan "pakai React saja, semua orang sudah tahu"
- Siklus penguatan diri di mana efek jaringan menentukan arsitektur, bukan kecocokan teknis
-
- Berdasarkan pekerjaan konsultasi dan data industri, komunitas React sedang mengalami krisis kualitas yang dalam dan terukur
- Peserta React Summit tidak mendengar fakta ini
-
- Pengembang React memang banyak, tetapi praktisi yang benar-benar mahir dan memahami pola-pola mendalam makin langka dan mahal
- Insinyur paling berpengalaman mulai pindah ke stack lain karena lelah dengan kompleksitasnya
-
- Sudah satu setengah tahun berlalu sejak rilis React terakhir, lebih lama daripada siklus rilis sebelumnya
Kritik terhadap React Server Components
-
- React nyaris tidak lagi membenahi sisi klien (sejak penghentian eksperimen pada 2019)
- Framework warisan yang dibuat untuk menyelesaikan masalah skala Facebook dengan sumber daya skala Facebook, sehingga tidak cocok untuk sebagian besar kasus penggunaan
-
- Jika ingin merilis dengan cepat, sebaiknya tidak memakai React Server Components
- Masih bisa digunakan untuk tujuan belajar, eksperimen, atau pembuatan konten
Kembali ke dasar dan penekanan pada alternatif
-
- Keunggulan progressive enhancement berbasis HTML
- Memberikan pengalaman yang bisa dipakai lebih cepat kepada pengguna
- Situs tidak terlihat buruk bahkan di koneksi lambat
- Bahkan saat ada masalah, pengguna tetap bisa memakai situs tersebut
-
- Anjuran satir: "cari folder
node_modules lalu seret ke tempat sampah"
-
- React telah menjadi reruntuhan yang membengkak karena janji palsu, klaim yang menyesatkan, dan lapisan kompatibilitas mundur yang tak ada habisnya
- Bahkan saat diperbarui, sering kali tetap merusak kode
-
- Dengan meninggalkan framework berat seperti React dan kembali fokus pada dasar-dasar web, masa depan karier dan codebase bisa lebih terjamin
-
- Mengapa setiap kali perlu memperbarui tampilan, semua orang langsung memikirkan React?
- Mempertanyakan kecenderungan untuk mencampuradukkan perhatian frontend dan backend
Kasus migrasi dan transisi
-
- Selama ini mengabaikan headline bahwa Svelte adalah framework "paling dicintai", tetapi kini bergabung ke kubu Svelte
-
- Setelah langkah awal yang keliru dengan React pada 2023, beralih ke stack yang lebih cocok dengan domain pelanggan
-
- Frontend JS-heavy era "fat client" sedang menghilang
- Hype aplikasi edge tidak diperlukan untuk membangun beragam bisnis
-
- Menjelajahi LiveView karena masalah performa pada React SPA
- Setelah eksplorasi selama 2 hari menjadi yakin, lalu mengganti React SPA dengan LiveView dalam beberapa minggu
Arus besar secara umum dan prospek ke depan
-
- Alur yang berlanjut dari Applets, ActiveX, Flash, Flex, Silverlight, Angular, hingga React
- Kegagalan berulang dari perusahaan-perusahaan yang tidak mampu melihat gambaran besarnya
-
- Frameworkism mengajarkan adopsi lebih banyak (atau berbeda) alat framework sebagai cara memperbaiki pengalaman pengguna
- Membuat orang tenggelam dalam aktivitas yang terlihat seperti engineering, padahal sebenarnya tidak
-
- Jangan ikut menyetujui rencana membangun YAJSD (Yet Another JavaScript Disaster)
- Saat ada usulan rewrite React, insinyur senior tidak boleh diam
-
- Pengembang web baru kini bisa dengan serius mempertimbangkan untuk sepenuhnya menghindari React
- Peluang kerja jangka pendek mungkin berkurang, tetapi ada kemungkinan lebih cocok dengan perusahaan pelopor
-
- Di sebagian besar organisasi yang membuat perangkat lunak untuk web, React secara objektif lebih buruk dibanding banyak alternatif
-
- Rekomendasi tentang perubahan sikap komunitas terhadap React dan pengambilan keputusan proyek
-
- Saat membuat hal yang kompleks, React masih tetap dipilih, tetapi ada penyesalan bahwa akan lebih menyenangkan jika pilihan itu terasa lebih membahagiakan
-
- React memberi kesan seperti memainkan permainannya sendiri dengan aturannya sendiri
-
- Diskusi tentang perbaikan penggunaan JavaScript, pendidikan progressive enhancement, dan cara mendamaikan komunitas
-
- Rangkuman historis kritik yang telah ditujukan pada proyek React selama bertahun-tahun
- Sebagiannya sudah terselesaikan dan sebagiannya masih belum terselesaikan
Hooks dan paradigma alternatif
-
- Hooks di React sulit digunakan dengan benar, dan lebih sulit lagi digunakan dengan performa yang baik
- Menjadi penyebab penurunan kualitas kode dan performa di banyak aplikasi
Kritik metaforis
-
- Video yang mengibaratkan dengan Kekristenan keanehan para pendukungnya, keseriusan diri yang berlebihan, dan dokumentasi yang tak ada habisnya
3 komentar
React itu cuma soal keyakinan (sesat)
Seperti Ant Mill //
Opini Hacker News
Ada beberapa hal yang tidak saya sukai dari React. React adalah framework untuk merender HTML interaktif di layar, bukan untuk membuat pemrograman yang sangat rumit
Pertama, React terlalu bergantung pada konsep dan istilah yang rumit. Dibandingkan dengan Vue,
useEffectsetara denganwatch, danuseMemosetara dengancomputedKedua, cara yang “terlalu pintar” seperti ini meresap bukan hanya ke istilahnya, tetapi juga ke ekosistemnya. Redux dulu mengharuskan banyak kode di banyak file hanya untuk menambah satu angka, dan terasa seperti itu karena pembuatnya menyukai konsep ilmu komputer yang canggih. Pada saat yang sama, di VueX kita tinggal menaikkan angka itu saja. Untungnya, sekarang ekosistem React punya lebih banyak state manager yang waras
Ketiga, React tidak menyediakan alat kerja CSS secara bawaan
Keempat, React tidak mengurus optimasi secara otomatis. Kita harus tahu kapan dan bagaimana memakai atau tidak memakai
useEffectdanuseMemo, dan ada banyak semacam cerita rakyat seputar optimasi React. Masalahnya, inti tujuannya justru adalah rerendering. Di Vue, framework memaksa kita memakai alat bawaannya dan di dalamnya sebagian besar optimasi sudah ditangani, jadi saya tidak pernah merasa perlu mengoptimalkan aplikasi Vue secara manualKelima, cerita rakyat itu sendiri adalah masalah. API React dan “cara menulis React yang benar” sudah berubah besar berkali-kali, sehingga sampai sekarang sangat sulit membedakan mana nasihat yang masih benar dan mana yang tidak
Pada akhirnya, React bisa diringkas sebagai sesuatu yang terlalu berfokus pada ide, ilmu komputer, dan abstraksi tingkat tinggi, dan kurang fokus pada memudahkan pembuatan HTML interaktif di layar
Saya banyak memakai React, Vue, dan Svelte, tetapi saat memakai React saya terus harus memikirkan hal-hal yang di Vue atau Svelte sebenarnya sudah ditangani. Dari sisi performa, ketiganya mirip
Saya juga pernah menulis soal ini dulu: https://www.brachkow.com/notes/what-i-like-in-vue/
Sebagai orang yang sudah mengalami semua arus utama JavaScript selama sekitar 16 tahun terakhir, dalam arti tertentu saya memang suka React
React adalah framework JavaScript terburuk, jika tidak menghitung semua hal lain yang pernah kita coba
Saya akan memilih React kapan pun dibanding era Angular 1. Dibanding pendekatan merakit semuanya sendiri dari nol seperti Backbone, saya lebih memilih MVC berat ala Angular 1, dan dibanding struktur sup klasik JQuery, struktur MVC minimal Backbone masih lebih baik. Pada masa itu, saya juga akan langsung memilih manipulasi DOM dan pelengkap standard library dari JQuery daripada API native
React memang punya trade-off, tetapi kita sampai di titik ini setelah lama mengalami begitu banyak alternatif yang tidak berjalan baik
cgi-binyang ditulis manual ke JQuery, Angular v1, lalu React, dan React adalah alat yang dengan senang hati akan saya ambil. React melakukan apa yang saya butuhkanTentu saja ada orang yang menyukai React. Ini bukan seperti JavaScript yang secara praktis terpaksa harus dipakai, dan bukan juga seperti React atau framework web lain dipaksakan, tetapi React tetap menang. Setidaknya itu bisa dilihat sebagai bukti bahwa React cukup disukai dibanding kebanyakan framework lain
Sampai akhir 2010-an, keluhan umum tentang pengembangan web adalah perubahan yang terlalu cepat dan selalu ada hal baru yang harus dipelajari, dan keluhan itu memang masuk akal. Tetapi begitu monokultur React naik ke puncak, sekarang semua orang mengeluh karena itu juga. Memang tidak mungkin menang
React menang karena menjadi pilihan default dan karena orang menyukai hal yang sudah akrab dengan preferensi mereka sendiri
Kalau ingin memakai yang lain, kita harus mengimplementasikan integrasinya sendiri, mencari proyek open source yang sudah melakukannya, atau bertanya ke AI
Untuk proyek hobi mungkin bisa, tetapi di lingkungan kerja sulit dibayangkan
Saya suka React. Saya juga sudah serius mencoba kubu HTMX/Hotwire
Saya ingin membuat tombol kembali yang, jika datang dari inbox, akan kembali menggunakan browser API, dan jika tidak, akan mengarah ke tautan inbox agar posisi scroll tetap terjaga. Saya harus menghubungkan perilaku di HTML untuk memanggil fungsi kembali, lalu di controller menentukan halaman sebelumnya, kemudian menurunkan tombol kembali JavaScript-aktif atau hard link. Logikanya tersebar di 3 file
Di React, JavaScript di dalam komponen bisa menentukan apakah halaman sebelumnya adalah inbox, lalu berdasarkan nilai itu menampilkan JSX tombol kembali atau tautan. Semuanya selesai dalam satu file. Bagi saya, cukup memodelkan satu entitas konseptual, sedangkan dengan cara lain saya harus memaksakan fungsionalitas itu ke 3 entitas berbeda
Apakah lebih lambat? Jelas lebih lambat. Tapi tetap membuat saya senang. Jika Anda menderita karena codebase React yang berantakan di perusahaan, salahkan rekan kerja Anda. Tanpa React, pasti akan lebih buruk
Selain kadang untuk peningkatan form, saya akan selalu lebih memilih htmx/server rendering dan perilaku native
Jika mengikuti cara htmx yang direkomendasikan, Anda bisa menghubungkan tombol
onclickke JavaScript inline, atau jika tidak suka itu, memanggil fungsi sepertigoBackOrInboxfunction goBackOrInbox() { if (document.referrer) { const path = new URL(document.referrer).pathname; if (path.startsWith('/inbox')) { history.back(); return; } } window.location.href = '/inbox'; }Jika sering memakai pola seperti ini, Anda tinggal membuatnya berparameter dengan menerima path tujuan sebagai argumen
Saya sudah lama menulis kode React, dan sekarang di kantor sedang mengerjakan proyek Vue besar. Dulu semua orang bilang Vue adalah pilihan yang lebih mudah dan lebih ramah di antara keduanya, tapi sekarang saya mulai melihatnya secara berbeda
React secara elegan membuat komponen pada dasarnya hanyalah fungsi, dan di luar itu tidak banyak lagi. Kalau ekosistem Next.js disisihkan dulu, ini yang paling elegan dari apa pun yang pernah saya lihat di pengembangan frontend
Sebaliknya, Vue terasa campur aduk. Terlihat jejak backend developer yang tidak benar-benar ingin belajar JavaScript dengan baik lalu menerima dan memujinya, dan hasilnya terasa seperti campuran canggung yang tidak menyatu rapi
Saya sudah memakai semua framework utama, dan sekarang sedang membuat web app Angular besar. Di Angular, komponen diekspresikan sebagai class, template, dan style. Event listener umumnya memanggil method dari class, dan state bisa sesederhana properti pada class. Jauh lebih alami dan jebakannya juga jauh lebih sedikit. Tentu bukan nol
Pengalamannya memang agak berbeda. Ada hal-hal yang lebih mudah di React dan ada juga yang lebih mudah di Vue, tetapi fakta bahwa Vue memakai signal adalah keunggulan besar bagi saya
Daripada React itu sendiri, saya lebih tertarik pada pertanyaan yang lebih umum: bagaimana cara terbaik menulis UI dengan kode
Saya penggemar React dan memakai React untuk hampir semua aplikasi web yang saya buat, tetapi masalah terbesar dan paling jelas adalah menulis UI dengan React tidak terasa senatural memakai Go untuk alat baris perintah atau Elixir untuk aplikasi real-time
Ada bahasa yang terasa sangat alami dan nyaris tanpa friksi untuk tugas tertentu. Namun untuk UI, tampaknya belum ada yang benar-benar berhasil menaklukkannya. Swift, JSX/HTML, Svelte, atau framework populer lain sejenisnya semuanya terasa seperti sekadar mengakali masalah sampai batas tertentu. Seolah para perancang bahasa/framework pada suatu titik terpaksa memasukkan kompromi sintaks yang berantakan, aneh, atau menyakitkan demi memenuhi kebutuhan
Antarmuka yang alami untuk UI itu bersifat visual, jadi alat seperti Figma bisa menjadi bagian penting dari solusinya. Meski begitu, rasanya masih ada yang kurang. Seharusnya ada cara yang lebih intuitif untuk mengekspresikan hal visual dalam kode. Sulit menjelaskan dengan tepat, tetapi solusi yang ada sekarang selalu terasa sedikit kurang di suatu sisi
Sampai sekarang pun saya lebih memilih React daripada hampir semua yang lain, termasuk Svelte, Vue, dan Solid. Namun belakangan saya mulai memakai Crank(https://crank.js.org/), dan itu tampak selangkah lebih dekat ke arah yang ingin saya tuju. Hanya saja sejauh ini saya baru memakainya untuk proyek main-main, jadi sulit mengatakan seberapa baik skalanya baik dari sisi performa maupun pengalaman pengembang
Analisis terbaik yang pernah saya lihat sejauh ini ada di tulisan Chatty, “Programs = Data + Algorithms + Architecture: consequences for interactive software engineering”[2]. Memang agak sulit dibaca, tetapi sangat layak
Singkatnya, masalahnya adalah arsitektur, lebih tepatnya ketidakcocokan antara bahasa dan arsitektur. Gaya arsitektur panggil/kembali yang didorong oleh bahasa pemrograman “serbaguna” tidak cocok dengan arsitektur yang dibutuhkan antarmuka pengguna, bahkan cenderung berbenturan
Saya juga menulis tentang topik ini di “Can Programmers Escape the Gentle Tyranny of call/return?”
Pendekatan saya saat ini adalah membuat terlebih dahulu Objective-Smalltalk[4], bahasa pemrograman yang bisa mengekspresikan gaya arsitektur alternatif dengan mudah
Dengan itu saya sekarang sedang membuat framework UI bernama interscript, yang juga mencakup HTMXNative dan berbagai elemen tambahan
Sejauh ini tampaknya berjalan cukup baik
[1] Contoh: “Languages for developing user interfaces” oleh Myers dkk. https://api.taylorfrancis.com/content/books/mono/download?id...
[2] https://opendl.ifip-tc6.org/db/conf/ehci/ehci2007/Chatty07.p...
[3] https://2020.programming-conference.org/details/salon-2020-p...
[4] https://objective.st
Namun seiring waktu, saya jadi menerima jawaban yang tidak terlalu idealistis. Mungkin memang tidak ada solusi seperti itu. Ruang masalahnya mungkin terlalu kompleks, sehingga tidak ada solusi umum yang secara manusiawi mungkin dan bisa mencakup semua bentuk. Jika ada satu bidang di mana itu benar, mungkin bidang itu adalah UI
Betul. React adalah antarmuka paling intuitif sejauh ini yang berhasil menggabungkan gaya deklaratif dan imperatif. Di antara framework UI dari semua bahasa, menurut saya tidak ada yang mendekati JSX
Saya sangat menyukai Svelte, dan untuk aplikasi yang lebih kompleks saya memakai SvelteKit
Dalam banyak kasus yang dulu mungkin akan saya kerjakan dengan React, ini terasa sebagai peningkatan yang jauh lebih baik
Svelte tampaknya jauh lebih mudah dipelajari bagi orang yang sudah memahami dasar-dasar pengembangan web, HTML, CSS, dan JavaScript. Namun belakangan saya sering melihat orang memulai pengembangan web dengan React, dan urutannya terasa agak terbalik
Secara pribadi saya membuat aplikasi mobile dengan SvelteKit + Capacitor, dan konfigurasi saya tulis di sini: https://bryanhogan.com/blog/web-to-app-sveltekit-capacitor
Untuk landing page sederhana, saya lebih memilih Astro
Saya setuju bahwa sekarang banyak orang memulai pengembangan web dengan React dan itu terasa terbalik. Svelte menangani HTML seperti bahasa ibu, jadi cukup efektif mencegah masalah ini. Kalau mulai belajar pengembangan web dengan Svelte(Kit), kemungkinan besar orang akan mempelajari lebih banyak dasar dibanding jika memulai dengan React
Saya memang bias karena termasuk salah satu orang yang ikut memungkinkan React lahir, tetapi saya benar-benar menyukai React. Sebelumnya saya mencoba segala macam hal untuk memperbaiki masalah yang saya hadapi di frontend. Namun sejak React muncul, kebutuhan itu hilang, dan saya bisa fokus hanya pada membangun sesuatu
Salah satu presentasi yang paling saya sukai adalah https://www.youtube.com/watch?v=h9SDuTSy7ps. Dari pengalaman saya, arsitektur React itu sangat bagus dan cukup cocok untuk membangun aplikasi besar
Sayangnya, masalah terbesar React adalah ia memaksa kita masuk ke ekosistem JS/TS. Bagi saya, JavaScript/TypeScript tanpa diragukan lagi lebih terasa sebagai target kompilasi daripada sistem yang ingin saya tangani secara langsung
Saya puas dengan Elm. Komunitasnya memang sangat kecil, dan kadang kita harus membuat library sendiri. TEA kadang terasa tidak alami jika datang dari React, tetapi saya selalu bersemangat saat bekerja dengan Elm karena tidak perlu mengkhawatirkan state implisit dan tak terduga seperti
useEffectSelain itu, Claude tampaknya bertahan lebih baik di Elm daripada di React, setidaknya di dalam codebase besar yang menakutkan
State tampaknya seperti tabu besar, jadi rasanya agak bertentangan. Saya juga penasaran apakah pada akhirnya ini berarti semua aplikasi Elm menjadi aplikasi Redux + React global tanpa efek. Saya ingin tahu lebih banyak tentang apa yang menyenangkan dari Elm dan bagaimana biasanya orang bekerja dengannya. Tautan juga boleh