دليل سيو React: لماذا يبطئ العرض من جهة العميل الفهرسة، ومتى تختار SSR أو العرض المسبق، وكيف تضبط الوسوم الوصفية في React 19 وتبقى مقروءًا للذكاء الاصطناعي.

في هذه الصفحة
باختصار
يمكن لتطبيقات React أن تتصدر نتائج Google، لكن تطبيق الصفحة الواحدة الافتراضي يرسل ملف HTML شبه فارغ ويعتمد على JavaScript لعرض المحتوى، ما يؤخر الفهرسة ويخفي الصفحة عن معظم زواحف الذكاء الاصطناعي. الحل الموثوق هو تقديم HTML من الخادم: عرض الصفحات الثابتة مسبقًا وقت البناء أو استخدام إطار عمل يدعم العرض على الخادم (Next.js وReact Router). بعد ذلك امنح كل رابط عنوانًا ووصفًا ورابطًا أساسيًا فريدًا، واستخدم روابط حقيقية ورموز حالة صحيحة، وتحقّق مما تتلقاه الروبوتات.
هل تريد التعمق أكثر؟ اسأل
اختبار سريع
هل السيو مناسب لك، وكيف تبدأ؟
Sorank يناسب إجاباتك
جرّبه 3 أيام على موقعك واعرف أين تقف في Google وChatGPT وأدوات الذكاء الاصطناعي الأخرى.
ابدأ تجربة مجانية لمدة 3 أيام3 أيام مجانًا، ثم توقف متى شئت. ضمان النتائج أو استرداد الأموال لمدة 90 يومًا.
يقصد بـ سيو React جعل تطبيق React قابلًا للزحف والفهرسة والفهم من قبل محركات البحث ومساعدات الذكاء الاصطناعي. React في حد ذاته محايد: المشكلات تأتي من عرض كل شيء في المتصفح. تؤكد Google في أساسيات تحسين محركات البحث لـ JavaScript أنها تعالج تطبيقات JavaScript على ثلاث مراحل (الزحف والعرض والفهرسة)، وأن العرض من جهة الخادم أو العرض المسبق "لا يزال فكرة ممتازة لأنه يجعل موقعك أسرع للمستخدمين والزواحف، وليست كل الروبوتات قادرة على تشغيل JavaScript".
يقدّم تطبيق React المبني كتطبيق صفحة واحدة ملف HTML لا يحتوي إلا على عنصر div جذري فارغ ووسم script تقريبًا. يحمّل المتصفح JavaScript وينفّذه ويبني الصفحة. أما الزاحف الذي يقرأ HTML فقط فلا يرى شيئًا يفهرسه: لا عناوين ولا نص ولا روابط.
ينفّذ Googlebot شيفرة JavaScript فعلًا، لكن في خطوة منفصلة: تُزحف الصفحة، ثم توضع في طابور العرض، ثم تُعرض في Chromium بلا واجهة، وبعدها فقط تُستخدم الروابط والمحتوى المعروض. كل خطوة إضافية فرصة للفشل (خطأ في سكربت، أو واجهة برمجية محجوبة، أو انتهاء المهلة) وتأخير إضافي قبل ظهور الصفحات الجديدة في البحث. يشرح دليلنا حول سيو JavaScript هذه العملية، ويوضح مقالنا عن الفهرسة في Google كيفية تسريعها.
الروبوتات الأخرى أقل صبرًا. وجد تحليل Vercel الصادر في ديسمبر 2024، The rise of the AI crawler، أن "أيًّا من زواحف الذكاء الاصطناعي الكبرى لا يعرض JavaScript حاليًا"، وذكر GPTBot وChatGPT-User وOAI-SearchBot وClaudeBot وPerplexityBot. صفحة React المعروضة من جهة العميل غير مرئية لـ ChatGPT وClaude وPerplexity، حتى عندما تفهرسها Google.
يوصي فريق React الآن ببدء التطبيقات الجديدة بإطار عمل. وعندما أوقف Create React App في 14 فبراير 2025، كتب في إعلانه أن "العرض على الخادم يمكن أن يحسّن السيو"، وأنه يحسّن الأداء أيضًا بتقليل JavaScript الذي يجب تنزيله قبل رؤية المحتوى. الخيارات من الأضعف إلى الأقوى للبحث:
| الأسلوب | ما تتلقاه الروبوتات | الحكم من ناحية السيو | الأدوات الشائعة |
|---|---|---|---|
| العرض من جهة العميل (SPA) | HTML فارغ، والمحتوى بعد JavaScript | ضعيف: فهرسة متأخرة، وغير مرئي لزواحف الذكاء الاصطناعي | Vite + React، ومشاريع Create React App القديمة |
| العرض الديناميكي | HTML معروض مسبقًا للروبوتات فقط | حل مؤقت لا توصي به Google | خدمات العرض المسبق، ووكلاء بمتصفح بلا واجهة |
| العرض الثابت المسبق وقت البناء | HTML كامل لكل رابط معروف | جيد جدًا للمحتوى قليل التغيّر | العرض المسبق في React Router، ومولدات المواقع الثابتة، والتصدير الثابت في Next.js |
| العرض على الخادم | HTML كامل عند كل طلب، ثم الترطيب | الأفضل للمواقع الكبيرة أو كثيرة التحديث | Next.js وReact Router (وضع الإطار، Remix سابقًا) |
بشأن العرض الديناميكي، وثائق Google صريحة: "كان حلًا مؤقتًا وليس حلًا طويل الأمد"، وتوصي Google بدلًا منه بالعرض على الخادم أو العرض الثابت أو الترطيب. وإن كنت تختار إطار عمل، فإن دليلنا حول سيو Next.js يشرح أوضاع العرض وMetadata API وخرائط الموقع بالتفصيل.
إن تعذّر الانتقال، يمكن لـ Google مع ذلك فهرسة تطبيق صفحة واحدة ببعض العناية. يسرد دليلنا حول سيو تطبيقات الصفحة الواحدة الشروط اللازمة، وبقية هذا المقال تنطبق على الحالتين.
منذ React 19 (المستقر منذ 5 ديسمبر 2024)، يمكن للمكوّنات عرض وسوم title وmeta وlink مباشرة، ويرفعها React إلى head المستند. وتذكر ملاحظات إصدار React 19 أن هذا الدعم المدمج يعمل "مع تطبيقات العميل فقط، وSSR المتدفق، وServer Components". قبل React 19 كانت مكتبات مثل react-helmet أو react-helmet-async تؤدي هذه المهمة، ولا تزال مفيدة لتجاوز القيم الافتراضية في كل مسار.
function ProductPage({ product }) {
return (
<>
<title>{`${product.name} | Shop`}</title>
<meta name="description" content={product.summary} />
<link rel="canonical" href={`https://example.com/p/${product.slug}`} />
<h1>{product.name}</h1>
</>
)
}ثلاث قواعد تنطبق أيًّا كانت الطريقة:
تنبيه
في تطبيق يعمل من جهة العميل فقط، لا توجد الوسوم التي يعرضها React إلا بعد تشغيل JavaScript. يمكن لـ Google قراءتها بعد العرض، أما زواحف الذكاء الاصطناعي ومعظم روبوتات معاينة الشبكات الاجتماعية فلا. العرض على الخادم أو العرض المسبق يضعها في استجابة HTML للجميع.
تقول Google إنها "لا تستطيع اكتشاف روابطك إلا إذا كانت عناصر HTML من نوع a تحمل الخاصية href"، وتنصح بعدم استخدام أجزاء الرابط (fragments) لتحميل محتوى مختلف. تأتي معظم إخفاقات سيو React من تفاصيل التوجيه:
| الخطأ | الأثر | الحل |
|---|---|---|
| التنقل عبر onClick على div أو زر | لا تجد Google رابطًا تتبعه | استخدام مكوّن Link في الموجّه، الذي يعرض a مع href |
| مسارات بعلامة # (/#/products) | تتشارك كل الصفحات رابطًا واحدًا في نظر Google | استخدام مسارات قائمة على السجل (/products) مع BrowserRouter أو إطار عمل |
| صفحة "غير موجود" تُقدَّم برمز 200 | "Soft 404" في Search Console | إعادة 404 حقيقي من الخادم، أو إضافة noindex عبر JavaScript في تطبيق صفحة واحدة خالص |
| إعادة توجيه من جهة العميل فقط | إعادة توجيه بطيئة أو مُتجاهلة | استخدام إعادة توجيه من الخادم 301 أو 308 للصفحات المنقولة |
| محتوى يُحمَّل عند النقر أو التمرير | لا يُعرض النص للزاحف أبدًا | عرض المحتوى الرئيسي عند التحميل، وتقسيم القوائم إلى صفحات بروابط حقيقية |
| JavaScript أو واجهات برمجية محجوبة في robots.txt | تعرض Google صفحة فارغة | السماح بالسكربتات ونقاط الواجهة البرمجية التي تحتاجها الصفحة |
لرؤية ما تعرضه Google، استخدم أداة فحص عنوان URL في Search Console واطّلع على HTML الصفحة المختبرة، أو مرّر قوالب الصفحات الأساسية على مدقق قابلية الفهرسة.
لا يتضمن React خريطة موقع مدمجة. أنشئ sitemap.xml وقت البناء من مساراتك وبياناتك (أو بميزة خريطة الموقع في إطار العمل)، ولا تُدرج إلا الروابط الأساسية التي تعيد 200، وأشر إليها في robots.txt. ويكفي مولّد خريطة موقع XML لموقع ثابت صغير.
تتبع البيانات المنظمة القاعدة نفسها التي تتبعها البيانات الوصفية: اعرض سكربت JSON-LD مع الصفحة، ومن البيانات نفسها، ويُفضَّل على الخادم. يمكن لـ Google قراءة JSON-LD المحقون عبر JavaScript بعد العرض، لكن الترميز الغائب عن HTML الأولي يغيب أيضًا عن الزواحف التي لا تعرض. استخدم Article للمقالات، وProduct للتجارة الإلكترونية، وOrganization على مستوى الموقع، وBreadcrumbList للصفحات العميقة.
نصيحة
شغّل curl على رابط صفحة وابحث في الناتج عن عنوان H1 وجملة من النص. إن لم تجدهما، فقد تفهرس Google الصفحة بعد العرض، لكن زواحف الذكاء الاصطناعي لن ترى شيئًا.
تضر حزم JavaScript الكبيرة بمؤشرات Core Web Vitals: على المتصفح تنزيل الشيفرة وتحليلها وترطيبها قبل أن تستجيب الصفحة، ما يثقل Largest Contentful Paint وInteraction to Next Paint، خاصة على الجوال. ويذكر إعلان فريق React عن Create React App أن العرض على الخادم يرسل JavaScript أقل ومستند HTML كاملًا، ما يسرّع First Contentful Paint وقد يخفض INP. أدوات عملية: تقسيم الشيفرة حسب المسار بـ React.lazy، وتقديم الصور بأبعاد صريحة، وتأجيل تحميل المكوّنات أسفل الجزء الظاهر، ومراجعة سكربتات الأطراف الخارجية.
يبدأ GEO (التحسين للمحركات التوليدية) بالوصول. فبما أن زواحف الذكاء الاصطناعي تجلب HTML الخام، يجب أن تقدّم صفحة React نصها وعناوينها وJSON-LD دون JavaScript كي تُقرأ وتُلخَّص ويُستشهد بها. ويُظهر تدقيق قابلية الزحف للذكاء الاصطناعي ما تتلقاه هذه الروبوتات من صفحاتك. والشرط الثاني محتوى يستحق الاستشهاد: صفحات تجيب عن سؤال واحد في كل قسم، مع مصادر وأرقام وتعريفات واضحة.
جانب المحتوى هذا هو ما تؤتمته Sorank، منتجنا. Sorank برنامج سيو وGEO يعمل بنظام autopilot: يكتب مولّد مقالات المدونة فيه 20 أو 60 أو 120 مقالًا شهريًا وينشرها مع مصادر وروابط داخلية وصور، ويتصل عبر webhook بالمواقع المبنية خصيصًا مثل مواقع React أو Next.js. ويجيب SEO Chat في محادثة عن أسئلتك حول أداء موقعك في البحث.

