تاريخ النشر: 20 أبريل 2026
يخطّط Chrome لطرح واجهة برمجة التطبيقات Soft Navigations API التي كنّا نختبرها سابقًا في وقت لاحق من هذا العام. استعدادًا لذلك، سنقدّم مرحلة التجربة والتقييم أخرى تبدأ في الإصدار 147 من Chrome وتستمرّ حتى الإصدار 149. تتضمّن هذه التجربة ملاحظات من تجارب سابقة حول الشكل النهائي المتوقّع لواجهة برمجة التطبيقات. ننصح مالكي المواقع الإلكترونية المهتمين بهذه الميزة بإجراء اختبار نهائي للشكل النهائي المتوقّع لواجهة برمجة التطبيقات قبل إصدارها.
ما هي عمليات التنقّل السلس؟
تحدث "عملية التنقّل السلس" عندما يعترض JavaScript عملية تنقّل (مثل النقر على رابط) ويعدّل المحتوى على الصفحة الحالية بدلاً من تحميل صفحة جديدة، مع استمرار تعديل عنوان URL في شريط العناوين. بالنسبة إلى المستخدمين، تبدو عمليات التنقّل هذه مماثلة لعمليات التنقّل التقليدية، ولكن من منظور المتصفّح، تظل الصفحة هي الصفحة الأصلية.
الحاجة إلى Soft Navigation API
Soft Navigations API هي واجهة برمجة تطبيقات مقترَحة لرصد عمليات التنقّل السلس التي تستخدمها المواقع الإلكترونية التي تتضمّن تطبيقات من صفحة واحدة (SPA). بما أنّه لا يتم التنقّل الفعلي في الصفحة عند التنقّل السلس، يجب أن تدير JavaScript يدويًا بعض الإجراءات التي تحدث عادةً عند التنقّل. يمكن تنفيذ بعض الإجراءات، مثل إدارة سجلّ التنقّل، باستخدام واجهات برمجة التطبيقات الحالية. ومع ذلك، لا يمكن تنفيذ إجراءات أخرى، مثل قياس مؤشرات Core Web Vitals، في عمليات التنقّل هذه.
تتيح Soft Navigation API مراقبة عمليات التنقّل السلس. في حين أنّ رمز JavaScript الذي يبدأ عملية التنقّل السلس (عادةً ما يكون إطار عمل JavaScript) يكون على دراية بوقت حدوث عملية التنقّل، لن يكون رمز JavaScript الآخر الذي يستخدمه الموقع الإلكتروني (مثل النصوص البرمجية للإحصاءات) والمتصفّح نفسه على دراية بذلك.
مؤشرات Core Web Vitals وتطبيقات الصفحة الواحدة
أحد الأسباب الرئيسية لتوفير Soft Navigation API هو السماح بقياس مؤشرات Core Web Vitals لتطبيقات الصفحة الواحدة. يتم قياس مؤشرات Core Web Vitals من خلال المتصفّح (لتظهر في أدوات مثل تقرير تجربة المستخدم على Chrome)، ومن خلال مالكي المواقع الإلكترونية باستخدام حلول مراقبة المستخدمين الفعليين (RUM).
يمكن لأُطر عمل JavaScript قياس بعض جوانب Core Web Vitals لتطبيقات الصفحة الواحدة. على وجه الخصوص، يستند مقياسا مدى استجابة الصفحة لتفاعلات المستخدم (INP) ومتغيّرات التصميم التراكمية (CLS) إلى عناصر أساسية (واجهة برمجة التطبيقات Event Timing API وواجهة برمجة التطبيقات Layout Instability API على التوالي) يمكن قياسها على أي مدى زمني لاحتساب هذين المقياسين. ومع ذلك، لا يتم إرسال مقاييس أخرى، مثل سرعة عرض أكبر محتوى مرئي (LCP)، إلا من خلال المتصفّح استنادًا إلى عمليات التنقّل في الصفحة، ويتم تحديد قيمتها النهائية عند التفاعل.
الطريقة التي تتيح بها واجهة برمجة التطبيقات قياس "مؤشرات أداء الويب الأساسية" لتطبيقات الصفحة الواحدة
تقدّم واجهة برمجة التطبيقات Soft Navigation API إدخالَين جديدَين للأداء:
- إدخال
SoftNavigationEntryيتم إصداره عند استيفاء جميع متطلبات التنقّل السلس. يتضمّن ذلكinteractionIdللتفاعل الذي أدّى إلى التنقّل السلس، وnavigationIdفريدًا، وnameتم ضبطه على عنوان URL الجديد، بالإضافة إلى أوقات عرض مختلفة يمكن استخدامها لقياس وقت عرض أول محتوى في التنقّل السلس. - إدخال
InteractionContentfulPaintيتيح قياس عمليات عرض متعددة للمحتوى بأحجام متزايدة بعد التفاعلات من أجل قياس مقياس LCP لعمليات التنقّل السلس.
يمكن ملاحظة هذه الإدخالات الجديدة باستخدام PerformanceObserver باستخدام النوعَين soft-navigation وinteraction-contentful-paint على التوالي.
توسّع واجهة برمجة التطبيقات أيضًا كل إدخالات الأداء largest-contentful-paint وinteraction-contentful-paint وevent-timing وlayout-shift (وغيرها) لتضمين معرّف، navigationId، يمثّل عملية التنقّل التي يخصّها الإدخال. بما أنّ PerformanceObserver لا تراقب إدخالات الأداء إلا بعد أن تصبح الصفحة غير نشطة، قد يمر بعض الوقت بين الحدث الذي أنشأ إدخال الأداء ومراقبته. ويكون ذلك صحيحًا بشكل خاص عندما تكون الصفحة مشغولة جدًا، مثلاً أثناء عمليات التنقّل السلس. تساعد قيمة navigationId هذه في ربط الإدخالات بعملية التنقّل الصحيحة.
يمكن أن تظهر بعض إدخالات interaction-contentful-paint قبل التنقّل، وبعضها بعده. بدلاً من تتبُّع جميع عمليات الطلاء التي قد تؤدي إلى تنقّل سلس، يتضمّن إدخال soft-navigation إدخال largestInteractionContentfulPaint وهو أكبر عملية طلاء تم رصدها حتى هذا الوقت.
تتيح هذه المقاييس معًا إمكانية قياس "مؤشرات أداء الويب الأساسية" لما يلي:
- LCP: استخدام
largest-contentful-paintلتحميل الصفحة الأولي والإدخالات الجديدةinteraction-contentful-paintوsoft-navigationلعمليات التنقّل السلس - CLS: استخدام إدخالات
layout-shiftوتقسيمها استنادًا إلى إدخالاتsoft-navigationلعمليات التنقّل السلس - مؤشر INP: استخدام إدخالات
eventوتقسيمها استنادًا إلى إدخالاتsoft-navigationلعمليات التنقّل السلس - FCP: استخدام
first-contentful-paintلتحميل الصفحة الأولي وتفاصيل توقيت عرض المحتوى على الصفحة في إدخالاتsoft-navigationالجديدة لعمليات التنقّل السلس.
لمزيد من التفاصيل، يُرجى الاطّلاع على مستندات Soft Navigations.
كيف يتم تشغيل عمليات التنقّل السلس؟
تفعّل Soft Navigation API عملية تنقّل سلس عند حدوث ما يلي:
- يحدث تفاعل مستخدم،
- … ما يؤدي إلى عرض المحتوى للمستخدم،
- … ويتم تعديل عنوان URL.
تتّبع واجهة برمجة التطبيقات هذا الأسلوب بدلاً من السماح لإطار عمل JavaScript "بإصدار" عملية تنقّل سلس، أو البناء على Navigation API لسببَين:
- أولاً، يشمل ذلك جميع المواقع الإلكترونية الحالية ذات الصفحة الواحدة بدون الحاجة إلى إجراء أي تغييرات عليها.
- ثانيًا، تتيح فهمًا متسقًا لما يشكّل تنقلاً سلسًا بغض النظر عن الطريقة التي يتعامل بها إطار العمل أو المطوّر مع عمليات التنقّل.
يمكن للأُطر أو المطوّرين تعديل عنوان URL لعملية التنقّل السلس حتى بدون تفاعل المستخدم أو تعديل DOM الذي يعتبره المستخدمون عملية تنقّل. يمكنهم أيضًا تعديل عنوان URL في أوقات مختلفة: في بداية التفاعل أو في النهاية فقط عند اكتماله أو في أي مرحلة بينهما.
بدلاً من الاعتماد على خيارات إطار العمل والمطوّر، يتيح إنشاء ميزة رصد التنقّل السلس في المتصفّح تعريفًا أساسيًا يتيح قياس مقاييس Core Web Vitals للتنقّل السلس على نطاق واسع، كما يتيح مقارنة هذه القياسات على نطاق واسع.
يمكن للأُطر والمطوّرين أيضًا تجاهل Soft Navigations API واستخدام واجهات برمجة التطبيقات الأساسية Event Timing وLayout Instability، بالإضافة إلى إدخال الأداء الجديد InteractionContentfulPaint لقياس مقاييس أداء إضافية حسب اختيارهم. ومع ذلك، ننصح باستخدام واجهة برمجة التطبيقات لقياس Core Web Vitals من أجل إتاحة قياس الأداء بشكل متّسق على مستوى المواقع الإلكترونية والأدوات.
أحتاج إلى مساعدة لاختبار Soft Navigation API
نحتاج إلى مساعدتك لاختبار واجهة برمجة التطبيقات Soft Navigations وتحديد ما إذا كانت تتوافق بشكل صحيح مع توقعاتك بشأن وقت حدوث التنقّل السلس. هل لا تعرض واجهة برمجة التطبيقات عمليات التنقّل السلس عندما تعتبر أنّها حدثت؟ في المقابل، هل تسجّل واجهة برمجة التطبيقات عددًا كبيرًا من عمليات التنقّل التي لا تعتبرها عمليات تنقّل؟
ما الذي تغيّر منذ آخر مرحلة للتجربة والتقييم؟
التغيير الأساسي في هذه التكرار الأخير هو فصل InteractionContentfulPaint عن عمليات التنقّل السلس لتمكين حالات استخدام أخرى لإدخال الأداء هذا، وإضافة السمة largestInteractionContentfulPaint إلى SoftNavigationEntry.
من منظور الموقع الإلكتروني، تتضمّن واجهة برمجة التطبيقات الآن أيضًا replaceState كعمليات تنقّل سلسة لأنّنا تلقّينا ملاحظاتك التي تشير إلى أهمية اعتبار ذلك عملية تنقّل في العديد من الحالات. نحن نتطلّع إلى معرفة أي حالات أخرى لا تتعرّف فيها واجهة برمجة التطبيقات على التنقّل السلس.
أجرينا أيضًا تحسينات أخرى لا حصر لها على عملية التنفيذ. بالنسبة إلى المستخدمين الذين يبحثون عن التغييرات التي تم إجراؤها في الإصدار الأخير، يمكنهم الاطّلاع على سجلّ تفصيلي لجميع التغييرات في سجلّ التغييرات في التنقّل السلس.
نريد أن تكون واجهة برمجة التطبيقات مفيدة قدر الإمكان، ونحن مستعدون لإجراء المزيد من التغييرات لتحقيق ذلك. من الأسهل بكثير إجراء تغييرات على واجهة برمجة التطبيقات قبل إطلاقها وبدء المواقع الإلكترونية في الاعتماد على عملية التنفيذ. لذلك، نطلب من مطوّري تطبيقات الصفحة الواحدة والمهتمين بقياس أداء الويب لهذه المواقع الإلكترونية اختبار واجهة برمجة التطبيقات هذه وتقديم ملاحظات بشأنها.
كيفية إجراء الاختبار
يمكن اختبار واجهة برمجة التطبيقات محليًا باستخدام علامات Chrome أو خيارات سطر الأوامر. بالإضافة إلى ذلك، يمكنك اختبارها ميدانيًا من خلال مرحلة التجربة والتقييم (مزيد من المعلومات حول مراحل التجربة والتقييم).
يمكنك الاطّلاع على مستنداتنا أو مستودع GitHub للحصول على مزيد من التفاصيل الفنية حول واجهة برمجة التطبيقات، خاصةً كيفية قياس مؤشرات Core Web Vitals.
بالإضافة إلى ذلك، يتوفّر إصدار تجريبي من مكتبة web-vitals يتضمّن ميزة التنقّل السلس على GitHub وnpm.
لإجراء اختبار أبسط، تعرض لوحة الأداء في "أدوات مطوّري البرامج في Chrome" التنقّل السلس في عمليات تتبُّع الأداء بدءًا من الإصدار 145 من Chrome، حتى بدون تفعيل الميزة:

الملاحظات
يجب تقديم الملاحظات حول واجهة برمجة التطبيقات على شكل مشاكل على GitHub، والإبلاغ عن الأخطاء في تنفيذ Chromium على أداة تتبُّع المشاكل في Chrome. إذا لم تكن متأكدًا من الفئة التي يندرج ضمنها تعليقك، لا تقلق كثيرًا. نفضّل تلقّي الملاحظات في أيّ من المكانين، وسنفرز المشاكل في كليهما ونعيد توجيهها إلى المكان الصحيح.