React Native: چیست، Bridge چگونه کار می‌کند و محیط JavaScript

نویسنده: IT Sectr منتشر شده: 2026-05-01 زمان مطالعه: 8 دقیقه

React Native — یک چارچوب منبع‌باز از شرکت Meta برای ایجاد برنامه‌های موبایل با JavaScript و TypeScript است. به گزارش React Native Documentation, 2024، این چارچوب از معماری React برای رندر کامپوننت‌های طبیعی iOS (UIKit) و Android (View) از طریق مکانیسم Bridge استفاده می‌کند و امکان نوشتن یک کد برای هر دو پلتفرم با دسترسی به APIهای طبیعی را فراهم می‌کند.

نکات کلیدی

  • React Native — چارچوب Meta برای برنامه‌های موبایل طبیعی با JavaScript
  • معماری Bridge پیام‌های JSON را بین محیط JS و ماژول‌های طبیعی انتقال می‌دهد
  • Fabric — معماری رندر جدید که جایگزین Bridge در React Native 0.68+ شد
  • Hot Reload و Fast Refresh به‌روزرسانی فوری کد را در شبیه‌ساز تضمین می‌کنند
  • اکوسیستم شامل 20 000+ کتابخانه از طریق npm و Expo SDK است

React Native چیست

React Native — چارچوبی است که توسط تیم Facebook (اکنون Meta) ساخته شد و در سال 2015 به عنوان منبع‌باز منتشر شد. بر خلاف رویکردهای ترکیبی (Cordova, Ionic)، React Native از WebView استفاده نمی‌کند. در عوض، کامپوننت‌های JavaScript به عناصر UI طبیعی نقشیت می‌شوند: View -> UIView / android.view.View، Text -> UILabel / TextView، ScrollView -> UIScrollView / ScrollView.

نسخه اول React Native فقط از iOS پشتیبانی می‌کرد. پشتیبانی Android در سال 2016 اضافه شد. نسخه 0.60 (2019) Autolinking را — اتصال خودکار وابستگی‌های طبیعی را معرفی کرد. React Native 0.68 (2022) معماری جدید Fabric + TurboModules را اضافه کرد. نسخه پایدار کنونی 0.74 (2024) با پشتیبانی از Yoga 3.0 برای چیدمان Flexbox به طور کامل به معماری New Architecture منتقل شده است.

به گزارش Statista 2024، React Native در 38% پروژه‌های چندسیستمی استفاده می‌شود. Discord، Instagram، Shopify، Pinterest، Skype و Uber Eats از این چارچوب استفاده می‌کنند. Meta از React Native در Facebook و Instagram — اپلیکیشن اصلی موبایل با 2 میلیارد کاربر استفاده می‌کند.

تاریخچه و تکامل React Native

React Native در React.js Conf در ژانویه 2015 معرفی شد. ایده انتقال پارادایم تصریحی React از \u0648ب به پلتفرم‌های موبایل بود. اولین کامیت در مخزن در سال 2013 به عنوان پروژه داخلی Facebook برای ساخت اپلیکیشن Facebook Groups در iOS ایجاد شد.

نسخه 0.70 (2022) Hermes را به عنوان موتور پیش‌فرض JavaScript معرفی کرد. Hermes یک موتور با کامپایل پیش‌نگار (AOT) است که برای دستگاه‌های موبایل بهینه‌سازی شده است. زمان راه‌اندازی اپلیکیشن را 50% کاهش می‌دهد و اندازه APK را در مقایسه با JavaScriptCore 30% کوچک‌تر می‌کند. Hermes از ES6 و بخشی از ES2020 پشتیبانی می‌کند.

تفاوت React Native و React Web

React Web کامپوننت‌ها را از طریق ReactDOM به عناصر DOM (div، span، p) رندر می‌کند. React Native به کامپوننت‌های طبیعی پلتفرم رندر می‌کند. به جای <div> از <View>، به جای <span><Text> استفاده می‌شود. سبک‌ها از طریق شیئ StyleSheet.create() تعیین می‌شوند که به ویژگی‌های CSS پلتفرم ترجمه می‌شود. Flexbox از طریق موتور Yoga به صورت پیش‌فرض فعال است.