الخلاصة: قدّم HTML من الخادم، وامنح كل رابط عنوانه ووصفه ورابطه الأساسي الخاص، واستخدم روابط حقيقية. عندها يتصدر React النتائج مثل أي موقع آخر، وتستطيع مساعدات الذكاء الاصطناعي قراءته. لتغذية هذا الموقع بمقالات مصممة لـ Google والذكاء الاصطناعي، اطّلع على خطط Sorank، بدءًا من 49$ شهريًا مع تجربة مجانية لمدة 3 أيام.
لا. React مكتبة لواجهات المستخدم، ويتوقف السيو فيها على طريقة عرض الصفحات. تطبيق الصفحة الواحدة المعروض من جهة العميل يرسل HTML فارغًا ويعتمد على خطوة العرض لدى Google، ما يؤخر الفهرسة ويخفي المحتوى عن زواحف الذكاء الاصطناعي. أما شيفرة React نفسها المقدّمة بالعرض على الخادم أو العرض الثابت المسبق فتتصدر النتائج مثل أي موقع تقليدي.
نعم. ينفّذ Googlebot شيفرة JavaScript بإصدار حديث من Chromium، فيستطيع فهرسة المحتوى الذي يبنيه تطبيق React في المتصفح. يحدث العرض بعد الزحف، وقد يتأخر أو يفشل إذا وقعت أخطاء في السكربتات أو كانت الواجهات البرمجية محجوبة. وتعرض أداة فحص عنوان URL في Search Console HTML المعروض كما تراه Google.
ليس في الحالات البسيطة. يعرض React 19 وسوم title وmeta وlink من أي مكوّن ويرفعها إلى head المستند. وتبقى مكتبات مثل react-helmet-async مفيدة عندما تحتاج إلى تجاوز القيم الافتراضية للموقع في كل مسار أو دعم إصدارات React الأقدم.
لقد جربوا SORANK قبلك
