إيقاف ميزة التعديل المباشر لمصادر JavaScript نهائيًا في "أدوات مطوّري البرامج في Chrome"

تاريخ النشر: 22 أكتوبر 2025

سيوقف Chrome نهائيًا ميزة التعديل المباشر لمصادر JavaScript. سيتم نقلها إلى ميزة تجريبية في الإصدار 142 من Chrome، ونخطّط لإزالتها نهائيًا في الإصدار 145 من Chrome (فبراير 2026). لن نزيل الميزات الأخرى الفعّالة المرتبطة بالملفات المصدر، مثل عمليات التعديل المحلية أو مساحات العمل أو المقتطفات، وستبقى هذه الميزات متاحة بالكامل.

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

ما هي ميزة "التعديل المباشر"؟

تتيح لك ميزة "التعديل المباشر" استبدال محتوى ملف نص برمجي أثناء وقت التشغيل، وبشكل فوري. وقد نجح ذلك حتى عندما تم إيقاف النص البرمجي مؤقتًا عند نقطة توقّف. يمكنك تعديل رمز JavaScript في لوحة "المصادر" وتطبيق التغيير من خلال حفظ الملف (Command+S أو Ctrl+S). سيعدّل مصحّح الأخطاء بعد ذلك الدوال التي تم تحديدها مسبقًا في وقت التشغيل. إذا كانت الدالة المعدَّلة ضمن حزمة الاستدعاء، ستتم إعادة تشغيلها أيضًا.

كان الهدف هو توفير طريقة لاختبار التغييرات الصغيرة بدون إعادة تحميل الصفحة بالكامل، ما يؤدي إلى محو حالة التطبيق. وبهذه الطريقة، كان هدفها مشابهًا لما تحقّقه ميزة Hot Module Replacement (HMR) في حِزم التطوير الحديثة.

لماذا سنزيلها؟

لطالما كانت تجربة المستخدم في التعديل المباشر صعبة. عادةً ما يكون اختصار لوحة المفاتيح ذو الصلة (Command+S / Ctrl+S) مرتبطًا بحفظ ملف، ولكن ليس بآثار جانبية أخرى، وهو ما قد يكون مفاجئًا. وعندما يتعذّر ذلك، قد تكون الملاحظات غير واضحة: قد تعرض "أدوات مطوّري Chrome" رسالة تحذير مثل "تعذّر استخدام LiveEdit: لا يمكن تعديل الدوال التي يتم تنفيذها حاليًا"، وهو ما قد يغفل عنه المطوّر، ما يجعله غير متأكّد مما إذا تم تطبيق التغيير.

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

إنّ المشكلة الأصلية التي كانت ميزة "التعديل المباشر" تحاول حلّها، أي إجراء تغييرات بدون فقدان حالة التطبيق، يتم حلّها الآن بشكل أكثر فعالية من خلال ميزة "استبدال الوحدات النمطية السريع" (HMR). تُعدّ ميزة HMR ميزة عادية في أُطر عمل تطوير الويب الحديثة، مثل React أو Angular أو Vue. ويحقّق التأثير نفسه في مساحة المستخدم وبمستوى تجريد أعلى. قد يتداخل التعديل المباشر في "أدوات مطوّري البرامج" مع هذه العملية، ما يؤدي إلى حدوث سلوك غير متوقّع وخاطئ.

تساهم هذه المشاكل في تقديم تجربة مستخدم صعبة. وتؤكّد إحصاءات الاستخدام أيضًا أنّ هذه الميزة لم تصبح جزءًا أساسيًا من سير عمل معظم المطوّرين. عدد المستخدمين الذين يتفاعلون مع هذه الميزة منخفض جدًا، مع تسجيل انخفاض في معدّل استخدامها.

ارتفاع تكلفة الصيانة والتعقيد الفني

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

يؤدي عبء الصيانة هذا إلى إبطاء عملية تنفيذ ميزات JavaScript الجديدة، كما يستنزف الموارد التي كان من المفترض أن تُستخدم في تحسين ميزات "أدوات مطوّري البرامج" الأكثر استخدامًا.

أدّى هذا التعقيد أيضًا إلى العديد من السيناريوهات غير المتوافقة، بما في ذلك:

  • تعديل دالة مضمّنة في حزمة استدعاء الدوال ولكنها ليست الإطار الأعلى
  • تعديل الدوال غير المتزامنة أو المولدات
  • تعديل الرمز البرمجي ذي المستوى الأعلى لوحدة ES

الحلول البديلة

كما ذكرنا سابقًا، يُعدّ استبدال الوحدات النمطية النشطة (HMR) بديلاً أكثر شيوعًا وأفضل من التعديل المباشر في بعض الجوانب الرئيسية:

  • يستبدل التعديل المباشر أجزاءً من الإصدار الأقدم للصفحة المعروضة على مستوى رمز المصدر. من ناحية أخرى، تستبدل ميزة HMR الإصدار القديم على مستوى التجريد الذي يهدف إليه إطار عمل الويب، ما يزيد من فرصة نقل حالة المكوّن والتطبيق بشكل صحيح أثناء التحديث المباشر.
  • تعمل ميزة "الاستبدال السريع للوحدات" على رمز المصدر الذي كتبته. يمكنك تعديل ملفاتك الأصلية (مثل TypeScript وJSX) في المحرّر، وستتولّى أداة الإنشاء عملية التعديل في المتصفّح، بينما يؤثّر التعديل المباشر فقط في ملفات المصدر التي تم نشرها، والتي تكون في كثير من الحالات هي ناتج الإنشاء الذي تم إنشاؤه بواسطة سلسلة الأدوات.
  • وهي قوية ومتكاملة بشكل جيد. تُعدّ عملية الاستبدال السريع للوحدات النمطية جزءًا أساسيًا من سلسلة أدوات التطوير الحديثة، وهي توفّر تجربة موثوقة مع تقديم ملاحظات واضحة عند نجاح التحديثات أو تعذّرها.

لن تؤثر إزالة ميزة التعديل المباشر في ميزتَين فعّالتَين أخريَين في Chrome DevTools، وهما:

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

الخاتمة

سنزيل ميزة "التعديل المباشر" لأنّ تكلفة صيانتها العالية ومعدّل استخدامها المنخفض يجعلانها غير مستدامة. قدّمت المنظومة المتكاملة الحديثة لتطوير الويب حلاً أفضل بكثير، وهو استبدال الوحدات النمطية النشطة.

من خلال إيقاف هذه الميزة نهائيًا، يمكننا تركيز جهودنا الهندسية على أجزاء أكثر تأثيرًا من "أدوات مطوّري البرامج في Chrome". في ما يلي المخطط الزمني لعملية الإزالة:

  • في المستقبل القريب: سيتم نقل الميزة إلى تجربة في الإصدار 142 من Chrome، وستتوفّر كميزة تجريبية في Chrome (chrome://flags/#devtools-live-edit).
  • الإصدار 145 من Chrome (فبراير 2026): ستتم إزالة الميزة وعلامة Chrome المقابلة بالكامل.

يسرّنا تلقّي ملاحظاتك حول هذا التغيير. أضِف تعليقاتك حول مشكلة الملاحظات.