ناوبری در React Native با وب متفاوت است. به جای react-router-dom از React Navigation استفاده می‌شود — یک کتابخانه طبیعی با پشتیبانی از ناوبرهای Stack، Tab و Drawer. React Navigation 6.x از انیمیشن‌های طبیعی (useNativeDriver) و انطباق با Deep Links استفاده می‌کند. برای ناوبری طبیعی صفحات iOS UINavigationController و Android Fragment از کتابخانه react-native-navigation از Wix استفاده می‌شود.

معماری React Native

معماری React Native به طور سنتی در محور Bridge ساخته شده بود — یک کانال JSON اسینکرون بین محیط JavaScript و کد طبیعی. از نسخه 0.68، Meta معماری New Architecture را معرفی کرد که Bridge را با JSI (JavaScript Interface) و Fabric جایگزین می‌کند. هر دو مدل را بررسی می‌کنیم.

Bridge و Fabric

Bridge — یک پروتکل JSON سریالیزه شده است که در چند رشته کار می‌کند: JS Thread (تفسیر کد React)، Main Thread (UI) و Native Modules Thread (API). هر تعامل بین JS و کد طبیعی از سریالیزاسیون و دسریالیزاسیون اشیا عبور می‌کند که در فراخوانی‌های مکرر تأخیر ایجاد می‌کند. هنگام پیمایش لیست 1000 عنصر، Bridge تا 10 000 پیام JSON در ثانیه تولید می‌کند.

Fabric — سیستم رندر جدید در React Native. به جای Bridge، Fabric از C++ Shadow Tree استفاده می‌کند که از طریق JSI با رشته UI همگام می‌شود. این سریالیزاسیون JSON را حذف می‌کند: کد C++ طبیعی مستقیماً توابع را در محیط JavaScript فراخوان می‌کند و برعکس. Fabric تأخیر رندر را از 16 ms (Bridge) به 2–4 ms کاهش می‌دهد.

TurboModules — بخش دوم New Architecture. در مدل قدیمی، همه ماژول‌های طبیعی در حین شروع اپلیکیشن بارگیری می‌شدند. TurboModules ماژول‌ها را به صورت تنبل (lazy loading) بارگیری می‌کند — فقط وقتی کد JS اولین بار آن‌ها را درخواست کند. این زمان شروع سرد را در اپلیکیشن‌های با 20+ ماژول طبیعی 40% کاهش می‌دهد.

نمونه اپلیکیشن در React Native

js
import React from 'react';
import { View, Text, StyleSheet, FlatList } from 'react-native';

const App = () => {
  const data = [
    { id: '1', title: 'React Native' },
    { id: '2', title: 'Flutter' },
  ];

  return (
    <View style={styles.container}>
      <FlatList
        data={data}
        keyExtractor={(item) => item.id}
        renderItem={({ item }) => (
          <Text>{item.title}</Text>
        )}
      />
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    padding: 16,
  },
});

export default App;

ماژول‌های طبیعی

ماژول‌های طبیعی — مکانیسمی برای فراخوانی APIهای پلتفرم از JavaScript است. اگر کارکرد توسط کامپوننت‌های استاندارد React Native (دوربین، Bluetooth، بیومتری) پوشش داده نمی‌شود، توسعه‌دهنده یک ماژول به Swift/Kotlin می‌نویسد و آن را از طریق RCTBridgeModule یا TurboModule ثبت می‌کند. تابع طبیعی از JS از طریق NativeModules.CameraModule.takePhoto() فراخوان می‌شود.

React Native ماژول‌های طبیعی آماده‌ای برای دسترسی به شیب‌سنج (react-native-sensors)، مختصات جغرافیایی (@react-native-community/geolocation)، بیومتری (react-native-biometrics) و اعلام‌های محلی (@notifee/react-native) فراهم می‌کند. برای سناریوهای سفارشی، Expo راه‌انداز Expo Modules API را ارائه می‌دهد — رابطی ساده‌تر برای ایجاد ماژول‌های طبیعی بدون Xcode یا Android Studio.

مزایای React Native

