@@ -244,8 +244,6 @@ - (void)updateConfiguration
244244
245245- (NSArray <UISheetPresentationControllerDetent *> *)buildSheetDetents
246246{
247- NSMutableArray <UISheetPresentationControllerDetent *> *nativeDetents = [NSMutableArray new ];
248-
249247 if (![self areDetentsValid ]) {
250248 RCTLogError (
251249 @" [RNScreens] The values in the detents array must fall within the 0.0 to 1.0 range. Falling back to large detent." );
@@ -260,11 +258,18 @@ - (void)updateConfiguration
260258 return @[ [UISheetPresentationControllerDetent largeDetent ] ];
261259 }
262260
261+ size_t detentsCount = _detents.size ();
262+ // Falling back to 2, specifically for iOS 15 fallback
263+ NSUInteger capacity = detentsCount > 0 ? detentsCount : 2 ;
264+
265+ NSMutableArray <UISheetPresentationControllerDetent *> *nativeDetents =
266+ [[NSMutableArray alloc ] initWithCapacity: capacity];
267+
263268 if (@available (iOS 16.0 , *)) {
264- if (_detents. size () == 0 ) {
269+ if (detentsCount == 0 ) {
265270 [nativeDetents addObject: [UISheetPresentationControllerDetent largeDetent ]];
266271 } else {
267- for (size_t i = 0 ; i < _detents. size () ; i++) {
272+ for (size_t i = 0 ; i < detentsCount ; i++) {
268273 double fraction = _detents[i];
269274 NSString *ident = [NSString stringWithFormat: @" %zu " , i];
270275
@@ -279,7 +284,7 @@ - (void)updateConfiguration
279284 }
280285 } else {
281286 // iOS 15 Legacy Fallback
282- if (_detents. size () == 1 ) {
287+ if (detentsCount == 1 ) {
283288 double firstDetentFraction = _detents[0 ];
284289 if (firstDetentFraction < 1.0 ) {
285290 [nativeDetents addObject: UISheetPresentationControllerDetent.mediumDetent];
0 commit comments