Tailwind CSS v4 — كل ما تغيّر وكيف تهاجر
استعراض شامل لأبرز التغييرات في Tailwind CSS الإصدار الرابع: محرك Oxide الجديد، الإعداد عبر CSS، وAPI الـ theme الجديد.
ما الجديد في Tailwind v4؟
Tailwind CSS v4 إعادة كتابة كاملة من الأساس. المحرك الجديد Oxide (مكتوب بـ Rust) أسرع بـ 10x في البناء، وأسرع بـ 100x في البناء الإضافي.
لكن الأهم من السرعة: طريقة الإعداد تغيّرت كليًا.
الإعداد: CSS-first بدلًا من JS
v3 (القديم)
// tailwind.config.js
module.exports = {
content: ["./src/**/*.{ts,tsx}"],
darkMode: "class",
theme: {
extend: {
colors: {
brand: "#6366f1",
},
fontFamily: {
sans: ["Cairo", "sans-serif"],
},
},
},
};v4 (الجديد)
/* globals.css */
@import "tailwindcss";
@theme {
--font-sans: "Cairo", sans-serif;
--color-brand: #6366f1;
--color-brand-hover: #4f46e5;
--radius-card: 1rem;
}لا يوجد ملف tailwind.config.js بعد الآن. كل شيء في CSS.
Dark Mode
/* v3: ضُبط في tailwind.config.js */
/* v4: ضعها في CSS */
@variant dark (&:is(.dark, .dark *));المتغيرات المدمجة في CSS
كل قيم الـ theme أصبحت CSS custom properties تلقائيًا:
.card {
/* بدلًا من Tailwind class يمكن استخدامها مباشرة */
border-radius: var(--radius-lg);
color: var(--color-gray-900);
background: var(--color-white);
}Variants الجديدة
<!-- v4: تستطيع استخدام arbitrary variants مباشرة -->
<div class="[&:nth-child(3)]:bg-blue-100">...</div>
<!-- نمط الـ group و peer لم يتغيّر -->
<div class="group hover:bg-gray-100">
<span class="group-hover:text-blue-600">نص</span>
</div>جدول التغييرات الرئيسية
| الميزة | v3 | v4 |
|---|---|---|
| ملف الإعداد | tailwind.config.js | CSS فقط |
| Dark mode | darkMode: 'class' في config | @variant dark في CSS |
| الـ theme | theme.extend.colors | @theme { --color-* } |
| CSS Variables | يدوي | تلقائي من الـ theme |
| سرعة البناء | سريع | سريع جدًا (Rust) |
@apply | مدعوم | مدعوم (لكن يُنصح بتقليله) |
| JIT | افتراضي | دائمًا |
دليل الهجرة السريع
١. تثبيت الإصدار الجديد
npm install tailwindcss@next @tailwindcss/vite
# أو مع Next.js
npm install tailwindcss@next @tailwindcss/postcss٢. تعديل postcss.config.js
// قبل
module.exports = { plugins: { tailwindcss: {}, autoprefixer: {} } };
// بعد
module.exports = { plugins: { "@tailwindcss/postcss": {} } };٣. تحديث الـ CSS الرئيسي
/* قبل */
@tailwind base;
@tailwind components;
@tailwind utilities;
/* بعد */
@import "tailwindcss";٤. نقل إعدادات الـ theme
/* انقل من tailwind.config.js إلى CSS */
@theme {
--font-sans: "Cairo", sans-serif;
--font-mono: "JetBrains Mono", monospace;
--color-primary: #6366f1;
--color-primary-hover: #4f46e5;
}بعض plugins القديمة مثل @tailwindcss/typography لها إصدار v4 منفصل. تأكد من تحديثها.
يوجد أداة هجرة رسمية: npx @tailwindcss/upgrade تحوّل معظم الإعدادات تلقائيًا.
الخلاصة
Tailwind v4 مُربك في البداية لمن اعتاد على ملف الإعداد، لكنه أسرع وأنظف على المدى البعيد. الـ CSS custom properties تجعل الـ theme متاحًا في كل مكان — في Tailwind classes، وفي CSS العادي، وحتى في JavaScript عبر getComputedStyle.