انجمن عظیم — React Native بزرگترین انجمن را در میان چارچوب‌های چندسیستمی دارد. در GitHub، پروژه 117 000+ ستاره و 1800+ کنتریبوتور دارد. npm هر هفته react-native را 3 میلیون+ بار دانلود می‌کند. سوالات مربوط به React Native 5% همه سوالات در بخش توسعه موبایل در Stack Overflow را تشکیل می‌دهند.

اکوسیستم JavaScript — توسعه‌دهندگان React از همان ابزارهایی استفاده می‌کنند که در وب استفاده می‌شود: npm، Babel، ESLint، Prettier، Jest، TypeScript. منطق کسب و کار می‌تواند بین نسخه وب (React) و اپلیکیشن موبایل (React Native) مجدداً استفاده شود. کتابخانه‌های Redux، Zustand، React Query، React Hook Form در هر دو پلتفرم بدون تغییر کار می‌کنند.

Expo — یک SDK و ابزارهایی است که توسعه در React Native را ساده‌تر می‌کند. Expo ماژول‌های آماده (دوربین، اعلام‌ها، نقشه‌ها، OAuth)، ساخت ابری (EAS Build) و به‌روزرسانی‌های OTA (EAS Update) را فراهم می‌کند. Expo Go به شما اجازه می‌دهد اپلیکیشن را بدون Xcode و Android Studio روی دستگاه فیزیکی اجرا کنید. به گزارش Expo 2024، 70% پروژه‌های جدید React Native از Expo استفاده می‌کنند.

به‌روزرسانی‌های OTA — ویژگی موجود از طریق Expo Update و CodePush (Microsoft). توسعه‌دهندگان می‌توانند به‌روزرسانی‌های باندل JavaScript را بدون طی کردن بررسی App Store یا Google Play مستقیماً برای کاربران ارسال کنند. این رفع باگ‌های حراج را از 2–5 روز (انتظار بررسی) به 1–2 ساعت تسریع می‌بخشد.

پشتیبانی TypeScript از React Native 0.71 به صورت پیش‌فرض فعال است. قالب پروژه شامل tsconfig.json، انواع برای همه کامپوننت‌ها و پشتیبانی از strict mode است. Flow (نوع‌بندی استاتیک از Facebook) نیز پشتیبانی می‌شود، اما Meta رسماً TypeScript را توصیه می‌کند. قالب TypeScript بر پایه نظرسنجی State of React Native 2024، 85% پروژه‌های جدید را تشکیل می‌دهد.

اکوسیستم و کتابخانه‌های محبوب

npm — رایجترین ثبت پکیج برای React Native. جستجوی کتابخانه با کلمه کلیدی react-native فیلتر می‌شود. برای نصب از npm install یا yarn add استفاده می‌شود. React Native CLI به طور خودکار وابستگی‌های طبیعی را وصل می‌کند (از نسخه 0.60). برای پروژه‌های Expo، نصب از طریق expo install مدیریت می‌شود که نسخه مناسب کتابخانه را انتخاب می‌کند.

کتابخانه‌های کلیدی

@react-navigation/native — استاندارد ده فاکتو برای ناوبری در React Native. این کتابخانه شامل Stack Navigator (انتقال‌های انیمیشن‌دار)، Tab Navigator (منوی پایین برای iOS/Android)، Drawer Navigator (منوی کناری) و Material Top Tab است. React Navigation 7.x (2024) پیکربندی استاتیک مسیرها و پشتیبانی کامل از React 18 با useSyncExternalStore را معرفی کرد.

react-native-reanimated — کتابخانه‌ای برای انیمیشن‌های با کارایی بالا. Reanimated 3.x انیمیشن‌ها را در رشته UI (worklet) اجرا می‌کند و از رشته JS عبور می‌کند. این 60 FPS را حتی در انیمیشن 100+ عنصر تضمین می‌کند. useSharedValue، useAnimatedStyle و withSpring جایگزین Animated API از بسته استاندارد می‌شوند. Reanimated جسته‌های لمسی را از طریق react-native-gesture-handler مدیریت می‌کند.

@tanstack/react-query — کتابخانه‌ای برای مدیریت وضعیت سرور. React Query پاسخ‌های API را کش می‌کند، در صورت تغییر شبکه خودکار درخواست‌ها را مجدد ارسال می‌کند (refetchOnReconnect) و از صفحه‌بندی از طریق useInfiniteQuery پشتیبانی می‌کند. نسخه 5.x شامل به‌روزرسانی‌های خوش‌بینانه برای UX است — رابط پیش از دریافت پاسخ سرور به‌روز می‌شود و سپس تصحیح می‌شود.

