प्रत्येक बिल्डवर ७०+ iOS पॅकेजेस पुन्हा कंपाईल करणे टाळा

React Native डेव्हलपर्सना एका सामान्य समस्येचा सामना करावा लागतो. प्रत्येक 'क्लीन iOS बिल्ड' (clean iOS build) तुमच्या संपूर्ण डिपेंडन्सी ट्रीला (dependency tree) पुन्हा कंपाईल करते. तुम्हाला प्रत्येक वेळी React Native core, Expo modules आणि थर्ड-पार्टी लायब्ररी पुन्हा बिल्ड होण्याची वाट पाहावी लागते.

Expo SDK 56 हे याचे निराकरण करते. हे Expo modules ला प्री-कंपाईल्ड (precompiled) XCFrameworks म्हणून प्रदान करते. तुमचे ॲप या बायनरीजना (binaries) थेट लिंक करते. आता तुम्हाला ते सोर्समधून पुन्हा बिल्ड करण्याची गरज नाही.

या बदलामुळे क्लीन बिल्ड्स अधिक जलद होतात. तसेच, यामुळे इकोसिस्टम CocoaPods कडून Swift Package Manager कडे वळते. ही डिपेंडन्सीजसाठी Apple ची आधुनिक प्रणाली आहे.

तुमचे फायदे:

  • कमी कंपायलेशन स्टेप्स
  • जलद लोकल डेव्हलपमेंट
  • जलद EAS बिल्ड्स
  • अधिक प्रेडिक्टेबल (predictable) बिल्ड एन्व्हायर्नमेंट्स

तुम्हाला स्थलांतरित (migrate) करण्याची गरज नाही. हे तुमच्या सध्याच्या ॲप्समध्ये आपोआप काम करते.

XCFrameworks म्हणजे काय? हे प्री-कंपाईल्ड नेटिव्ह लायब्ररीसाठी Apple चे फॉरमॅट आहेत. तुमच्या मशीनवर सोर्स कोड कंपाईल करण्याऐवजी, तुम्ही iOS डिव्हाइसेस आणि सिम्युलेटर्ससाठी आधीच तयार केलेल्या बायनरी फाइल्स वापरता.

Apple M4 Max वर कामगिरीतील सुधारणा: • React Native core prebuilt: बिल्ड वेळेत ~४४% घट. • Expo modules prebuilt: सोर्सच्या तुलनेत ~५०% घट. • Third-party libraries prebuilt: सोर्सच्या तुलनेत ~६५% घट.

मोठ्या प्रोजेक्ट्सना याचा सर्वाधिक फायदा होतो. जसे तुमचे ॲप वाढते, तसा नेटिव्ह बिल्ड वेळ सहसा वाढतो. यामुळे तुमच्या CI आणि EAS Build च्या वेगावर परिणाम होतो. प्री-कंपाईल्ड XCFrameworks हे काम पाइपलाइनमध्ये आधीच पूर्ण करतात. आम्ही फ्रेमवर्क्स एकदा कंपाईल करतो आणि त्यांचा पुन्हा वापर करतो.

हा बदल एक मोठा इन्फ्रास्ट्रक्चर शिफ्ट (infrastructure shift) आहे. आम्हाला अनेक तांत्रिक अडथळे दूर करावे लागले:

  • डिपेंडन्सीज वेगळ्या करण्यासाठी पब्लिक इंटरफेसेसचे रिफॅक्टरिंग (Refactoring) करणे.
  • Objective-C आणि Swift मधील सायक्लिक डिपेंडन्सीज (cyclic dependencies) सुधारणे.
  • Swift Package Manager च्या नियमांचे पालन करण्यासाठी तात्पुरती सोर्स स्ट्रक्चर्स तयार करणे.
  • लेगसी हेडर लेआउट्सना सपोर्ट करण्यासाठी Clang Virtual File System overlays वापरणे.

SDK 56 सहअस्तित्वावर (coexistence) लक्ष केंद्रित करते. तुम्ही अजूनही CocoaPods वापरू शकता. जर तुम्हाला प्री-कंपाईल्ड मॉड्यूल्स बंद करायचे असतील, तर हे सेटिंग वापरा: EXPO_USE_PRECOMPILED_MODULES=0

ही पाऊल उचलल्यामुळे Expo, Apple च्या आधुनिक डेव्हलपमेंट इकोसिस्टमच्या अधिक जवळ येते. याचा अर्थ भविष्यासाठी जलद बिल्ड्स आणि अधिक स्वच्छ आर्किटेक्चर (cleaner architecture).

स्रोत: https://dev.to/expo/skip-recompiling-70-ios-packages-on-every-build-27a6