Expo নাকি React Native CLI?

React Native vs Expo

আমরা যখন React Native প্রথম প্রথম শুরু করতে যাই, তখন সবাই এটা নিয়ে কনফিউসনে পরে যাই। আমরা কি Expo দিয়ে আমাদের অ্যাপ বানাবো নাকি React Native CLI দিয়ে। ২ টারি কিছু সুবিধা এবং অসুবিধা আছে। আজ আমার এই পোস্টে এটি নিয়ে একটু আইডিয়া দেয়ার ট্রাই করবো।

Expo কি?

Expo কে বলা যায় একটি থার্ড পার্টি রেপার (wrapper), যেটার মাধ্যমে আমরা খুব সহজেই React Native দিয়ে আমাদের অ্যাপ বানানো শুরু করতে পারি। 

এটার সুবিধা কি?

১। Expo আমাদেরকে আউটঅফডাবক্স অনেক সেটআপ দিয়ে থাকে যার জন্যে আমরা খুব সহজেই অ্যাপ বানানো শুরু করে দিতে পারি কোন রকম ঝক্কিঝামেলা ছাড়াই। তো এখানে ঝামেলা বলতে আমি কি বুঝাচ্ছি? আমরা যখন React Native CLI দিয়ে অ্যাপ বানানো শুরু করতে যাই তখন আমাদেরকে কিন্তু অনেক কিছু সেটআপ করে নেয়া লাগে, যেমন NodeJs, Android Studio, Xcode ইত্যাদি। কিন্তু Expo তে আমাদের এসব কোন কিছুই সেটআপ দেয়া লাগে না। আমরা ডায়রেক্ট আমাদের অ্যাপে হাত দিতে পারি।

২। আমি যখন React Native দিয়ে শুরু করেছিলাম তখন কিন্তু Expo একেবারেই খারাপ অবস্থা ছিল, কিন্তু গত ২-৩ বছরে তারা অসাধারণ কাজ করেছে। এখন এটি খুবই স্টেবল অ্যান্ড স্ট্যান্ডার্ড।

৩। Expo আমাদেরকে আউটঅফডাবক্স অনেক কনভেনিয়েন্ট ফিচার দিয়ে থাকে যেমন camera, location, notifications, sensors, haptics। এগুলো নিয়ে কাজ করতে হলে আমাদেরকে Expo তে আলাদা কোন সেটআপ দেয়ার দরকার পরে না, অন্যদিকে React Native এ আমাদের প্রত্যেকটার জন্যে আলাদা মডিউল সেটআপ দেয়া লাগে।

৪। Expo এর একটি খুবই সুন্দর ফিচার হল Over The Air (OTA) updates. এক্সপো ব্যবহার করে আপনার অ্যাপটি তৈরি করতে আপনি যে কোডটি লিখেছেন সেগুলি সমস্তই জাভাস্ক্রিপ্টে রয়েছে তাই আপনি আপনার অ্যাপ্লিকেশনটির আপডেটগুলি OTA এর মাধ্যমে আপডেট করে দিতে পারেন। আপনাকে আর PlayStore or AppStore এ যেয়ে আপ্প্রুভাল নিতে হবে না।

এটার অসুবিধা কি?

১। Expo তে আপনি নেটিভ মডিউল অ্যাড করতে পারবেন না।নেটিভ মডিউল মানে কি? আমরা যখন React Native CLI দিয়ে অ্যাপ বানাই তখন আমরা কিন্তু android and ios কোডকে আমাদের মত কাস্টমাইজ করে নিতে পারি, কিন্তু  Expo তে আমাদের সেই কনট্রোলটি নেই। সেকারণে অনেক লাইব্রেরি যেগুলোতে Expo সাপোর্ট নেই, সেগুলো আমরা ব্যবহার করতে পারব না। এটি একটি বড় ডিজঅ্যাডভান্টেজ। তবে ভালো দিক হচ্ছে সচারচর আমাদের যেসব লাইব্রেরির দরকার পরে, বেশিরভাগই Expo তেই পাওয়া যায়। আর যদি একান্ত নাই করা যাই তাহলে Expo Eject একটি অপশন আছে যার মাধ্যমে আমরা আমাদের Expo অ্যাপকে React Native CLI অ্যাপে কনভার্ট করে নিতে পারব।

আপডেট – Expo ৪২ থেকে আপনি নেটিভ মডিউলও অ্যাড করতে পারবেন। এই বিষয়ে আরও একটু বিস্তারিত আলোচনা করবো ইনশাআল্লাহ অন্যও কোন পোস্টে।

২। Expo আর আরেকটা অসুবিধা হল, এটি দিয়ে বানানো অ্যাপ এর সাইজ একটু বেশি হয়ে থাকে। তবে আশা করা যাচ্ছে Expo টিম অনেক শীঘ্র এই প্রব্লেমটা দুর করবে।

আপডেট – Expo ৪১ থেকে আপনি EAS Build ব্যাবহার করতে পারবেন যার মাধ্যমে আপনার অ্যাপ সাইজের ঝামেলাও দুর হয়ে যাবে।

সামারি হচ্ছে যে, আসলে এটা ডিপেন্ড করে আমাদের অ্যাপ রেকয়ারমেন্টের উপরে। তবে আমার মতে আমরা Expo দিয়ে স্টার্ট করে দিতে পারি আমাদের React Native জার্নি। তাহলে শুরুর দিকে ফ্রিকশন কমে যাবে এবং আমাদের মোটিভেশনটাও থাকবে। আর বেশিরভাগ অ্যাপই Expo দিয়ে বানানো সম্ভব তাই এটি নিয়ে এত চিন্তার কিছু নেই। সবশেষে আমরা React Native দিয়েই অ্যাপ বানাবো, সেইম কোড এবং সেইম বাকি সব কিছু, জাস্ট টুলটি ভিন্ন।

Collected and summarized from the following resources:

https://programmingwithmosh.com/react-native/expo-or-not-building-react-native-apps/

https://dinukapiyadigama.medium.com/expo-vs-react-native-cli-7a3019b2760d

https://stackoverflow.com/questions/61061489/which-is-better-to-use-react-native-cli-or-expo-cli

7 Comments

  1. Nafisur Rahman

    Expo is really doing great nowadays.

  2. Toxic

    এক্সপো ভালোই।কিন্তু সমস্যা হইলো অ্যাপ এর সাইজ শুরুতেই 50 এমবির উপরে থাকে।এইটা কি শুধু আমার সমস্যা নাকি সব এক্সপো ইউজারদের সমস্যা?

    • Saad

      আমি যতদূর জানি আন্ড্রয়েডে AAB ফরম্যাটে নিয়ে আসার পর এটি ১৫-২০এমবি হয়ে যাবে।

  3. i am beginner. so this post is very helpful for me. i was confused what I will use and now this think is clear for me.

Leave a Reply

Your email address will not be published. Required fields are marked *