ما المقصود بكل منهما
يأتي React Native من Meta، وهو إطار عمل مفتوح المصدر. يكتب المطورون فيه بلغة JavaScript أو TypeScript باستخدام React، ويحوّل الإطار مكوّناتهم إلى أزرار المنصة وقوائمها وحقول النص الخاصة بها. وتعتمد معظم الفرق على Expo، وهي مجموعة أدوات وخدمات تتولى بناء النسخ والتحديثات، وتتيح الوصول إلى ميزات الجهاز الشائعة.
أما Flutter فإطار عمل مفتوح المصدر من Google. يكتب المطورون فيه بلغة Dart، ويرسم Flutter كل بكسل في الواجهة بنفسه عبر محرك العرض الخاص به، بدلاً من استخدام عناصر التحكم في المنصة. ويمكن للشيفرة نفسها أن تستهدف الويب وأجهزة الكمبيوتر المكتبية أيضاً.
يصدر كلا المشروعين تحديثات عدة مرات في السنة. وقد طابقنا تفاصيل هذه المقارنة مع وثائق React Native وFlutter عند مراجعتها، والنقاط المرتبطة بإصدارات بعينها ستتقادم مع الوقت.
مقارنة سريعة بين الإطارين
| إطار React Native | إطار Flutter | |
|---|---|---|
| اللغة | JavaScript أو TypeScript، مع React | لغة Dart |
| طريقة رسم الواجهة | بعناصر التحكم الأصلية في كل منصة | بمحرك Flutter الخاص، بكسلاً بكسلاً |
| المظهر وتجربة الاستخدام | يتبع الأنماط المعتادة في iPhone وAndroid تلقائياً | متطابق على المنصتين، ما لم تصمم الفروق بنفسك |
| المشاركة مع منتج على الويب | المنطق وتعريفات الأنواع والفريق مشتركة مع موقع مبني بـ React | له نسخة ويب خاصة به، ولا يتشارك إلا القليل مع موقع React قائم |
| التوظيف | يستفيد من العدد الكبير من مطوري JavaScript وReact | عدد أقل من مطوري Dart، لكنه في ازدياد |
| ميزات الجهاز | عبر منظومة كبيرة من المكتبات، ووحدات أصلية عند الحاجة | عبر الإضافات، وقنوات المنصة عند الحاجة |
| التحديث دون مراجعة المتجر | مدعوم لجزء JavaScript عبر خدمات التحديث | ممكن عبر خدمات من أطراف خارجية |
| الجهة الداعمة | Meta، ومعها Expo ومجتمع واسع | Google، ومعها مجتمع واسع |
متى يناسب كل إطار
اختر React Native حين
- موقعك أو تطبيق الويب لديك مبني بـ React
- مطوروك يعرفون JavaScript أو TypeScript
- يجب أن يستخدم التطبيق عناصر التحكم المألوفة في كل منصة
- تتوقع أن توظّف، وتريد أوسع قاعدة من المرشحين
- تريد إرسال إصلاحات صغيرة بين إصدارات المتجر
اختر Flutter حين
- التصميم خاص، ويجب أن يتطابق تماماً على كل جهاز
- الفريق يعمل بلغة Dart أصلاً، أو يبدأ دون شيفرة ويب يمكن مشاركتها
- الواجهة تعتمد كثيراً على الحركة أو الرسم
- يجب أن تصل قاعدة الشيفرة نفسها إلى شاشات الكمبيوتر المكتبي أيضاً
- شريك تثق به يعمل بهذا الإطار، وسيتولى صيانة التطبيق
ما لم يعد مهماً كما كان
تنفق المقارنات القديمة معظم مساحتها على الأداء. لكن في تطبيقات الأعمال، ومعظمها قوائم ونماذج وخرائط ووسائط، حُسم هذا الجدل إلى حد بعيد. فالبنية الحالية لـ React Native أزالت عنق الزجاجة الذي أشار إليه منتقدوه، ومحرك العرض الحالي في Flutter أنهى التقطّع الذي كان منتقدوه يشيرون إليه. وكلاهما يعمل بسلاسة حين يُبنى بعناية، ويبطئ حين يُبنى بدونها.
كما قلّ السؤال عن احتمال التخلي عن أي منهما. فكلاهما يعمل في بيئات الإنتاج لدى شركات كبيرة منذ سنوات، وكلاهما مفتوح المصدر، ولكل منهما خارطة طريق منشورة. والخطر الواقعي ليس أن يختفي الإطار، بل أن يتخلف تطبيقك عن التحديثات لأن أحداً لم يُكلَّف بإبقائه محدّثاً.
ما يكلفه الاختيار على المدى الطويل
يكلف البناء الأول المبلغ نفسه تقريباً في الحالتين. أما الفرق فيظهر لاحقاً، في ثلاثة مواضع.
- الفريق. إذا كان فريق الويب لديك قادراً على العمل في التطبيق أيضاً، فإن فريقاً واحداً يغطي الاثنين. أما إذا احتاج التطبيق إلى متخصصين لا يعملون في أي جزء آخر من شركتك، فكل تغيير سينتظرهم.
- الترقيات. تصدر Apple وGoogle إصدارات جديدة من أنظمتهما كل عام، ويتبعها الإطاران. لذلك خصّص ميزانية لترقية سنوية أياً كان اختيارك.
- العمل الأصلي. الميزة التي لا يغطيها أي من الإطارين تحتاج إلى شيفرة خاصة بالمنصة بلغة Swift أو Kotlin. ويحدث هذا في الحالتين، فاسأل أي شريك إن كان يستطيع كتابتها.
وإذا كان التطبيق يعتمد في كل أجزائه على عمل مكثف على مستوى الجهاز، كالمعالجة المستمرة في الخلفية أو مسارات الكاميرا المتقدمة، فادرس أيضاً خيار التطوير الأصلي بالكامل. وتتناول مقارنتنا بين التطوير الأصلي والتطوير متعدد المنصات هذا الخيار.
مثال تطبيقي
مجموعة عيادات وعلامة تجارية للياقة البدنية
الشركتان افتراضيتان، وكل منهما تريد تطبيقاً واحداً لأجهزة iPhone وAndroid.
- مجموعة العياداتلديها موقع للمرضى مبني بـ React، وثلاثة مطوري ويب. والتطبيق يحجز المواعيد، ويعرض النتائج، ويرسل التذكيرات.
- قرارهاReact Native. يمتد عمل فريق الويب إلى الجوال، ويُشارَك منطق الحجز مع الموقع، وتناسب عناصر التحكم المعتادة في المنصة جمهور الرعاية الصحية.
- علامة اللياقة البدنيةليس لديها منتج على الويب. وقد رسم مصمموها واجهة مميزة فيها شاشات تمارين متحركة، يجب أن تظهر بالشكل نفسه على كل هاتف.
- قرارهاFlutter، يبنيه شريك لديه فريق يعمل بلغة Dart. فلم يكن هناك ما يمكن مشاركته، وكانت الأولوية للتحكم الدقيق في الشكل.
اختارت مجموعة العيادات بناءً على فريقها، واختارت العلامة بناءً على تصميمها. ولم تختر أي منهما بناءً على اختبارات الأداء.
قائمة تحقق تساعدك على القرار
ضع علامة على ما ينطبق عليك. البنود الأربعة الأولى ترجّح React Native، والأربعة الأخيرة ترجّح Flutter. وإذا تساوت العلامات، فاختر الإطار الذي يعرفه فريقك أو شريكك أكثر.
React Native أم Flutter
0 من 8 منجزةماذا تفعل الآن
اكتب من سيتولى صيانة التطبيق في عامه الثالث، وما الذي يعرفه اليوم. هذه الإجابة تحسم معظم الحالات. نحن نبني التطبيقات متعددة المنصات باستخدام React Native، ونقولها بوضوح حين يكون مشروع ما أنسب لتقنية أخرى.
وإن كنت ما زلت تشكّل ملامح المنتج، فدليل التخطيط للنسخة الأولى من تطبيق الجوال (MVP) يساعدك على تحديد النطاق قبل اختيار الإطار.
أسئلة شائعة
هل Flutter أسرع من React Native؟
في تطبيقات الأعمال المعتادة، لا يلاحظ المستخدمون الفرق. فكلاهما يعمل اليوم على محركات وبنى حديثة أزالت نقاط ضعفهما السابقة. والسرعة في الواقع تتوقف بدرجة أكبر بكثير على طريقة كتابة التطبيق: كيف تُحمَّل القوائم، وما أحجام الصور، وكم من العمل يجري في كل شاشة. احكم على الفريق من التطبيقات التي أطلقها، لا من اختبارات أداء الأطر.
أيهما أسهل في التوظيف؟
الأسهل في معظم الأسواق هو React Native، لأنه يستخدم JavaScript وReact، اللتين يعرفهما عدد كبير جداً من مطوري الويب. أما مطورو Flutter فأقل عدداً، لكن عددهم في ازدياد، ولغة Dart ليست صعبة على مطور متمرس. وإن كنت تخطط لبناء فريق داخلي لاحقاً، فانظر إلى المتاحين في السوق التي توظّف منها قبل أن تختار.
هل يمكن مشاركة الشيفرة بين موقعنا وتطبيقنا؟
مع React Native وموقع مبني بـ React، نعم، جزئياً. إذ يمكن مشاركة قواعد العمل، وجلب البيانات، والتحقق من المدخلات، وتعريفات الأنواع، ويستطيع المطورون أنفسهم العمل على الاثنين. لكن الشاشات تُكتب لكل منهما على حدة. أما Flutter فيستطيع إنتاج نسخة ويب من التطبيق، لكنه لا يتشارك الشيفرة مع موقع React قائم.
هل نبقى عالقين إذا توقف دعم الإطار؟
الخطر منخفض في الحالتين. فكل منهما مفتوح المصدر، وتدعمه شركة كبيرة، وتستخدمه شركات كثيرة أخرى في بيئات الإنتاج، فلن يختفي أي منهما بين ليلة وضحاها. المشكلة الأكثر شيوعاً هي الإهمال: فالتطبيق الذي تفوته بضع ترقيات سنوية يصبح تحديثه صعباً من الأساس. وأياً كان اختيارك، خطّط للصيانة منذ الإصدار الأول.


