ست بطاقات على لوحة التحكم، ست مؤشرات تحميل، ولا تظهر معاً — تظهر واحدة تلو الأخرى كالدومينو، لأن كل بطاقة بدأت التحميل فقط بعد انتهاء التي فوقها. هذا هو الشلال، والوقت الإجمالي للانتظار ليس أبطأ طلب بل مجموع الكل. use() وSuspense يقطعان هذه السلسلة — لكن المثير للاهتمام هو الآلية الداخلية: ماذا يرمي المكوّن المُعلَّق فعلاً، وكيف يصل HTML الذي يصل بترتيب خاطئ إلى مكانه الصحيح.
لعشر سنوات، كان تحريك الصور المصغّرة إلى صور البطل يعني تقنية واحدة: قِس العنصر قبل وبعد، وزيّف الفرق بـtransform، ثم اعرضه. FLIP. كل مكتبة حركات تفعل ذلك، وكل منها تدفع ثمنه بـJavaScript على الخيط الرئيسي في أسوأ لحظة ممكنة. View Transitions API ينقل الحيلة بأكملها إلى المتصفح — ومنذ React 19.2 وNext.js 16، يتكون العقد بأكمله من خاصية واحدة اسمها name.
يبدو التوجيه "use server" وكأنه مجرد اختصار نحوي لاستدعاء fetch إلى مسار API – ولهذا بالتحديد تتعامل معظم التطبيقات معه وكأنه استدعاء دالة عادية. هذا خطأ له عواقب محددة: كل دالة تحمل علامة "use server" تتحول إلى نقطة نهاية عامة (endpoint) مكشوفة على الشبكة، والنموذج المبني على هذه الآلية يعمل حتى قبل أن يتمكن جافاسكريبت من التحميل أصلًا. أستعرض ما يحدث فعليًا خلف هذا التوجيه، وأين تكمن المزالق التي لا تظهر للوهلة الأولى في التوثيق.
HTML الصحيح ليس سوى نقطة البداية. اكتشف كيف تعمل شجرة إتاحة الوصول فعليًا، ولماذا تضر ARIA أكثر مما تنفع في أحيان كثيرة، وابنِ معي أكورديون حقيقيًا، ومنطقة حية (live region)، وإدارة تركيز في Next.js.