Table of Contents
لماذا تطبيق نظام المعلومات المتعلقة بالمعاملات الوطنية
ويلعب حجم التطبيق دورا مباشرا في اقتناء المستخدمين واستبقائهم وإرضاءهم عموما، إذ تبين الدراسات أن زيادة حجمه بنسبة ١٠ ميغابايت يمكن أن تقلل من حجم الشحن بنسبة ١ في المائة أو أكثر، أما بالنسبة للشركة التي تعرض على مجموعة من الـ " أندرويد " ، فإن مجموعة " بلاي ستور " يمكن أن تنتظر في كثير من الأحيان عمليات التنزيل الاختيارية الكبيرة على الشبكات الخلوية، كما أن الأجهزة الصغيرة تستفيد من سرعة التجزئة، وانخفاض حجمها، وانخفاض رسوم التخزين، ورسوم البيانية، ولا سيما في الأسواق الناشئة.
فهم القطع الأثرية الأصلية
وقبل تطبيق استراتيجيات الاستخدام الأمثل، من الضروري فهم ما يشكل حجم التطبيق النهائي.
- JavaScript bundle - the entire application logical, including third-party Library and React itself, compiled into a single JS file by Metro.
- Native code binaries] — compiled C++/Objective-C/Java/Kotlin code for each structure (armeabi-v7a, arm64-v8a, x86, x86 64 on Android; arm64, x86 64 on iOS).
- Asset resources] - images, fonts, audio, video, and JSON files stored in res/drawable (Android) or the bundle resources (iOS).
- Support Library] - React Native itself, plus any native modules (e.g., react-native-camera, react-native-maps) that add compiled code and resources.
- Metadata] - الملفات المُبَرَّضة، والشعارات، وشاشات الإطلاق، ولوحات القصص، والقيدات النثرية.
كل طبقة تساهم بشكل مختلف في أندرويد، وغرفة جافاسكريبت مدمجة داخل دائرة مكافحة المخدرات، وفي محطة إيوس، تعيش مجموعة السوائب داخل النزلة إلى جانب المنفى من السكان الأصليين، مع معرفة أين يأتي الوزن من يسمح لك بالتصوير الأمثل.
الأصول على الوجه الأمثل - ما بعد الضغط الأساسي
إن تحقيق الاستخدام الأمثل للأصول هو أدنى قيمة من الفاكهة، ولكن العديد من الأفرقة تتوقف عند الضغط البسيط، ويحقق نهج أعمق وفورات أكبر.
استخدام شكل التصوير الحديث
ويمكن أن تقدم شركة " ويب " (Wi-S) وشركة HEIC (EOS) 25-35 في المائة من حجم الملفات الأصغر مقارنة بشركة JPEG أو PNG على أساس نوع مكافئ.
إعادة البناء والضغط في وقت البناء
لا تُجمع أبداً أصول الاستبانة الكاملة، ولا تستخدم أدوات مثل أو نص بناء يخفض الصور إلى أقصى حجم للعرض المطلوب، فعلى سبيل المثال، لا ينبغي أن يكون أيقونة مُعرضة في 48px واسعة النطاق، أو أن تُعادل النسيج مع الضغط غير المُفقد أو المفقود باستخدام ، أو خدمات السحب الإلكترونية.
القضاء على الأصول غير المستخدمة
(ب) على مر الزمن، تتراكم المشاريع الصور القديمة والصور المغلقة والتقديرات، وتدير أداة تحليل ثابتة مثل (أو نص تقليدي) لأصول العلم غير المشار إليها في أي بيانات ، ، أو .
Subset Fonts
وكثيراً ما تحتوي ملفات الفونتات على آلاف الجليفات لكثير من اللغات، وإذا كان تطبيقك لا يدعم سوى السمات اللاتينية (أو مجموعة فرعية)، فإن استخدام أداة تضخيم فونتية مثل أو لتعري الشخصيات غير المستخدمة، وهذا يمكن أن يقلل من ملف الفونتات من 200 كيلوبايت إلى 20 كيلوبايت.
المدونة التي تقطع وتضع حداً كسولاً - نهج نظامي
إن إعادة تشكيل مجمع المترو التابع للمستوطنة الوطنية تدعم تقسيم مجموعة جفاسكريبت إلى قطع متعددة يمكن تحميلها عند الطلب، وهذه التقنية، التي كثيرا ما تسمى " تقسيم الشحوم " ، تقلل من حجمها الأولي والوقت الذي يستغرقه الطرد.
كيف يعمل الرمز في شركة ردك
وتنتج شركة Metro، عن طريق التقصير، مجموعة واحدة من الورقات المشتركة، ومن أجل الانقسام، تحتاج إلى تشكيل مترو مع نهج تسلسلي معتاد (مثل استخدام أو ) ويمكنك استخدام " آلية الفرز الثانية " ، بدلا من ذلك، استخدام " المواصفات المشابهة " في وضع عناصر استيراد دينامية في الوقت المناسب.
Implementing Lazy Loading
حتى بدون ان يتم مسح الشفرة بالكامل يمكنك ان تزيل المكونات بإستخدام الركاز
const SettingsScreen = React.lazy(() => import('./Screens/SettingsScreen'));
سد العنصر الكسول في حدود مع هبوط في مستوى UI. This pattern postponeds importing the module until the first render, reducing the initial bundle size. However, note that React.lazy alone does not create separate physical files - the component code is still bundled into the main JS. True file-level division requires Metro formation changes.
الاستراتيجيات الأولية
بالنسبة للملامح المهمة، يمكنك تحميل قطع القطيع في الخلفية بعد إطلاقات الطلبات، واستخدام المكتبات مثل لخدمة القطع المحلية، أو دمجها كأصول، وفي نظام iOS، يمكنك أن تضغط على API للموارد التي يطلبها، والمفتاح هو الموازنة بين الحجم الأولي والأداء المتصور:
Leverage ProGuard and R8 for Android
ويستفيد بناء الروبوتات استفادة كبيرة من أدوات التقلص والتشويش.
ProGuard vs. R8
بروغارد هو الأداة التقليدية؛ R8 هو خلف غوغل الذي يديره التقصير في أندرويد غرادل بلوغين 3.4.0 وفوق ذلك، R8 أسرع وأكثر عدوانية في إزالة الشفرة الميتة، لتمكين R8, ضمان أن تحتوي على ما يلي:
android.enableR8=true
وفي ، حدد و لإدراج قواعد بروغارد الافتراضية، ثم يتقلص R8 ويُخنق ويُصبح المثلى لكل من شفرة جافا/كوتين ورمز React Native native C+++ إذا استخدمت هيرميز.
القواعد العرفية للاسترداد
React Native relies on reflection and JNI calls that can be broken by aggressive obfuscation. You must keep certain classes and methods. Use the following rules in your :
-keep class com.facebook.react.** { *; }
-keep class com.facebook.hermes.** { *; }
-keepclassmembers class * {
@com.facebook.react.uimanager.annotations.ReactProp ;
}
كما تحتفظ بالطبقات التي تستخدمها الوحدات المحلية (مثلاً، ) وتختبر إنتاجك بشكل شامل - يمكن لقاعدة مفقودة أن تسبب تحطماً في فترات الدوام.
Hermes and Bundle Size
وإذا استخدمتم هيرميز (محرك جافاسكيبت من شركة ريك إندي)، فإن مجموعة الورقات المشتركة تُجمع في شكل بتروكود، وهي عادة أقل بنسبة 20 إلى 30 في المائة من مصدر الورقة الخام، ويمكن أن تُستخدم هيرمس في و] (للأندرويد) أو بودفيل (للأيوس)، كما أنَّها تخفض من استخدام الذاكرة والوقت لبدء التشغيل.
إزالة الأقاليم غير المستخدمة والمكتبات
يتسلل متطورون كثيرون إلى المكتبات من أجل سمة واحدة ثم لا يزيلونها أبداً
مراجعة حساباتك
(د) استخدام لقائمة الطرود التي يتم تركيبها ولكنها لم تستورد قط، غير أن هذه الأداة لا تحقق إلا من الواردات المباشرة في رمز الورقة المشتركة الخاص بك، أما بالنسبة للوحدات المحلية، فيجب أن تستعرض يدوياً وأجهزة الإيو إس Podfile للبودات غير المستخدمة.
يستعاض عن المكتبات الثقيلة ببدائل الخفيف
For example, replace (70 KB minified) with (tree-shakeable, so8 KB) or the built-in API. Swap full-featured UI kits with minimal sets of components. Use platform-native features where possible:
إزالة تبعية الاختبارات والتنمية من الإنتاج
ضمان استبعاد مجموعات من المواد مثل ، وأدوات التشهير من بناء الإطلاقات، واستخدام أعلام لاستيرادها إلا في التنمية.
تحقيق الهدف الأمثل من بريطانيا
وكثيراً ما تكون مجموعة الورقات المشتركة أكبر قطعة واحدة من التطبيق - وهي أحياناً 2-10 ميغابايت غير مكتظة.
إزالة الألغام وإلغاء قانون الوفاة
وتستخدم حبوب المترو بالفعل نظام " UglifyJS " أو " Terser " في طريقة الإنتاج، ولكن يمكنك زيادة تخفيض حجمها بتمكين " Babel plugin من تجريد البيانات ، وكذلك استخدام أهداف لتجنب سمات نقل الملكية التي تحظى بدعم من السكان الأصليين من النسخة المستهدفة " Android/iOS " (مثلا، وظائف الأسهم).
شجرة تهتز
(أ) إن الركود (الإلغاء من شفرة الموت) في شركة (ريتش ناشيون) محدودة لأن (ميترو) لا يدعم بشكل كامل وحدات الـ(إس)، لكن يمكنك تحسين النتائج باستيراد وحدات محددة فقط من مكتبة وليس مكتبة كاملة، على سبيل المثال:
// Bad: imports the entire lodash bundle
import _ from 'lodash';
// Good: imports only the pick function (~5 KB)
import pick from 'lodash/pick';
Use the with rule ] to enforce granular imports.
Bundle Splitting
وكما ذكر في إطار تقسيم الرموز، يمكن تقسيم الحزمة إلى ملفات متعددة، ومن النمط المثبت إنشاء مجموعة " أساسية " تحتوي على رد الفعل، و " أصلية " ، وملاحة، و " أعمال " بشاشات تطبيقاتك، وهذا يتيح للمستعملين تحديث المنطق (التحميلات) للأعمال التجارية والاستفادة من التأشيرة التي تستخدمها شركة HTTP إذا تم استخدامها من خادم.
تشكيلة محلل
(ج) استخدام لتوليد خريطة شجر تفاعلية من مجموعة الـ (JBON)، مما يكشف عن المكتبات التي تستهلك أكثر الأماكن، وعلى سبيل المثال، قد تجدون أن مكتبة محلية تضيف 500 كيلوبايت، يمكن استبدالها بنهج بسيط ذي قيمة رئيسية، ويدير هذه الأداة بانتظام بعد إضافات رئيسية.
تقنيات الحد من الحجم السريع
iOS: App Thinning and Bitcode
App little creates appariants so users download only what they need. Enable Bitcode] in Xcode (Build Settings - Enable Bitcode - ⁇ Yes). Bitcode allows Apple to re-optimize and strip unused code during submission, reducing download.
ولزيادة الوفورات، يمكن On-Demand Resources (ODR) ] من الحصول على أصول مثل الفيديو التمهيدية أو مستويات اللعب العالية الاستبانة.
Android: App Bundle (AAB) and Split APKs
(أ) تُنتج من شركة AAB إلى شركة أندرويد آبراندل لتوزيعها، وتُنتج شركة AAB وحدات مقسمة من كل كثافة ولغة وهندسة، مما يمكن أن يقلل حجم الحمولة بنسبة 30 إلى 5 في المائة، لأن المستعملين لا يحصلون إلا على الرمز والموارد اللازمة لجهازهم المحدد.() وفي ، ضمان .
Additionally, use Android Dynamic Delivery] to modularize features: install the base module and download feature modules on demand (similar to iOS ODR).
Native Modules: Opt for Hermes and Turbo Modules
يستعاض عن محرك شركة " جافاسكريب كور " بشركة هيرمس على كلا المنصتين، وهي تجمع الورقة المشتركة إلى شركة " تيريكود " قبل الوقت، مما يقلل حجم الحزمة ويقلل من رأسها، أما بالنسبة للنسخ الأصلية الجديدة (0.71+)، فتمكن ] من إنشاء مكتبات جديدة () مع نموذج " توربو موديل " .
الرصد والتعظيم المستمر
إن تحقيق الحجم الأمثل ليس مهمة لمرة واحدة، بل إدماجه في تدفق العمل الإنمائي.
تحديد ميزانيات الحجم
(ب) تحديد الحد الأقصى لحجم استحقاقات الإعاشة/الميزانية العادية (مثل 40 ميغابايت للتركيب الأولي) وإنفاذه أثناء التنفيذ المركزي. واستخدام أدوات مثل [(FLT:49]) أو النصوص العرفية التي تقارن حجم البناء الجديد بمقياس خط الأساس، وإذا زاد حجمه إلى ما يتجاوز عتبة، فإن البناء يفشل ويحقق الفريق في ذلك.
الأثر المترتب على التعقب في طلبات سحب
يمكن أن تقترح الخدمات مثل ] بدائل أخف، وأن تشجع الأفرقة على استعراض الأثر الكبير بقدر ما يكون أثر الأداء حاسماً.
تنظيف المعالين المنتظم
(ب) إجراء مراجعة حسابات إعالة فصلية، وإزالة الطرود غير المستخدمة، وتحديث النسخ الجديدة التي قد تكون قد تقلصت، واستبدال المكتبات الأحادية باللياقة بالليارات الدقيقة، ويمكن لأدوات مثل أن تساعد على تحديد الطرود غير المستخدمة.
الموارد الخارجية لمواصلة القراءة
- React Native Official Docs: Optimizing Flatlist] (performance but related to rendering size)
- Android Developers: Reduce APK Size]
- Apple: On-Demand Resources Guide]
- react-native-bundle-visualizer]
- Hermes Engine Official Site]
خاتمة
Reducing app size in React Native projects demands a multi-layered strategy that addresses assets, JavaScript bundle, native code, and dependency management. By adopting modern image formats, enabling Hermes and R8, splitting code and resources, and continuously monitoring size in CI, you can deliver apps that are fast to download, light on storage, and respectful of users’ data plans. The investment in size optimization pays off in higher conversion rates, better ratings, and lower churn — especially in global markets where every kilobyte matters. Start with an audit of your current build, prioritize the largest offenders, and iterate. Your users will thank you with every update they install.