နားလည်ထားရမယ့် အချက်
React Native ဟာ JavaScript/TypeScript သုံးပြီး Android နဲ့ iOS ပေါ်မှာ real native UI components တွေကို render လုပ်ပေးတဲ့ core framework ဖြစ်ပါတယ်။
အထင်မှားနေတတ်တဲ့အချက်
"Expo" နဲ့ "React Native" ကို အပြန်အလှန်သုံးလို့ရသလို ထင်တတ်ပေမယ့် Expo app တိုင်းဟာ underneath မှာ React Native app ဖြစ်နေဆဲပါ — Expo ဟာ competing framework မဟုတ်ဘဲ tooling ecosystem တစ်ခုသာ ဖြစ်ပါတယ်။
- Development tooling — fast dev server, hot reloading, Expo Go preview app
- Device API access — camera, location, notifications packages ready-made
- Build services — EAS Build က local Android Studio/Xcode မလိုဘဲ compile ပေးသည်
- Over-the-air (OTA) updates — app-store review မလိုဘဲ JS-level fix ပို့နိုင်သည်
ဒါတွေဟာ React Native သင်ယူဖို့ လိုအပ်ချက်ကို အစားထိုးမပေးပါဘူး — Expo ဟာ productivity layer တစ်ခုအနေနဲ့သာ အပေါ်ကနေ ထပ်ထားတာဖြစ်ပြီး၊ လိုအပ်ရင် bare workflow ဆီ ရွှေ့နိုင်ပါတယ်။
- Expo
- React Native အပေါ်တွင် တည်ဆောက်ထားသော tooling/platform ecosystem တစ်ခုဖြစ်ပြီး၊ development tooling, device API access, build services, OTA updates များကို ပိုမိုလွယ်ကူအောင် ကူညီပေးသည်။
EXPO BUILT ON REACT NATIVE
--------------------------
EXPO BUILT ON REACT NATIVE
-----
+------------------------------------------------------+
| EXPO ECOSYSTEM |
| dev tooling | device APIs | EAS build | OTA updates |
+------------------------------------------------------+
| REACT NATIVE (CORE FRAMEWORK) |
| JavaScript / TypeScript -> native UI compo- |
| nents rendered on the platform |
+------------------------------------------------------+
| ANDROID / IOS (NATIVE) |
+------------------------------------------------------+လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
ယနေ့ React Native project အသစ်အများစုဟာ Expo ရဲ့ managed workflow နဲ့ စတင်ကြပါတယ်၊ setup friction တွေကို အများကြီးလျှော့ချပေးလို့ပါ — native project files တွေကို ကိုယ်တိုင်ထိစရာမလိုပါဘူး။
project ရဲ့ app.json (သို့) app.config.js file ထဲမှာ configuration အားလုံးကို တစ်နေရာတည်းမှာ ဖတ်လို့ရအောင် သိမ်းထားပေးပါတယ်။
all-or-nothing မဟုတ်ပါ
Expo ရဲ့ "config plugins" က managed project ထဲမှာ specific native customization တွေကို fully eject မလုပ်ဘဲ ထည့်နိုင်စေပါတယ် — Expo equivalent မရှိတဲ့ native module လိုအပ်မှသာ bare workflow ဘက်ရွှေ့ကြပါတယ်။
forms, lists, camera, notifications, maps စတဲ့ standard app ကို team သေးသေးလေးနဲ့ တည်ဆောက်နေတယ်ဆိုရင် Expo managed workflow ဟာ real needs အများစုကို လုံလောက်စွာ ဖြေရှင်းပေးနိုင်ပါတယ်။
အတူတူ စမ်းရေးကြည့်မယ်
function suggestReactNativeWorkflow(project) {
const { wantsSimplifiedSetup, needsCustomNativeModule, teamIsNewToMobile } = project;
if (needsCustomNativeModule) {
return "bare/custom React Native workflow (or Expo with a custom dev client)";
}
if (wantsSimplifiedSetup || teamIsNewToMobile) {
return "Expo managed workflow";
}
return "Expo managed workflow (default recommendation)";
}
const firstTimeTeam = {
wantsSimplifiedSetup: true,
needsCustomNativeModule: false,
teamIsNewToMobile: true
};
const customHardwareProject = {
wantsSimplifiedSetup: false,
needsCustomNativeModule: true,
teamIsNewToMobile: false
};
const experiencedStandardProject = {
wantsSimplifiedSetup: false,
needsCustomNativeModule: false,
teamIsNewToMobile: false
};
console.log("First-time mobile team:", suggestReactNativeWorkflow(firstTimeTeam));
console.log("Custom hardware project:", suggestReactNativeWorkflow(customHardwareProject));
console.log("Experienced team, standard app:", suggestReactNativeWorkflow(experiencedStandardProject));First-time mobile team: Expo managed workflow
Custom hardware project: bare/custom React Native workflow (or Expo with a custom dev client)
Experienced team, standard app: Expo managed workflow (default recommendation)
simplified setup လိုချင်တဲ့ (သို့) mobile အတွက်အသစ်ဖြစ်တဲ့ team ကို Expo managed ဘက် ညွှန်းပြီး၊ custom native module လိုအပ်တဲ့ project ကိုတော့ bare workflow ဘက် ညွှန်းပေးပါတယ်။၅ မိနစ် စမ်းကြည့်
project အသစ်တစ်ခုအနေနဲ့ `needsCustomNativeModule: true` နဲ့ `teamIsNewToMobile: true` ကို တစ်ပြိုင်နက်တည်း ပါဝင်တဲ့ လေးခုမြောက် example ကို ထည့်ပါ — run မလုပ်ခင် ဘယ်ဟာအရင်စစ်မလဲ ခန့်မှန်းကြည့်ပြီးမှ run ကြည့်ပါ။
သတိလေးတစ်ချက်
Expo နဲ့ React Native ကို အတူတူပဲလို့ ထင်ပြီး React Native course က Expo ကို ကာမိပြီးသားလို့ ယူဆခြင်း
managed workflow ကနေ bare workflow ဆီ ပြောင်းရမယ်ဆိုတာ all-or-nothing decision လို့ ထင်ခြင်း (config plugins ရှိနေကြောင်း မေ့နေခြင်း)
Expo Documentation — How Mobile Apps Work