From 5e125669152718633dd35ab0c82078e7c5ba9ee7 Mon Sep 17 00:00:00 2001 From: burakharun Date: Fri, 29 Aug 2025 18:14:37 +0300 Subject: [PATCH] Fix New Architecture support for latest React Native and Expo versions - Add proper TurboModule protocol implementation - Include RNDatePickerSpecs.h for New Architecture builds - Implement required getConstants and getTurboModule methods - Add requiresMainQueueSetup method - Ensure compatibility with both Old and New Architecture using conditional compilation Fixes compatibility issues with React Native and Expo versions that have New Architecture enabled by default. Tested on React Native 0.79.6 and Expo 53.0.22. --- ios/RNDatePickerManager.h | 7 +++++++ ios/RNDatePickerManager.mm | 17 +++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/ios/RNDatePickerManager.h b/ios/RNDatePickerManager.h index 6a4f206e..b6de05c7 100644 --- a/ios/RNDatePickerManager.h +++ b/ios/RNDatePickerManager.h @@ -8,7 +8,14 @@ #import #import +#ifdef RCT_NEW_ARCH_ENABLED +#import "RNDatePickerSpecs.h" +#endif + @interface RNDatePickerManager : RCTViewManager +#ifdef RCT_NEW_ARCH_ENABLED + +#endif @property (strong, nonatomic) UIViewController *topViewController; diff --git a/ios/RNDatePickerManager.mm b/ios/RNDatePickerManager.mm index da42873c..e270540d 100644 --- a/ios/RNDatePickerManager.mm +++ b/ios/RNDatePickerManager.mm @@ -234,6 +234,23 @@ - (double) getPickerHeight :(UIView *) alertView return 216; } +// New Architecture support - provide module instance to TurboModule system ++ (BOOL)requiresMainQueueSetup { + return NO; +} + +#ifdef RCT_NEW_ARCH_ENABLED +// Implement the Spec protocol methods required by TurboModule +- (void)getConstants:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject { + resolve(@{}); +} + +- (std::shared_ptr)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params { + return std::make_shared(params); +} +#endif + @end +