Проблемы рендеринга iOS 15, связанные с API измерений

#react-native

Вопрос:

Краткие сведения

Некоторые клиенты, обновившиеся до iOS 15 (выпущено 2021-09-20), испытывают проблемы с визуализацией компонентов, основанных на информации об измерениях окон из useWindowDimensions или Dimensions.get('window') .

Для пользователей iOS 15 после нового запуска приложения useWindowDimensions и Dimensions.get('window') вернет либо 0, либо отрицательное значение. В зависимости от того, как эти API использовались в компоненте, регрессия будет продолжаться до следующего события активного приложения / набора других измерений в лучшем случае, а в худшем случае не сможет быть решена.

Я открыл запрос на вывод с помощью React-Native для отслеживания на GitHub.

Детальный Дизайн

На iOS, RCTDeviceInfo.mm сигнализирует стороне RN об обновлении словаря заданных измерений, если происходят определенные события жизненного цикла iOS, такие как активизация приложения и события доступности.

Я предлагаю добавить еще одного слушателя для RCTContentDidAppearNotification in RCTDeviceInfo.mm. Ниже приведена разница:

 --- node_modules/react-native/React/CoreModules/RCTDeviceInfo.mm
    node_modules/react-native/React/CoreModules/RCTDeviceInfo.mm
@@ -14,6  14,7 @@
 #import <React/RCTEventDispatcher.h>
 #import <React/RCTUIUtils.h>
 #import <React/RCTUtils.h>
 #import <React/RCTRootView.h>
 
 #import "CoreModulesPlugins.h"
 
@@ -71,6  72,11 @@
                                                name:RCTUserInterfaceStyleDidChangeNotification
                                              object:nil];
 
   [[NSNotificationCenter defaultCenter] addObserver:self
                                            selector:@selector(interfaceFrameDidChange)
                                                name:RCTContentDidAppearNotification
                                              object:nil];
 
 #endif
 }
 

RCTContentDidAppearNotification Событие уже генерируется библиотекой iOS React, когда
пакет React Native был инициализирован, и представление компонента корневого приложения может быть добавлено
и отображено в RCTRootView.m представлении «s». Излучение этого события гарантирует, что сторона RN готова
получать события обновления измерений и что компоненты смогут надежно получить
ожидаемое значение размера окна.

Вопрос

Сколько других сталкивались с этой проблемой и каково было ваше решение/обходной путь для предотвращения проблем с отображением iOS 15, когда контент либо был «раздавлен», либо вообще не отображался?