Rilis Tailwind CSS v4.0
(tailwindcss.com)- Tailwind CSS v4.0 adalah rilis yang menulis ulang framework ini dari nol, secara signifikan meningkatkan performa build dan mengubah alur konfigurasi serta kustomisasi menjadi berpusat pada CSS
- Berdasarkan Catalyst, build penuh menjadi 3,78x lebih cepat, dari 378ms di v3.4 menjadi 100ms di v4.0, dan build inkremental tanpa CSS baru meningkat 182x, dari 35ms menjadi 192µs
- Instalasi disederhanakan menjadi satu baris
@import "tailwindcss"dan nilai default tanpa konfigurasi, sementara pengguna Vite bisa memakai@tailwindcss/vitealih-alih PostCSS - v4.0 memanfaatkan fitur CSS modern seperti cascade layers,
@property,color-mix(), dan logical properties, serta menghadirkan deteksi konten otomatis dan pemrosesan@importbawaan - Container query, 3D transform, API gradient yang diperluas,
@starting-style,not-*,field-sizing,color-scheme, daninertkini masuk ke fitur inti sehingga mengurangi ketergantungan pada plugin terpisah
Mesin berperforma tinggi yang ditulis ulang dari nol
- Tailwind CSS v4.0 adalah versi yang ditulis ulang sepenuhnya dari nol berdasarkan pengalaman arsitektur selama bertahun-tahun
- Dalam benchmark proyek internal, rebuild penuh menjadi lebih dari 3,5x lebih cepat, dan build inkremental menjadi lebih dari 8x lebih cepat
- Waktu build median berdasarkan Catalyst adalah sebagai berikut
- Build penuh: v3.4 378ms → v4.0 100ms, peningkatan 3,78x
- Rebuild inkremental dengan CSS baru: 44ms → 5ms, peningkatan 8,8x
- Rebuild inkremental tanpa CSS baru: 35ms → 192µs, peningkatan 182x
- Build inkremental yang tidak perlu mengompilasi CSS baru menjadi lebih dari 100x lebih cepat dan selesai dalam satuan mikrodetik
- Semakin lama sebuah proyek dikerjakan, semakin sering kelas yang sudah pernah dipakai seperti
flex,col-span-2, danfont-bolddigunakan kembali, sehingga jenis build ini akan makin sering ditemui
- Semakin lama sebuah proyek dikerjakan, semakin sering kelas yang sudah pernah dipakai seperti
Memanfaatkan platform CSS modern
- v4.0 secara aktif memanfaatkan kemampuan platform web yang berkembang sejak Tailwind CSS v3.0
- Fitur CSS dasar yang menjadi fondasi utamanya adalah sebagai berikut
- Native cascade layers: mengontrol dengan lebih rinci bagaimana aturan style yang berbeda saling berinteraksi
- Registered custom properties: memungkinkan animasi gradient dan sangat meningkatkan performa pada halaman besar
color-mix(): dapat menyesuaikan opasitas semua nilai warna, termasuk CSS variable dancurrentColor- Logical properties: menyederhanakan dukungan RTL dan mengurangi ukuran CSS yang dihasilkan
- Fitur-fitur ini juga menyederhanakan implementasi internal Tailwind, mengurangi permukaan bug, dan mempermudah pemeliharaan
Penyederhanaan instalasi dan integrasi build
- Alur instalasi dirapikan untuk mengurangi langkah dan boilerplate
npm i tailwindcss @tailwindcss/postcss- Tambahkan
@tailwindcss/postcsske plugin PostCSS - Gunakan
@import "tailwindcss"di file CSS
- Di v4.0, Tailwind kini bisa diimpor dan digunakan dengan satu baris CSS alih-alih direktif
@tailwind - Tersedia alur tanpa konfigurasi yang bisa langsung dimulai tanpa pengaturan apa pun, termasuk path file template
- Tanpa plugin eksternal terpisah, aturan
@importdibundel, dan Lightning CSS digunakan secara internal untuk vendor prefixing serta transformasi sintaks modern - Pengguna Vite dapat memilih
@tailwindcss/vitealih-alih PostCSS- Tailwind CSS v4.0 sudah cepat sebagai plugin PostCSS, tetapi plugin Vite dapat memberikan performa yang lebih baik
Deteksi konten otomatis dan import bawaan
- Pengaturan array
contentyang diperlukan di v3 digantikan oleh heuristik deteksi otomatis di v4.0 - Item yang ada di
.gitignoreakan otomatis diabaikan sehingga dependensi atau file hasil generate yang tidak dikelola version control tidak akan dipindai- Contoh:
/node_modules,/coverage,/.next,/build
- Contoh:
- Ekstensi biner seperti gambar, video, dan
.zipjuga otomatis diabaikan - Jika perlu menambahkan sumber yang secara default dikecualikan, direktif
@sourcedapat digunakan di dalam file CSS@source "../node_modules/@my-company/ui-lib";@sourcejuga memakai heuristik yang sama, sehingga tipe file biner tetap dikecualikan tanpa perlu menentukan ekstensi terpisah
- Sebelum v4.0, untuk meng-inline file CSS lain dengan
@import, dibutuhkan plugin terpisah sepertipostcss-import, tetapi sekarang hal itu tidak lagi diperlukan berkat dukungan import bawaan- Sistem import ini dibuat khusus untuk Tailwind CSS dan terintegrasi erat dengan mesinnya sehingga bekerja lebih cepat
Konfigurasi CSS-first dan theme variables
- Salah satu perubahan besar di v4.0 adalah proyek kini dikonfigurasi langsung di CSS, bukan di JavaScript
- Alih-alih file
tailwind.config.js, kustomisasi dapat dilakukan dengan@themedi file CSS yang mengimpor Tailwind- Mengatur design token
- Mendefinisikan utility kustom
- Mendefinisikan variant kustom
- Design token yang didefinisikan di
@themesecara default diekspos sebagai CSS variable- Contoh:
--font-display,--breakpoint-3xl,--color-avocado-500,--ease-fluid
- Contoh:
- CSS variable yang dihasilkan ini dapat dirujuk dari CSS biasa saat runtime
- Menggunakan ulang inline style
- Meneruskannya ke library seperti Motion untuk menangani animasi
Nilai utility dinamis dan variant
- v4.0 menyederhanakan banyak utility dan variant agar dapat menerima nilai arbitrer tertentu tanpa konfigurasi
- Grid dapat memakai ukuran apa pun tanpa konfigurasi tambahan
- Contoh:
grid grid-cols-15
- Contoh:
- Atribut data boolean kustom juga dapat ditargetkan tanpa perlu didefinisikan terlebih dahulu
- Contoh:
data-current:opacity-100
- Contoh:
- Utility spacing seperti
px-*,mt-*,w-*,h-*diturunkan secara dinamis dari satu variabel skala spacing- Contoh:
--spacing: 0.25rem w-17akan dihasilkan dalam bentukcalc(var(--spacing) * 17)
- Contoh:
- Tool upgrade yang dirilis bersama v4.0 akan secara otomatis menyederhanakan sebagian besar sintaks nilai arbitrer yang sudah tidak diperlukan
Palet warna dan container query
- Seluruh palet warna bawaan ditingkatkan dari
rgbkeoklch- Warna menjadi lebih hidup dengan memanfaatkan gamut yang lebih luas di luar batas ruang warna sRGB
- Karena keseimbangan antarwarna dari v3 tetap dipertahankan, upgrade proyek lama seharusnya tidak terasa seperti breaking change
- Dukungan container query kini menjadi fitur inti di v4.0 sehingga plugin
@tailwindcss/container-queriestidak lagi diperlukan - Variant
@max-*baru dapat digunakan untuk container query max-width - Seperti variant breakpoint biasa,
@min-*dan@max-*dapat ditumpuk untuk mendefinisikan rentang container query
3D transform dan perluasan API gradient
- v4.0 menambahkan API untuk 3D transform
rotate-x-*rotate-y-*scale-z-*translate-z-*
- Fitur gradient juga diperluas sehingga lebih banyak efek dapat dibuat tanpa CSS kustom
- Linear gradient kini dapat menerima sudut sebagai nilai
- Contoh:
bg-linear-45 bg-gradient-*lama diganti namanya menjadibg-linear-*
- Contoh:
- Mode interpolasi warna gradient dapat dikontrol dengan modifier
bg-linear-to-r/srgbbg-linear-to-r/oklch- Interpolasi default v4.0 adalah OKLAB, dan modifier ruang warna lain juga dapat digunakan
- Utility
bg-conic-*danbg-radial-*baru memungkinkan pembuatan conic dan radial gradient- Bekerja bersama
from-*,via-*, danto-*yang sudah ada - Termasuk dukungan nilai arbitrer untuk kontrol detail seperti pengaturan metode interpolasi warna dan posisi gradient
- Bekerja bersama
Variant dan utility baru
- Variant
startingbaru mendukung CSS@starting-style- Dapat membuat transisi properti saat elemen pertama kali ditampilkan
- Memungkinkan animasi elemen yang muncul di halaman tanpa JavaScript
- Dukungan browser mungkin masih belum cukup untuk sebagian besar tim, tetapi sudah semakin dekat
- Variant
not-*baru mendukung pseudo-class CSS:not()- Contoh:
not-hover:opacity-75 - Media query dan query
@supportsjuga dapat dinegasikan
- Contoh:
- v4.0 juga menambahkan utility dan variant berikut
inset-shadow-*,inset-ring-*: dapat menumpuk hingga 4 layer box shadow pada satu elemenfield-sizing: mendukung pengubahan ukuran textarea otomatis tanpa JavaScriptcolor-scheme: dapat menghilangkan scrollbar terang di dark modefont-stretch: menyesuaikan variable font yang mendukung berbagai lebarinert: memberi style pada elemen noninteraktif yang ditandai dengan atributinertnth-*: mendukung styling seri nthin-*: bekerja miripgroup-*tanpa kelasgroup:popover-open: juga menargetkan popover yang terbuka dengan variantopenyang ada- descendant variant: memberi style pada semua elemen turunan
Memulai dan jalur upgrade
- Untuk proyek baru, Tailwind CSS v4.0 dapat digunakan dengan mengikuti dokumentasi instalasi
- Untuk bereksperimen langsung di browser, gunakan Tailwind Play
- Untuk proyek yang sudah ada, tersedia panduan upgrade dan tool upgrade otomatis
1 komentar
Pendapat Hacker News
Dulu saya pernah mengkritik keras berbagai kekurangan Tailwind dan ketidakcocokannya dengan cara web “murni” yang benar-benar modern, tetapi kemajuan besar di v4 sangat menggembirakan
Perubahan bahwa tema Tailwind bisa diakses sebagai variabel CSS native, dan dokumentasinya bahkan memuat contoh komponen tombol yang ditulis dengan variabel native di stylesheet eksternal, adalah perubahan yang luar biasa
Kemampuan untuk melakukan konfigurasi hanya dengan CSS juga bagus, dan sekarang Tailwind terasa seperti utilitas yang bisa ditambahkan ke proyek apa pun, bukan framework “viral” ala JavaScript yang menelan arsitektur yang masuk akal
Entah kritik selama beberapa tahun terakhir memang berdampak, atau mereka sendiri sampai pada kesimpulan yang baik, banyak perdebatan pro-kontra Tailwind kini tampak kurang relevan, dan itu hal yang sangat baik. Sekarang kita bisa fokus membuat produk
Karena apa pun bisa diekspresikan secara sistematis, ini bekerja sangat baik, dan ada sesuatu yang sangat berguna di sana
Pertama, engineer JavaScript/Tailwind telah mendominasi diskusi desain. Mereka lebih fokus pada “utility-first”, “menghapus kode yang tidak dipakai”, “CSS yang type-safe” daripada sistem desain, misalnya apakah dalam tipografi harus memakai Perfect Fifth atau Perfect Fourth
Kedua, Tailwind membuat proses produksi nyata sulit diikuti. Keputusan desain terkubur di dalam ekspresi komponen React yang sulit dibaca seperti
flex items-center shadow-lg p-6 hover:bg-gray-50 dark:bg-gray-800 py-[calc(theme(spacing[2.5])-1px)]Mungkin bisa dipahami oleh engineer JavaScript, tetapi menjadi penghalang bagi desain yang sistematis. Alih-alih mengekspresikan relasi matematis yang presisi dengan CSS, ini seperti memakai inline style yang lebih nyaman
CSS sudah jauh lebih mudah digunakan dibanding dulu, dan sebagian besar browser sekarang juga berperilaku konsisten
Ini layak dipelajari karena tidak perlu tahap build dan tidak mengotori markup dengan kode berlebihan
Kita juga bisa menulis atribut
stylelangsung di HTML, yang dulu dihindari demi pemisahan concern. Jadi saya heran mengapa ingin memperkenalkan kembali pendekatan serupa. Rasanya hanya demi mengurangi beberapa karakter sajaAtribut
stylemalah terlihat lebih intuitif karena tidak perlu menerjemahkan kode di kepala. Saya kurang melihat daya tariknyastyle. Misalnya pseudo-class:hover,:focus, pseudo-element::before,::after, media query, keyframe, dan animasiPengalaman developer di proyek besar juga tidak bagus
Di sisi lain,
@scopeyang akan segera menjadi standar adalah tambahan bagus untuk menempatkan style di dekat tempatnya: https://developer.mozilla.org/en-US/docs/Web/CSS/@scopeAbstraksi komponen memisahkan makna dan style dengan lebih kuat. Dalam kedua kasus kita tetap harus mencari abstraksi “hero”, tetapi di dunia komponen, bukan hanya style, nama tag HTML pun ikut diabstraksikan
Bagaimanapun, “detail style” dipisahkan dari “konten”, yaitu file sumber halaman. Demi pemisahan concern—yakni pemisahan konten dan presentasi yang lebih baik—tahap build bisa diterima
Kebutuhan untuk mengelola file terpisah dan menghapus komponen yang tidak dipakai juga berkurang
Kita bisa memakai media query yang tidak bisa dilakukan dengan tag
style, dan tidak ada risiko mengubah class yang dipakai di tempat lain. Scope global CSS punya kelebihan, tetapi juga berbahayaStyle dianggap milik komponen, bukan sistem desain. Ekosistem engineering yang JavaScript-first membutuhkan lebih banyak perusahaan yang digerakkan oleh desain yang memahami kekuatan CSS modern dan desain sistematis
Pendekatan
.cssbiasa memunculkan nama-nama aneh, duplikasi, dan kemungkinan konflik.css modulesjuga bisa jadi pilihan, tetapi jumlah file per komponen/halaman praktis menjadi dua kali lipatsassataulessterasa seperti menggabungkan masalahcss modulesdan.cssbiasaSaya tidak secara mendasar menyukai atau membenci Tailwind, dan awalnya sangat tidak suka, tetapi dalam proyek yang terdiri dari komponen dan halaman dengan lebih dari 200 file, nilainya terasa
Reaksi pertama terhadap Tailwind adalah “merepotkan”. Rasanya seperti sudah tahu CSS, tetapi sekarang harus belajar CSS lagi
Ini mirip situasi ketika orang tua mencoba membantu PR matematika anaknya, tetapi cara yang diajarkan di sekolah sudah sangat berbeda dari dulu; cara penyelesaiannya sendiri masih benar, tetapi tidak diterima, dan si anak kesal karena harus mencocokkan dua sistem
Saya paham suasana di tim yang menganggap kita sebaiknya pakai saja karena bekerja dengan baik dan mudah diskalakan, dan saya juga pernah mengalaminya
Namun saya masih lebih suka stylesheet biasa yang menargetkan class atau tag. Apalagi sekarang CSS sudah mendukung selector bersarang
Memang ada masalah pengelolaan stylesheet, dan saya suka pendekatan seperti Remix/React Router yang mendefinisikan dan menerapkan file CSS di level route. Kalau itu kurang, atau style dinamis menjadi terlalu rumit di file
.css,style={{...}}juga selalu bisa dipakaiCSS itu kuat, fleksibel, dan dapat diskalakan, jadi Tailwind terasa seperti pembatasan, bukan perbaikan. Saya tidak benar-benar tahu kenapa tetap populer, tetapi menurut saya dalam 3–4 tahun semua orang akan pindah lagi ke hal lain
Namun setelah berkontribusi ke proyek open source yang memakai Tailwind, saya jadi terbiasa, dan sekarang rasanya berbeda
Pada dasarnya Tailwind lebih dekat ke shorthand untuk
style={{…}}. Hal-hal yang di file.cssatau objek style butuh beberapa baris bisa selesai dengan satu utility sekitar 15 karakterWaktu yang terbuang untuk mencari hal seperti “visual text replacement css”, membuka cheat sheet CSS, atau mengubek artikel CSS-Tricks 8 tahun lalu jauh berkurang. Sebagai gantinya, saya selalu melihat dokumentasi Tailwind dan cepat menemukan utility class yang melakukan hal yang saya inginkan
Mengejutkan, banyak sekali yang masuk ke cache di kepala, dan rasanya jauh lebih baik daripada mencoba menghafal semua CSS yang dibutuhkan untuk pekerjaan layout
Tidak perlu menyentuh CSS terpisah, dan style berada tepat di atas elemen yang diberi style, jadi tidak perlu membandingkan bolak-balik
Sebenarnya ini bisa dilakukan hanya dengan properti
css, tetapi masalahnya kita semua sudah diajari bahwa itu cara yang salah, dan daftar string berisi banyak utility juga lebih mudah daripada memakai objek CSS murniIni adalah wrapper modular yang dapat dikomposisi dan terstandardisasi di atas sistem yang besar dan kompleks, jadi merupakan kemajuan besar
Sebaliknya, di media sosial ada posting yang mencampur perkalian dan pembagian lalu mengatakan hanya ada satu jawaban benar. Tailwind tidak seburuk itu, tetapi dari sudut pandang orang tua, arahnya tampak lebih dekat ke sana
Saya suka Tailwind. Selama 4 tahun terakhir saya memakainya di 3 proyek, dan terasa intuitif, dokumentasinya bagus, serta sederhana
Saya tidak merindukan masa emotion dan styled-components ketika setiap
divyang diberi style di proyek harus diberi namaDi Tailwind, container hanyalah
divdengan beberapa class. Perdebatan soal penamaan berkurang, begitu juga tenaga pikiran dan waktu review yang dipakai untuk memberi namadivharus dipikirkan namanya, dan itu agak membuat saya heranRasanya hampir tidak pernah saya memikirkan penamaan sesuatu lebih dari 1 detik. Apakah ini benar-benar titik buntu bagi sebagian orang? Saya penasaran apakah orang benar-benar sampai lumpuh di bagian itu
Orang-orang yang saya temui biasanya menentukan setiap detail yang mungkin tanpa henti. Mereka memperlakukan form web seperti proyek renovasi HGTV pribadi
Saat saya mencoba Tailwind sekali, jumlah class menjadi satu orde magnitudo lebih banyak daripada markup, dan cepat sekali sulit dibaca
Sekarang saya puas dengan workflow CSS-in-JS. Caranya menulis CSS gaya lama dengan bantuan LLM. Tunjukkan gambar ke LLM dan minta komponen, maka hasilnya langsung keluar dengan nama yang juga masuk akal
Styling di React kurang bagus, dan bahkan kalau memakai Tailwind, itu hanya opsi yang sedikit tidak terlalu buruk
Kalau memakai framework frontend dan tahap build, Svelte dan Astro bagus tergantung kebutuhan. Keduanya bisa diberi style dengan CSS biasa, dan jika komponen dijaga tetap kecil, hampir tidak perlu memakai nama class
Cukup gunakan selector elemen dan biarkan framework melakukan scoping style saat build
Saya mencoba Tailwind di situs saya dan cukup menyukainya, meski mungkin alasannya agak berbeda dari yang sering disebut
Nilai sebenarnya dari Tailwind adalah semua style yang memengaruhi satu elemen bisa dibaca di satu tempat
Nama class memang bisa menjadi panjang, tetapi membaca satu baris panjang jauh lebih cepat daripada setiap kali membuka developer tools browser atau bolak-balik naik turun di satu atau lebih stylesheet
Ketika nanti kembali ke kode itu, saya bisa mengubahnya dengan percaya diri tanpa khawatir mengubah elemen lain tanpa sengaja
Sifat cascading CSS masih berguna, tetapi biasanya saya ingin membatasi style hanya pada satu elemen. Untuk hal lain saya kembali ke CSS, tetapi CSS yang benar-benar saya tulis sangat sedikit. Biasanya karena saya hanya ingin menyesuaikan spacing
Saya juga suka bahwa “bagaimana cara melakukan X?” tidak menjadi riset 30 menit, melainkan selesai dengan pencarian dokumentasi singkat
Potongan Tailwind yang muncul di tulisan HN ini terlihat cukup menakutkan dibandingkan itu
Jika Anda menambahkan
text-xlkedivdan di dalamnya adadivsertaspanbersarang, semuanya mewarisitext-xl, jadi untuk melihat apa yang menyebabkantext-xlpada elemen bersarang, pada akhirnya Anda tetap harus menelusuri naik hierarki elemenMeski begitu, secara keseluruhan memang sedikit lebih mudah
Frasa seperti “waktu build lebih singkat”, “tidak ada lagi direktif
@tailwind”, “tanpa konfigurasi JavaScript”, dan “dirancang untuk web modern” terdengar seperti iniCSS sekarang bisa melakukan semua hal yang dulu kita lakukan sendiri, tetapi rasanya kita tetap berpura-pura bahwa kita masih dibutuhkan
styledan jauh lebih mudah dioptimalkan”Bukankah Tailwind hampir berpadanan 1:1 dengan CSS?
Saya paham kalau tidak suka Tailwind, tetapi menurut saya lebih baik mengatakan bagian mana dari Tailwind yang tidak disukai daripada menyerang straw man
Menjelek-jelekkan proyek open source orang lain dan orang-orang yang menggunakannya dengan berguna juga bukan hal yang baik
Saya ingin bertanya kepada orang-orang yang paham CSS. Saya sendiri tidak begitu paham
Saya sedang memutakhirkan proyek Phoenix pribadi ke 1.7, dan karena Phoenix sekarang memakai Tailwind secara default, saya mencoba memakainya alih-alih Bootstrap
Sejauh ini versi Bootstrap terlihat “cukup oke”, sedangkan versi Tailwind terlihat berantakan
Apa cara termudah untuk mendapatkan default yang terlihat lumayan tanpa harus mencoba menjadi desainer? Atau sebaiknya saya cukup memasang Bootstrap lagi dan selesai?
Tailwind memberi alat ketika Anda ingin mengontrol desain, tetapi pada akhirnya Anda memang harus mengontrol desain sendiri
Kalau Anda hanya ingin sesuatu yang terlihat bagus dan bernuansa Bootstrap, maka Bootstrap adalah pilihan yang tepat
Secara teori ada proyek-proyek yang mengimplementasikan ulang Bootstrap di atas Tailwind, sehingga bisa memberi titik awal seperti Bootstrap sekaligus kekuatan Tailwind, tetapi dalam praktiknya saya belum melihat yang bekerja lebih baik daripada sekadar memakai Bootstrap
Dokumentasi DaisyUI ada di sini: https://daisyui.com
Tailwind juga punya komponen berbayar, dan Anda tinggal menyalin-tempel. Hal yang bagus adalah setelah terbiasa, Anda bisa mulai mengubah komponen Flowbite sedikit demi sedikit
Kalau punya keamanan kerja dan ingin mengutak-atik berbagai hal, silakan bermain-main dengan Tailwind. Orang-orang yang peka tren dan bersuara lantang tampaknya umumnya menyukai Tailwind
Namun jika itu proyek sendiri, didanai sendiri, atau ada tenggat, lebih baik memakai Bootstrap yang sudah Anda kenal dan fokus menyelesaikan pekerjaan daripada berperang habis-habisan soal UI
Tailwind menyediakan kelas-kelas yang perlu disusun untuk membuat komponen
Akan lebih mudah jika dipakai bersama sumber komponen UI. Saya pernah memakai TailwindUI, tetapi itu berbayar, dan sepertinya ada alternatif gratis yang bagus juga
Dalam percakapan “Tailwind atau bukan”, ada pola yang jelas. Ini berulang setiap kali Tailwind disebut
Ada orang-orang yang belum pernah benar-benar memakainya lebih dari 30 menit, hanya mencoba sebentar atau sekadar melihat dokumentasinya. Mereka tidak menyukai Tailwind dan lebih menyukai hal seperti “CSS murni”
Sebaliknya ada orang-orang yang pernah memakainya dalam proyek nyata, di dalam tim yang beranggotakan lebih dari satu orang. Mereka memahami nilainya, menerima trade-off-nya, dan menyukainya
Saya sering melihat orang berpindah dari kelompok pertama ke kelompok kedua, tetapi hampir tidak pernah melihat orang kembali dari kelompok kedua ke kelompok pertama
Itulah sebabnya Tailwind berhasil. Di mata kaum puris mungkin tidak indah, tetapi di mata pembuat dan kaum pragmatis, ini benar-benar hebat
Saya tidak menentang Tailwind, tetapi alasan saya belum mencobanya adalah karena saya belum melihat dengan jelas mengapa pendekatan ini lebih baik daripada pilihan lain seperti Web Components atau React Styled Components
Masalah terbesar adalah Tailwind membuat HTML berantakan dengan sangat banyak utility class, sehingga sulit dibaca dan dipelihara
Saya paham itu lebih baik daripada file CSS global yang besar dan CSS klasik berbasis nama tag, tetapi sudah ada cara untuk memakai CSS yang di-scope ke komponen tanpa mencemari namespace global. Web Components dan Styled Components adalah contohnya
Keduanya mengikat style langsung ke komponen, atau lebih umum lagi ke kumpulan tag HTML tertentu, sehingga lebih mudah melihat style mana diterapkan di mana
Tidak perlu nama class global, dan kekhawatiran tentang efek samping atau konflik yang tidak diinginkan juga berkurang. Jika komponen dihapus, style terkait ikut terhapus, sehingga tidak perlu khawatir CSS yang tidak terpakai tertinggal. Berkat shadow DOM, risiko style satu komponen secara tidak sengaja memengaruhi komponen lain juga tidak ada
Saya menganggap penting menjaga HTML tetap singkat dan mudah dibaca, tanpa mencampur style presentasional langsung ke markup. Jika semua style masuk ke atribut
classseperti Tailwind, akan muncul daftar class panjang dalam satu baris, dan jika harus menambahkan nama class asli juga, HTML menjadi berantakanSulit memahami sekilas style apa yang diterapkan, dan sulit juga melakukan indentasi dengan benar. Ini mengingatkan saya pada berbagai alasan mengapa dulu kita beralih dari atribut
styleinline di HTMLSaya tidak membenci Tailwind, tetapi dari sisi keterbacaan, kemudahan pemeliharaan, dan pemisahan concern, saya belum melihat keunggulan yang jelas dibanding Web Components atau Styled Components, dan kekhawatiran saya yang belum terjawab masih besar
Saya sudah membaca dokumentasinya tetapi belum mencobanya, dan sulit memahami mengapa harus memilih Tailwind alih-alih pilihan lain. Banyaknya class di tengah HTML biasa membuat keduanya sama-sama sulit dibaca bagi saya
Saya mengakui ada orang-orang yang menggunakan Tailwind dengan berguna dan produktif, tetapi karena sekarang Tailwind ada di mana-mana, tampilan yang rapi tetapi umum terlihat di banyak tempat
Pada umumnya, Tailwind tidak lebih banyak memengaruhi gaya dibanding CSS biasa. Ada sedikit pengecualian. Hal-hal seperti shadow memang sedikit lebih terstandardisasi, dan palet warna indigo belakangan juga cukup memengaruhi pihak luar
Orang-orang hanya cenderung mendesain situs dengan cara tertentu. Terutama saat menggunakannya bersama ShadCn
Saya melihatnya mirip dengan Inter yang dipakai sebagai Helvetica baru untuk font situs web. Kalau banyak orang memakainya dan terlihat bagus, rasanya tidak ada alasan khusus untuk tidak menggunakannya
Bootstrap sudah menyediakan banyak utility class jauh sebelum Tailwind, sehingga banyak menghemat waktu, dan tidak memaksakan tampilan tertentu
Tinggal memuat class yang diinginkan. Tentu ceritanya berbeda jika Anda tidak mengunduh file sumber Sass, tetapi itu pasti pilihan yang bodoh
Karena itu, sebagian besar proyek memakai segelintir framework saja. Jika muncul 4–5 proyek UI berkualitas tinggi lagi, terutama dengan arah gaya yang lebih berbeda, keragaman akan bertambah
Seperti banyak pekerjaan kreatif lainnya, desain pun tampaknya arahnya ditentukan oleh jumlah orang yang mengejutkan sedikit
Saya berharap lebih banyak orang mengetahui hal ini. Mungkin ada orang-orang berbakat yang tidak membuat sesuatu karena berpikir “kalaupun saya membuatnya, tidak ada yang akan mendengarkan”
Namun jika sebagian dari mereka mencoba, saya rasa mereka bisa membuka UI baru untuk bagian besar web
Tailwind adalah bukti yang menunjukkan kelebihan inline style, yaitu cara menata gaya sesuatu tanpa memberinya nama, universalitas string, sekaligus keterbatasan string
Saya menantikan apa yang akan datang berikutnya, dan sampai saat itu saya akan memakai Tailwind dengan setengah hati