প্রতি বিল্ডে ৭০+ iOS প্যাকেজ পুনরায় কম্পাইল করা এড়িয়ে চলুন

React Native ডেভেলপাররা একটি সাধারণ সমস্যার সম্মুখীন হন। প্রতিটি clean iOS build আপনার সম্পূর্ণ dependency tree পুনরায় কম্পাইল করে। প্রতিবার React Native core, Expo modules এবং third-party libraries পুনরায় বিল্ড হওয়ার জন্য আপনাকে অপেক্ষা করতে হয়।

Expo SDK 56 এটি সমাধান করে। এটি Expo modules-কে precompiled XCFrameworks হিসেবে প্রদান করে। আপনার অ্যাপ সরাসরি এই binaries গুলো লিঙ্ক করে। আপনাকে আর এগুলো source থেকে পুনরায় বিল্ড করতে হবে না।

এই পরিবর্তনটি clean build-কে আরও দ্রুত করে তোলে। এটি ecosystem-কেও CocoaPods থেকে Swift Package Manager-এ নিয়ে যায়। এটি dependencies-এর জন্য Apple-এর আধুনিক সিস্টেম।

আপনার জন্য এর সুবিধাগুলো:

  • কম কম্পাইলেশন ধাপ
  • দ্রুততর লোকাল ডেভেলপমেন্ট
  • দ্রুততর EAS builds
  • আরও অনুমানযোগ্য build এনভায়রনমেন্ট

আপনাকে মাইগ্রেট করার প্রয়োজন নেই। এটি আপনার বিদ্যমান অ্যাপগুলোতে স্বয়ংক্রিয়ভাবে কাজ করবে।

XCFrameworks কী? এগুলো হলো precompiled native libraries-এর জন্য Apple-এর একটি ফরম্যাট। আপনার মেশিনে source code কম্পাইল করার পরিবর্তে, আপনি iOS ডিভাইস এবং সিমুলেটরগুলোর জন্য আগে থেকেই তৈরি করা binary ফাইলগুলো ব্যবহার করতে পারেন।

Apple M4 Max-এ পারফরম্যান্সের উন্নতি: • React Native core prebuilt: build time প্রায় ৪৪% হ্রাস পায়। • Expo modules prebuilt: source-এর তুলনায় প্রায় ৫০% হ্রাস পায়। • Third-party libraries prebuilt: source-এর তুলনায় প্রায় ৬৫% হ্রাস পায়।

বড় প্রজেক্টগুলোতে সবচেয়ে বেশি সুবিধা পাওয়া যায়। আপনার অ্যাপ যত বড় হয়, native build time সাধারণত বৃদ্ধি পায়। এটি আপনার CI এবং EAS Build-এর গতি কমিয়ে দেয়। Precompiled XCFrameworks এই কাজটিকে পাইপলাইনের আরও শুরুর দিকে নিয়ে আসে। আমরা ফ্রেমওয়ার্কগুলো একবার কম্পাইল করি এবং সেগুলো পুনরায় ব্যবহার করি।

এই পরিবর্তনটি একটি বড় ধরনের ইনফ্রাস্ট্রাকচারাল শিফট। আমাদের বেশ কিছু প্রযুক্তিগত বাধা সমাধান করতে হয়েছে:

  • dependencies আলাদা করার জন্য public interfaces রিফ্যাক্টর করা।
  • Objective-C এবং Swift-এর মধ্যে cyclic dependencies ঠিক করা।
  • Swift Package Manager-এর নিয়ম মেনে চলার জন্য সাময়িক source structure তৈরি করা।
  • legacy header layout সাপোর্ট করার জন্য Clang Virtual File System overlays ব্যবহার করা।

SDK 56 সহাবস্থানের (coexistence) ওপর গুরুত্ব দেয়। আপনি এখনও CocoaPods ব্যবহার করতে পারেন। আপনি যদি precompiled modules বন্ধ করতে চান, তবে এই setting-টি ব্যবহার করুন: EXPO_USE_PRECOMPILED_MODULES=0

এই পদক্ষেপটি Expo-কে Apple-এর আধুনিক ডেভেলপমেন্ট ইকোসিস্টেমের আরও কাছাকাছি নিয়ে আসে। এর মানে হলো ভবিষ্যতের জন্য আরও দ্রুত build এবং আরও পরিচ্ছন্ন আর্কিটেকচার।

উৎস: https://dev.to/expo/skip-recompiling-70-ios-packages-on-every-build-27a6