کتابخانهنصب/هفتهکاربرد
React Navigation2,5 میلیون+ناوبری و مسیریابی
Reanimated1,8 میلیون+انیمیشن در رشته UI
React Query10 میلیون+وضعیت سرور و کش
AsyncStorage1,2 میلیون+ذخیره محلی داده

سوالات متداول

React Native چیست؟

React Native — چارچوبی از Meta برای ایجاد اپلیکیشن‌های موبایل طبیعی با JavaScript و TypeScript است. آن از کامپوننت‌های React استفاده می‌کند که به عناصر UI طبیعی iOS و Android رندر می‌شوند و از طریق Bridge یا معماری جدید Fabric به همه APIهای پلتفرم دسترسی فراهم می‌کند.

آیا React Native از اپلیکیشن‌های طبیعی کندتر است؟

در 90% سناریوها تفاوت برای کاربر قابل توجه نیست. React Native با موتور Hermes و معماری Fabric به عملکرد طبیعی نزدیک می‌شود. مشکلات در انیمیشن‌های سنگین (Reanimated این را حل می‌کند) و فراخوانی‌های مکرر Bridge (New Architecture تأخیرها را رفع می‌کند) ایجاد می‌شوند. Discord و Instagram نشان می‌دهند که RN برای اپلیکیشن‌های تولیدی با میلیون‌ها کاربر مناسب است.

آیا یادگیری React Native برای توسعه‌دهنده وب آسان است؟

بله. اگر React و JavaScript را می‌شناسید، مانع ورود حداقل است. تفاوت در کامپوننت‌ها (View به جای div، Text به جای span) و ناوبری (React Navigation به جای react-router) است. JSX، هوک‌ها (useState، useEffect)، کنتکست (React Context) و Redux درست مانند نسخه وب کار می‌کنند. یک توسعه‌دهنده وب متوسط RN را در 2–4 هفته یاد می‌گیرد.

Expo برای React Native چیست؟

Expo — یک پلتفرم با SDK، ابزارهای ساخت و خدمات ابری برای React Native است. Expo SDK شامل 200+ ماژول (دوربین، نقشه‌ها، اعلام‌ها، بیومتری) است، EAS Build اپلیکیشن را در ابر کامپایل می‌کند و EAS Update به‌روزرسانی‌های OTA را تحویل می‌دهد. Expo Go اپلیکیشن را بدون Xcode یا Android Studio روی دستگاه آزمایش می‌کند.

کی نباید از React Native استفاده کرد؟

React Native مناسب نیست برای اپلیکیشن‌های با گرافیک سنگین (رندرینگ 3D، بازی‌های Unity، ARKit/ARCore)، سناریوهای تخصصی پلتفرم (پروفایل‌های سفارشی Bluetooth، خدمات پس‌زمینه پیچیده) و پروژه‌هایی که هر میلی‌ثانیه پاسخگویی UI حیاتی است. برای این کارها از طبیعی Swift/Kotlin یا Flutter استفاده کنید.

خلاصه

  • React Native — چارچوب Meta برای اپلیکیشن‌های موبایل طبیعی با JavaScript/TypeScript
  • معماری Bridge (کلاسیک) پیام‌های JSON را انتقال می‌دهد؛ Fabric (جدید) از C++ Shadow Tree بدون سریالیزاسیون استفاده می‌کند
  • Expo توسعه را ساده‌تر می‌کند: 200+ ماژول، ساخت ابری و به‌روزرسانی‌های OTA بدون Xcode
  • Hermes — موتور AOT JavaScript که شروع را 50% و اندازه APK را 30% کاهش می‌دهد
  • اکوسیستم npm برای ناوبری، انیمیشن، پرسیدن و ذخیره 20 000+ کتابخانه فراهم می‌کند
  • TypeScript — توصیه رسمی Meta، پشتیبانی شده در قالب پیش‌فرض از RN 0.71
  • React Native را برای پروژه‌های با تیم JS، انطباق وبی و نمونه‌سازی سریع انتخاب کنید

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید