- بواسطة x32x01 ||
الغلطة اللي بيقع فيها 90٪ من مبرمجين Next.js 
لو بتبدأ مشروع Next.js وبتحط جملة "use client" في أول كل ملف React عندك…
فاسمحلي أقولك إنك كده بتقتل أهم ميزة في نيكست بإيدك
بس قبل ما نزعل
خلينا نفهم ليه ده خطر وإزاي تصلحه بأسهل طريقة ممكنة.
يعني إيه "use client" أصلاً؟
ببساطة، لما تكتب "use client" فوق كودك، إنت كده بتقول لـ Next.js:
"سيب السيرفر يا عم، وشغل الكود ده في المتصفح بدل كده"
ودي مشكلة كبيرة
لأن كده الصفحة بتتحول بالكامل إلى Client-Side Rendering (CSR) بدل Server-Side Rendering (SSR)، وده بيأثر على ٣ حاجات مهمة جدًا:
الأداء بيقل - لأن المتصفح بيعمل كل الشغل بنفسه.
التحميل بيطول - خصوصًا في الصفحات اللي فيها بيانات كتير.
الـ SEO بينهار - لأن جوجل مش هيشوف المحتوى بسهولة.
وبكده… مشروعك في Next.js بيبقى شبه React عادي
بدون أي ميزة حقيقية.
طب إمتى أستخدم "use client" صح؟
مش كل الكومبوننت محتاجة "use client"، استخدمها بس لما تكون فيه تفاعلات مباشرة مع المستخدم.
يعني الكود بيتعامل مع:
زرار أو فورم أو input
Hooks زي useState أو useEffect
DOM بشكل مباشر (زي تعديل عناصر أو مراقبة أحداث)
ببساطة، أي حاجة فيها Interactivity يبقى تستحق "use client"
لكن لو الكومبوننت بتعرض بيانات بس (Static أو Server Data)، يبقى خليه Server Component علشان الأداء يفضل سريع والسيو ممتاز
مثال عملي يوضح الفرق
المشكلة هنا إن الكود بيعمل fetch من المتصفح نفسه،
وده بيخلي وقت التحميل أطول والـ SEO ضعيف جدًا
هنا الصفحة الأساسية عبارة عن Server Component
لكن الجزء التفاعلي (زرار القلب
) هو اللي Client Component،
وده الصح
خلاصة الكلام
كل ما تقلل استخدام "use client"
هتلاحظ إن:
الأداء بيزيد
التحميل أسرع
السيو أقوى
خليك دايمًا ذكي في استخدام "use client" - خليه Selective مش Default
نقطة أخيرة مهمة
لو المشروع كله بقى Client Components،
يبقى كده إنت فعليًا مش بتستخدم مميزات Next.js 14 ولا React Server Components.
استغل السيرفر في عرض البيانات، وسيب المتصفح للحاجات التفاعلية بس
كود إضافي لاختبار الفرق
جرب بنفسك الفرق بين Server وClient Components:
الفرق واضح جدًا لما تفتح DevTools وتشوف السرعة 
الخلاصة

لو بتبدأ مشروع Next.js وبتحط جملة "use client" في أول كل ملف React عندك…
فاسمحلي أقولك إنك كده بتقتل أهم ميزة في نيكست بإيدك
بس قبل ما نزعل
يعني إيه "use client" أصلاً؟
ببساطة، لما تكتب "use client" فوق كودك، إنت كده بتقول لـ Next.js:"سيب السيرفر يا عم، وشغل الكود ده في المتصفح بدل كده"
ودي مشكلة كبيرة
لأن كده الصفحة بتتحول بالكامل إلى Client-Side Rendering (CSR) بدل Server-Side Rendering (SSR)، وده بيأثر على ٣ حاجات مهمة جدًا:
وبكده… مشروعك في Next.js بيبقى شبه React عادي
طب إمتى أستخدم "use client" صح؟
مش كل الكومبوننت محتاجة "use client"، استخدمها بس لما تكون فيه تفاعلات مباشرة مع المستخدم.يعني الكود بيتعامل مع:
ببساطة، أي حاجة فيها Interactivity يبقى تستحق "use client"
لكن لو الكومبوننت بتعرض بيانات بس (Static أو Server Data)، يبقى خليه Server Component علشان الأداء يفضل سريع والسيو ممتاز
مثال عملي يوضح الفرق
كود غلط:
JavaScript:
"use client";
export default function ProductsPage() {
const products = await fetch("https://api.example.com/products").then(res => res.json());
return (
<div>
{products.map(p => (
<p key={p.id}>{p.name}</p>
))}
</div>
);
} وده بيخلي وقت التحميل أطول والـ SEO ضعيف جدًا
الكود الصح:
JavaScript:
export default async function ProductsPage() {
const products = await fetch("https://api.example.com/products", { cache: "no-store" }).then(res => res.json());
return (
<div>
{products.map(p => (
<ProductCard key={p.id} product={p} />
))}
</div>
);
}
// Client Component للجزء التفاعلي فقط
"use client";
import { useState } from "react";
function ProductCard({ product }) {
const [liked, setLiked] = useState(false);
return (
<div onClick={() => setLiked(!liked)}>
{product.name} {liked ? "❤️" : "♡"}
</div>
);
} لكن الجزء التفاعلي (زرار القلب
وده الصح
خلاصة الكلام
كل ما تقلل استخدام "use client"هتلاحظ إن:
خليك دايمًا ذكي في استخدام "use client" - خليه Selective مش Default
نقطة أخيرة مهمة
لو المشروع كله بقى Client Components،يبقى كده إنت فعليًا مش بتستخدم مميزات Next.js 14 ولا React Server Components.
استغل السيرفر في عرض البيانات، وسيب المتصفح للحاجات التفاعلية بس
كود إضافي لاختبار الفرق
جرب بنفسك الفرق بين Server وClient Components: JavaScript:
// Server Component
export default async function Users() {
const users = await fetch("https://jsonplaceholder.typicode.com/users").then(r => r.json());
return (
<ul>
{users.map(u => <li key={u.id}>{u.name}</li>)}
</ul>
);
}
// Client Component
"use client";
import { useState } from "react";
export default function Counter() {
const [count, setCount] = useState(0);
return (
<button onClick={() => setCount(count + 1)}>
Clicked {count} times 👆
</button>
);
} الخلاصة
- "use client" مش عدوك، بس استخدمها في مكانها الصح.
- كل ما تخلي الصفحة Server Component أكتر → أداء وسيو أعلى.
- خلي Client Components بس للأجزاء اللي فيها تفاعل مباشر.