Web Components itu tidak masalah
(nolanlawson.com)- Perdebatan tentang web components bukan soal harus memilih salah satu antara kinerja tertinggi dan standar platform, dan asumsi bahwa semuanya harus menggantikan seluruh framework JavaScript sejak awal sudah berlebihan
- Custom Elements memiliki overhead karena menggunakan DOM sebagai antarmuka, tetapi dalam produk nyata yang dinilai bukan hanya performa, melainkan juga kemudahan pemeliharaan, keamanan, kegunaan, dan aksesibilitas
- Biaya dukungan web components di framework bisa diserap lewat beberapa pemeriksaan sederhana, dan meski merupakan fitur standar, itu tidak berarti semua framework wajib mengadopsinya
- Web components memiliki kelemahan pada server-side rendering (SSR), aksesibilitas, dan sebagian interoperabilitas, sehingga masih ada situasi di mana React, Solid, dan Svelte lebih cocok
- Di lingkungan seperti Salesforce, tempat aplikasi client-rendering, marketplace komponen, dan kompatibilitas mundur jangka panjang penting, web components bisa menjadi pilihan yang realistis
Titik awal perdebatan dan posisi penulis
- Perdebatan terbaru berlanjut dari “Web Components Are Not the Future” oleh Ryan Carniato dan “Web Components Are Not the Future — They’re the Present” oleh Cory LaViska
- Isunya bukan menyerang kubu lawan, melainkan lebih dekat ke pertanyaan apakah para developer dengan batasan yang berbeda bisa menemukan titik temu
- Ryan Carniato sangat dihargai lewat Solid dan pekerjaan desain framework serta performa yang terlihat di
js-framework-benchmark - Web components juga punya wilayah penggunaan nyata yang terhubung dengan implementasi framework, pembuatan komponen, Web Components Community Group, grup Accessibility Object Model, serta pekerjaan pada shadow DOM, custom elements, dan aksesibilitas
Performa: biaya DOM itu nyata, tetapi bukan segalanya
- Kelemahan dasar web components adalah fondasinya pada Custom Elements
- Semua antarmuka harus melewati DOM, sehingga muncul overhead performa
- Jika tujuannya adalah framework tercepat secara absolut, node DOM harus dikurangi semaksimal mungkin, dan menurut tolok ukur ini web components kurang diuntungkan
- Namun performa bukan satu-satunya kriteria dalam pengembangan perangkat lunak
- Kemudahan pemeliharaan, keamanan, kegunaan, dan aksesibilitas juga harus dipertimbangkan
- Jika atribut
aria-*tidak dirender, rendering DOM mungkin bisa sedikit lebih cepat, tetapi atribut itu bisa diperlukan untuk antarmuka yang aksesibel - Mikro-optimisasi seperti
forloop yang lebih cepat daripada.forEach()atauvaryang lebih cepat daripadaconst/letbiasanya tidak cukup berharga untuk dikejar
- Meminimalkan node DOM adalah gagasan inti dari virtualization
- Meski bukan pilihan tercepat, pendekatan yang lebih sederhana kadang sudah cukup
components as elementsjuga bukan yang paling optimal, tetapi tujuan tidak harus selalu optimal di segala hal
- Pendekatan memakai custom elements yang dibuat dengan framework berbeda secara bersamaan juga bermakna dalam praktik
- Bisa saja perlu migrasi bertahap dari Framework A ke Framework B
- Ada juga kasus yang mengharuskan penggabungan beberapa micro-frontend
- Mungkin bukan antarmuka tercepat, tetapi bisa menjadi trade-off yang diperlukan
- Dalam performa web nyata, titik perbaikan berbiaya rendah seperti layout thrashing, network waterfall, dan re-render yang tidak perlu jauh lebih umum
- Persaingan seperti
js-framework-benchmarkmenarik bagi penulis framework, tetapi tidak selalu menentukan dalam situasi produk pada umumnya - Jika setiap milidetik penting di lingkungan dengan sumber daya terbatas, membuang web components juga merupakan pilihan yang valid
- Persaingan seperti
Biaya dukungan framework dan kebebasan memilih
- Penulis tidak setuju dengan klaim bahwa dukungan web components adalah biaya yang terlalu besar bagi penulis framework
- Deteksi props dan attributes bisa ditangani dengan pemeriksaan
prop in element - Menghasilkan output berupa web components bisa terasa menyakitkan, tetapi itu bukan pekerjaan yang wajib dilakukan semua framework
- Vue 2 memakai web component wrapper library terpisah, dan Remount ada tanpa masukan dari tim React
- Deteksi props dan attributes bisa ditangani dengan pemeriksaan
- Framework tetap bisa dibuat dengan sangat baik meski mengabaikan fitur yang ditambahkan ke web platform sejak 2011
- jQuery v1 masih berjalan di banyak situs web
- Karena tim performa browser mengoptimalkan pola dari developer web masa lalu, kode lama malah bisa berjalan lebih cepat di browser baru
- Memilih untuk menerima fitur web platform modern membawa pertimbangan baru
- Fitur seperti
Symbol,Proxy, dan Promises juga masuk kategori yang sama - Berkat kompatibilitas mundur web, kode yang ditulis hari ini bisa tetap berjalan 10 tahun lagi
- Fitur seperti
- Framework yang tidak tertarik pada web components atau tidak ingin mendukungnya tetap sepenuhnya masuk akal
- Seluruh UI bisa dibuat dengan web components
- Bisa juga hanya mencampurkan sebagian HTML web components
- Memilih untuk sama sekali tidak memakainya juga memungkinkan
- Framework “tanpa web components” pun bisa punya penggemar
Standar adalah titik acuan, bukan kewajiban
- Ketika suatu fitur menjadi standar, developer akan sadar akan fitur itu sebagai pembanding dasar
- Penulis komponen harus memutuskan apakah
<slot>miliknya harus berperilaku seperti<slot>bawaan - Mereka juga harus memilih apakah akan memakai
IntersectionObserveratau<img loading="lazy">, atau membuat abstraksi sendiri
- Penulis komponen harus memutuskan apakah
- Standar menyediakan titik referensi bersama dan kosakata bersama
- Ada dasar untuk membandingkan dan mengontraskan pendekatan yang berbeda
- Namun menjadi standar tidak berarti harus selalu dipakai
- Di web, fitur yang boleh tidak dipakai dan API lama tetap hidup berdampingan
- API deprecated seperti
document.domain,with, dan<frame>masih tetap didukung - Fitur dalam web platform bisa dipilih untuk dipakai atau ditinggalkan
- API deprecated seperti
Di mana web components cocok dan tidak cocok
- Web components bagus untuk banyak hal, tetapi bukan alat untuk menggantikan semua framework JavaScript
- Kelemahannya mencakup server-side rendering (SSR), aksesibilitas, dan sebagian interoperabilitas
- Masih banyak situasi di mana framework seperti React, Solid, dan Svelte lebih menonjol
- Pernyataan “web components bukan masa depan” bisa benar untuk developer atau proyek tertentu
- Di akar perdebatan ini ada kenyataan bahwa orang yang berbeda membuat hal yang berbeda di bawah batasan yang berbeda pula
Kasus Salesforce dan penilaian praktis
- Salesforce menunjukkan lingkungan yang bisa sangat cocok untuk web components
- Membuat aplikasi client-rendering
- Memiliki marketplace komponen sendiri
- Membutuhkan jaminan kompatibilitas mundur yang ketat
- Masa dukungannya diukur dalam hitungan tahun, bahkan dalam beberapa kasus puluhan tahun
- Jika kondisinya tidak seperti itu, mungkin tidak perlu membangun seluruh UI dengan web components, shadow DOM, dan seluruh susunan terkaitnya
- Di web platform, game, proyek seni, dan aplikasi SaaS enterprise yang dibangun dengan berbagai fitur seperti WebGL, Wasm, dan Service Workers hidup berdampingan
- Saat fitur baru ditambahkan ke platform, itu bukan membatasi kreativitas, melainkan menambah peluang berekspresi dengan cara yang sebelumnya tak terpikirkan
- Bacaan lanjutan juga mencakup tulisan oleh Lea Verou dan tulisan oleh Baldur Bjarnason
1 komentar
Opini Hacker News
Saya mencoba memahami tulisan yang dirujuk, “Web Components Are Not the Future”, tetapi tidak banyak argumen yang meyakinkan
Kondisi framework frontend saat ini berantakan, dan saya tidak ingin mempelajari sihir (
useState,createSignal, dll.) yang tidak bisa dipahami sebelum membaca framework atau dokumentasi yang rumitJika mulai dari Web Components, rasanya intuitif, dan kita juga mendapat kemampuan yang tidak ada di tempat lain seperti isolasi Shadow DOM
Menurut saya, satu-satunya hal yang layak dipertahankan dari era React hanyalah JSX, dan saya membuat library yang memakai Web Components bersama JSX: https://webjsx.org
Tidak jelas apakah maksudnya tidak ingin mempelajari framework itu sendiri, menginginkan sesuatu yang terasa ajaib sampai tidak perlu dipelajari, atau ingin/tidak ingin membaca dokumentasi
Saya terutama memakai Vue, dan meski ekosistem SPA memang rumit, saya juga tidak tahu sistem lain seperti apa yang mungkin untuk mengelola aplikasi klien dengan state yang kompleks
Pola dasar jQuery berpusat pada efek samping, yaitu memilih elemen lalu mengubahnya, sedangkan React atau Vue.js memungkinkan kita membuat komponen yang UI-nya ditentukan oleh state sebagai data
Saat data berubah, UI diperbarui dengan perubahan DOM seminimal mungkin, dan pendekatan ini membuat widget UI jauh lebih mudah dibaca dan dipelihara berdasarkan lokasinya
Situs web dan aplikasi desktop berbasis web saat ini jauh lebih kompleks dibanding 20 tahun lalu, jadi jika yang dibuat bukan hanya UI sederhana, inovasi dari sisi manajemen state menjadi penting
useStatebekerja secara internal, dan cara menerapkannya cukup intuitifSebaliknya, library yang diajukan tampak menuntut model mental yang lebih kompleks sejak awal
Memahami detail framework secara mendalam memang ideal, tetapi React berhasil karena memungkinkan orang membuat aplikasi yang cukup canggih nyaris tanpa mengetahui model internalnya
Mungkin juga karena saya sudah menjadi developer sejak era beta C# dan masa awal HTML/JS/CSS, tetapi saya cepat memahaminya
Saat mengganti portal manajemen infrastruktur inti yang tua dan rumit, kami memilih Angular; hasilnya stabil, cepat, tampak bagus, dan semua orang puas
“Kurva belajar yang curam” tampaknya terutama datang dari developer yang masuk industri hanya dengan pengetahuan JavaScript dan sedikit React; dengan pengalaman lebih banyak, orang bisa langsung memahaminya
useState, ia bisa sampai pada jawaban yang logis dan benar dalam hitungan detikItu tidak rumit atau ajaib, dan implementasi minimal yang mirip hook React bisa dibuat dalam beberapa ratus baris
Implementasi dasar
useStatedanrunFunctionComponentlebih mudah daripada sebagian besar tugas semester 3 ilmu komputer di universitasJika ini standar untuk disebut sihir, berarti sekitar kita penuh dengan Warlock level 20 yang menciptakan Eldritch Invocation baru bahkan saat sarapan
Saya melihat salah satu alasan orang saling tidak nyambung dalam perdebatan ini adalah karena target optimisasinya berbeda
Jika Anda membangun produk inti di startup yang didanai VC, harus bergerak cepat dan terus dipelihara, framework mungkin cocok
Namun di laboratorium akademis, sering kali tidak ada banyak uang untuk memelihara aplikasi yang sudah dibuat, dan aplikasi itu harus tetap berjalan setelah dana berpindah ke proyek baru
Saya hampir selesai menulis ulang aplikasi Vue menjadi Web Components, karena dependensinya sudah membusuk sampai tidak bisa diperbarui
Sebelumnya saya menghabiskan waktu memperbaiki neraka dependensi dan kemungkinan akan terus begitu; setelah mencoba Web Components dan langsung terasa bagus, saya beralih
Dependensi berkurang dari sekitar 15 menjadi sekitar 1 (d3js), dan saya tidak menyesal
Aplikasi lama https://bam.iobio.io/, aplikasi baru https://bam2.iobio.io/
Tidak ada yang memaksa framework selalu dinaikkan ke versi terbaru, jadi seharusnya bisa tetap berada di versi Vue yang digunakan
Jika tidak ada alasan khusus, mungkin tidak masalah memakai versi yang sama sampai akhir
Ini bukan berarti Vue sejak awal tidak diperlukan untuk use case itu atau menghapus dependensi adalah pilihan buruk, tetapi jika Vue disukai, tampaknya tidak ada paksaan untuk selalu berada di versi terbaru
Saya penasaran apakah alasan Vue membutuhkan dependensi tambahan ada di sisi sistem build
Jadi saya tidak begitu paham mengapa ekosistem VC tidak bisa bertahan tanpa framework
Saya suka bahwa Svelte mendukung pembuatan Web Components melalui Custom Elements API
Karena Svelte dikompilasi menjadi JS/HTML/CSS biasa, wajar untuk membuat komponen reusable yang bekerja di framework apa pun maupun vanilla JS: https://svelte.dev/docs/custom-elements-api
Saya sudah mengikuti diskusi Web Components selama bertahun-tahun, tetapi sebagai full-stack developer saya masih belum begitu paham apa yang bisa dilakukannya untuk membuat hidup lebih baik
Sebagian besar contoh ini hanya sebatas memasukkan data ke HTML sebagai template, dan itu sudah bisa dilakukan dengan handlebars
Apakah ada sesuatu yang saya lewatkan?
Jika memakai HTML sebagai dokumen, Web Components bisa menambahkan fitur interaksi real-time yang lebih menarik
Contohnya adalah emulator terminal yang terhubung ke WebSocket, date picker, elemen form kustom, peta, data table, widget tab, dan komponen kustom yang dulu disediakan jquery-ui
Ini bisa dilakukan tanpa Web Components, tetapi jika dibuat sebagai komponen kustom, HTML menjadi jauh lebih rapi dan tetap terasa seperti dokumen
Akan bagus jika ada pustaka Web Components yang konsisten, dan dengan HTMX serta server-sent events, chat real-time yang cukup baik juga tampaknya memungkinkan
Browser mengisolasi seluruh HTML, CSS, dan JS tanpa trik tambahan
Menurut saya bagus bahwa kita bisa membuat Web Component, mendefinisikan API JS, HTML, dan CSS secara jelas berdasarkan variabel, lalu memasukkannya ke lingkungan apa pun tanpa rusak, atau tanpa harus membuat namespace CSS yang rumit dan labirin dependensi framework
Misalnya, Web Component yang membungkus tabel bisa menambahkan fitur seperti filtering atau pengurutan drag-and-drop, dan meskipun JS dimatikan atau gagal dimuat, pengguna tetap menerima tabel dasar beserta kontennya
Dulu ini jauh lebih baik daripada layar putih dari framework frontend, tetapi sekarang server-side rendering sudah tersedia luas sehingga keunggulannya berkurang
Enkapsulasi style juga bagus, tetapi sekarang pustaka headless UI dan scoped styles di framework sudah umum, jadi terasa tidak sekrusial 10 tahun lalu
Namun, untuk memakai slot kita harus memilih Shadow DOM, sehingga menjengkelkan ketika membuat komponen reusable sendiri karena tidak bisa menata gayanya dengan cara memasukkan satu stylesheet ke halaman
Jika sebuah demo menampilkan 200 baris manipulasi DOM manual, sulit untuk mengatakan bahwa Web Components adalah masa depan
Itu saja, dan untuk sebagian besar tujuan lain cukup buruk
Selain itu, kita bisa merilis komponen UI agar berjalan di semua framework tanpa harus membuat 7 versi
Bagian terburuk dari Web Components dan Shadow DOM adalah bahwa keduanya bisa membuat ekstensi browser tidak bekerja dengan benar atau bahkan sama sekali tidak bisa bekerja
Vendor browser juga tidak terburu-buru memperbaiki situasi ini
Salah satu “kesalahan” terbesar Web Components, menurut saya, adalah orang-orang mengaitkannya dengan Shadow DOM di kepala mereka
Dalam pengembangan aplikasi, jika tetap menggunakan live DOM, Web Components menjadi pilihan yang sangat ringan dan mudah
Kita bisa tetap memakai alat CSS apa pun yang diinginkan seperti bootstrap, tailwind, dan mendapatkan enkapsulasi fungsional yang sangat baik dengan biaya hampir nol, terutama jika memakai sesuatu seperti lit-html sebagai renderer
Tim-tim umumnya merasa bekerja dengan Web Components native itu menyegarkan, dan developer yang datang dari dunia framework, setelah beradaptasi sekitar seminggu, tidak ingin kembali lagi
Hanya dengan properti class sederhana dan pemanggilan manual fungsi render dari
set(), kita bisa mendapatkan manfaat reaktivitas tanpa kerepotan frameworkMasalahnya adalah tidak banyak materi yang menunjukkan cara memulai dalam “easy mode”
Sebagian besar materi pemula langsung mendorong orang ke teknik menyakitkan seperti Shadow DOM dan CSS parts yang lebih ditujukan untuk penulis pustaka daripada developer aplikasi
Rasanya perlu menulis panduan seperti “The Good Parts” tentang cara membuat hidup lebih mudah dengan Web Components
Sebagai alternatif, ada “HTML web components” yang hanya memakai live DOM, mengutamakan server-side rendering, dan bagus sebagai pengganti “bumbu jQuery”: https://adactio.com/journal/20618
Ada juga “Shadow gristle”, yang memakai Shadow DOM sesedikit mungkin dan menaruhnya di live DOM jika perlu styling atau komposisi: https://glazkov.com/2023/03/02/shadow-gristle/
Teknologi ini tampaknya bisa menjadi berkah sekaligus kutukan tergantung cara pemakaiannya, jadi saya sedang mengumpulkan materi dan komentar terkait
Hal terbaiknya adalah tidak terjerumus ke dependency hell setiap dua minggu sekali
Interoperabilitas adalah keunggulan terbesar dari sudut pandang pengguna, tetapi sepertinya orang meremehkan bahwa sebagai gantinya ada biaya performa: setiap komponen yang digunakan bisa membawa runtime yang tidak perlu
Menggunakan framework seperti Lit bersama Web Components adalah cara yang direkomendasikan, dan seiring waktu, ketika framework baru muncul dan komponen terikat pada versi lama, biaya ini akan menumpuk
Saya tidak ingin merekomendasikan kepada siapa pun arah yang membuat satu halaman memiliki beberapa library duplikat, dan jika itu termasuk dalam praktik terbaik, dalam jangka panjang itu tidak baik
Saya sudah beberapa tahun membaca tulisan, media sosial, dan video dari para pendukung Web Components, dan seharusnya sayalah pengguna sasarannya, tetapi di atas pajak interoperabilitas ada banyak kekurangan yang tidak ada pada framework arus utama
Di dalam ekosistem tiap framework, interoperabilitas bekerja dengan baik, dan dinamika yang sama yang membuat developer mencari interoperabilitas juga membuat mereka berkumpul di sekitar segelintir framework arus utama
Menurut saya Web Components tertinggal dari sisi teknologi, dan menambahkan banyak kompleksitas ke platform web demi desain awal 2010-an: https://x.com/Rich_Harris/status/1840116730716119356
Ada banyak framework dengan runtime kecil seperti Svelte, dan saya tidak mengatakan kita harus menaruh 100 framework dalam satu halaman, tetapi menurut saya 5–6 masih oke
Bukan berarti itu ideal, tetapi bisa membantu untuk migrasi bertahap atau micro frontend
Sebagai catatan, React 17 juga memperkenalkan kemampuan untuk menaruh beberapa versi React di halaman yang sama: https://nolanlawson.com/2021/08/01/why-its-okay-for-web-components-to-use-frameworks/, https://bundlephobia.com/package/svelte@4.2.19, https://legacy.reactjs.org/blog/2020/10/20/react-v17.html
React dan react-dom digabungkan sudah lebih dari 100KB, sementara Svelte dan Lit hanya beberapa KB
Anda bisa memasukkan cukup banyak framework sebelum mendekati bloat yang digunakan orang setiap hari tanpa pikir panjang
Sinyal yang saya lihat secara konsisten sejauh ini tidak bagus, komunitas itu ada di X, dan Web Components tidak menyelesaikan masalah mereka serta tidak banyak digunakan bahkan dalam kondisi terbaik
Saya berharap upaya meyakinkan itu berhasil, tetapi secara umum mereka cenderung mengatakan bahwa Web Components telah gagal dan secara keseluruhan buruk bagi web
Kebanyakan runtime cukup kecil, dan menjalankan dua runtime sekaligus tidak berarti overhead performanya besar
Semua framework web modern bersifat reaktif, jadi jika tidak ada yang perlu direspons, mereka tidak melakukan apa-apa
Jika sebagian halaman dibuat dengan React, bagian lain dengan Lit, dan bagian lainnya lagi dengan Svelte, saya tidak begitu melihat alasan mengapa pengalaman pengguna atau konsumsi baterai akan terasa lebih buruk dibanding halaman dengan satu framework
Tweet yang dikutip membahas apakah Web Components adalah “primitive yang berguna untuk membuat framework”, dan bahkan para penggemar yang benar-benar pernah memakainya biasanya tidak akan mengatakan demikian
Web Components adalah mekanisme distribusi, dan jika alternatifnya hanyalah membuat library yang sama 7 kali untuk React, Preact, Svelte, Solid, Vue, dan vanilla JS, itu mengerikan
Saya menyukai Web Components, dan optimistis bahwa ini berpotensi membantu kita keluar dari neraka frontend yang kita ciptakan sendiri saat ini
Baru-baru ini saya memberikan presentasi singkat tentang masa depan frontend, dan tampaknya orang lain juga berharap ada jalan keluar
Saya membuat tabel data untuk GUI DB, dan scrolling tetap sangat mulus meski memuat ratusan ribu baris
Saya juga berencana segera merilis library Web Component; masih dini dan kasar, tetapi saya berharap lebih banyak orang melihatnya: www.astra-ui.com
Sebaiknya pertimbangkan desain responsif untuk layar kecil dengan memindahkan ulang sidebar, dan gunakan max-width pada body alih-alih width
Tombol “explore components” di bagian bawah homepage sepertinya tidak mengarah ke mana pun
Dikatakan “belajarlah dari implementasi komponen yang terstruktur baik dan aksesibel”, tetapi saya tidak menemukan tautan implementasi di dokumentasi
Dikatakan “tidak ada dependensi yang perlu dikelola atau diperbarui”, tetapi bukankah astra-ui sendiri adalah dependensi, dan juga ada changelog: https://www.astra-ui.com/changes/
Dikatakan juga “kendali penuh atas kode dan styling”, tetapi saya tidak mengerti bagaimana kendali penuh dimungkinkan sambil bergantung pada implementasi yang disediakan library
Saya penasaran mengapa Anda memutuskan merilis library ini. Meng-open-source-kan software internal berguna ketika perusahaan punya tujuan tertentu, tetapi biasanya mudah menjadi konsumsi waktu tanpa imbalan
Library komponen harus bertarung untuk adopsi ekosistem; jika tidak, tidak ada audiens, sehingga alasan untuk merilisnya kecil
Ini terlihat seperti solusi yang bagus
Beberapa bulan lalu, di tempat kerja baru, saya mewarisi codebase JS sekitar 250 ribu baris
Satu class raksasa dan beberapa subclass mengerjakan semuanya, dan ada file yang sampai 30 ribu baris
Tidak ada framework maupun reaktivitas, jadi ketika tombol diklik, semua yang ada di layar harus diperbarui secara manual lewat event listener
Kodenya seperti ditulis oleh seseorang yang selama bertahun-tahun dikurung di sel biara hanya berbekal satu buku JavaScript dasar
Karena harus dilakukan sedikit demi sedikit, saya mulai refactoring ke Web Components, dan itu sangat membantu; sejauh ini sudah mengurangi 50 ribu baris
Namun tujuan sebenarnya adalah mempelajari seluruh hal yang dilakukan kode lama sebelum menulis ulang
Membuat ulang dengan Web Components adalah salah satu cara mencapai tujuan itu, dan bagusnya mereka tidak membuang semuanya lalu mulai dari nol
Namun jika setelah berjalan cukup jauh lalu pindah ke proyek lain, ada risiko orang berikutnya datang dan mulai refactoring dengan gayanya sendiri, sehingga menjadi codebase sulit dengan tiga gaya berbeda
Tetap saja, itu lebih baik daripada menulis ulang 250 ribu baris sekaligus
Satu hal yang saya suka dari Web Components adalah, setidaknya secara teori, ia bisa tetap berfungsi bahkan saat JS dinonaktifkan
Saya beberapa kali melakukannya untuk progressive enhancement
Secara umum saya setuju dengan Nolan. Web Components punya cukup banyak sisi kasar sehingga dalam kondisi saat ini sulit menguasai dunia, tetapi cukup bagus untuk use case tertentu
Namun saya kurang paham dengan pernyataan bahwa ia tidak cocok dengan server-side rendering; saya sudah melakukannya tanpa masalah
Sejauh yang saya lihat, untuk mendaftarkan template pada tag tertentu sepertinya diperlukan JavaScript: https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots
Di ReactJS, component atau template bisa dirender di server, dan menurut saya JSX adalah bahasa template yang cukup bagus
Sepemahaman saya, Web Components tidak memiliki bahasa template bawaan yang bagus, jadi harus membawanya sendiri
Saya tidak tahu ada mekanisme standar untuk mengambil potongan komponen JS yang terhubung dengan tag lalu merender HTML yang diperlukan tanpa menjalankan JS
Jika ke depannya kita bisa merender 3 framework Web Component berbeda di server, semuanya bisa saling dikomposisikan, dan hydration berjalan rapi, barulah bisa dianggap terselesaikan: https://nolanlawson.com/2023/08/23/use-web-components-for-what-theyre-good-at/