React Native 0.84 - Hermes V1 domyślnie
Ta strona została przetłumaczona przez PageTurner AI (beta). Nie jest oficjalnie zatwierdzona przez projekt. Znalazłeś błąd? Zgłoś problem →
Z przyjemnością ogłaszamy wydanie React Native 0.84!
Ta wersja ustawia Hermes V1 jako domyślny silnik JavaScript, przynosząc znaczącą poprawę wydajności wszystkim aplikacjom React Native. Kontynuowaliśmy także usuwanie starszej architektury (Legacy Architecture) na iOS i Androidzie oraz domyślnie dostarczamy prekompilowane pliki binarne dla iOS.
Najważniejsze zmiany
Hermes V1 domyślnie
Hermes V1 jest teraz domyślnym silnikiem JavaScript dla React Native na iOS i Androidzie, po wstępnej eksperymentalnej opcji w React Native 0.82.
Hermes V1 reprezentuje kolejny krok w ewolucji silnika Hermes, z znaczącymi ulepszeniami zarówno kompilatora, jak i maszyny wirtualnej (VM), które zapewniają zauważalnie lepszą wydajność JavaScript.
Co to oznacza dla Twojej aplikacji
-
Automatyczny wzrost wydajności: Wszystkie aplikacje będą domyślnie używać Hermes V1, co przyniesie poprawę szybkości wykonania i zmniejszy użycie pamięci.
-
Brak konieczności migracji: Jeśli już używasz Hermes (domyślnie od wersji 0.70), automatycznie otrzymasz Hermes V1. Nie są wymagane żadne zmiany konfiguracji.
Opting out from Hermes V1
Package manager override
Force the installation of the legacy hermes-compiler package in your package.json:
- npm
- yarn
- pnpm
"overrides": { "hermes-compiler": "0.15.0" }
"resolutions": { "hermes-compiler": "0.15.0" }
"pnpm": { "overrides": { "hermes-compiler": "0.15.0" } }
iOS
When installing CocoaPods dependencies, pass the RCT_HERMES_V1_ENABLED=0 and RCT_USE_PREBUILT_RNCORE=0 environment variables.
Android
Add hermesV1Enabled=false inside the android/gradle.properties file, and configure the application to build React Native from source.
Prekompilowane pliki binarne dla iOS domyślnie
React Native 0.84 domyślnie dostarcza prekompilowane pliki binarne dla iOS. Wcześniej dostępne jako opcja do włączenia, teraz są one domyślnie włączone, co znacząco skraca czas budowania aplikacji na iOS.
Oznacza to, że nie musisz już kompilować rdzenia React Native ze źródeł przy każdym czystym budowaniu. Prekompilowane pliki binarne .xcframework są automatycznie pobierane i używane podczas pod install.
Jeśli potrzebujesz zbudować React Native ze źródeł (na przykład, aby zrezygnować z Hermes V1), możesz wyłączyć prekompilowane pliki binarne, ustawiając RCT_USE_PREBUILT_RNCORE=0 podczas instalacji podów.
Usunięto komponenty starszej architektury
Kontynuując pracę rozpoczętą w wersji 0.82 (która uczyniła Nową Architekturę jedyną opcją środowiska uruchomieniowego), React Native 0.84 nadal usuwa kod starszej architektury z iOS i Androida. Jak opisano w RFC, usuwamy kilka klas starszej architektury w każdej wersji.
iOS
W wersji 0.83 wprowadziliśmy eksperymentalną flagę RCT_REMOVE_LEGACY_ARCH do wykluczania kodu starszej architektury. W 0.84 jest to teraz zachowanie domyślne — kod starszej architektury nie jest już uwzględniany w budowaniach na iOS, zmniejszając zarówno czas budowania, jak i rozmiar aplikacji.
Nie spodziewamy się problemów w aplikacjach korzystających już z Nowej Architektury — kod warstwy interoperacyjności (Interop Layer) wymagany dla kompatybilności pozostaje na swoim miejscu.
Re-enabling Legacy Architecture code on iOS
If you need to re-enable Legacy Architecture code in your iOS builds, you'll need to build from source. Install CocoaPods dependencies with the following flags:
RCT_USE_PREBUILT_RNCORE=0 RCT_REMOVE_LEGACY_ARCH=0 bundle exec pod install
Android
Removed Legacy Architecture classes
The following classes have been removed in this release:
com.facebook.react.LazyReactPackage
com.facebook.react.bridge.CxxModuleWrapper
com.facebook.react.bridge.CxxModuleWrapperBase
com.facebook.react.bridge.CallbackImpl
com.facebook.react.bridge.NotThreadSafeBridgeIdleDebugListener
com.facebook.react.bridge.OnBatchCompleteListener
com.facebook.react.bridge.ReactCxxErrorHandler
com.facebook.react.bridge.ReactInstanceManagerInspectorTarget
com.facebook.react.modules.debug.DidJSUpdateUiDuringFrameDetector
com.facebook.react.devsupport.BridgeDevSupportManager
com.facebook.react.uimanager.NativeKind
com.facebook.react.uimanager.debug.NotThreadSafeViewHierarchyUpdateDebugListener
com.facebook.react.uimanager.layoutanimation.LayoutAnimationController
com.facebook.react.uimanager.layoutanimation.LayoutAnimationListener
Wymagany Node.js 22
React Native 0.84 wymaga Node.js v22.11 lub nowszej. Ta zmiana poprawia dostępność nowoczesnych funkcji JavaScript w ekosystemie narzędzi React Native.
Przed aktualizacją upewnij się, że masz aktualną wersję Node.js. Zalecamy używanie menedżera wersji Node, takiego jak nvm lub fnm, do zarządzania wersjami.
Inne zmiany
React 19.2.3
Ta wersja synchronizuje React 19.2.3 z React Native, włączając najnowsze poprawki i ulepszenia od zespołu React.
Konfiguracja płaska ESLint v9
Konfiguracja ESLint w React Native obsługuje teraz konfigurację płaską ESLint v9, co ułatwia przyjęcie najnowszych narzędzi ESLint w twoim projekcie.
Wsparcie dla platform
-
Formaty obrazów: React Native 0.84 zawiera obsługę dodatkowych formatów obrazów (HEIC i HEIF), co ułatwia pracę z nowoczesnymi wyjściami aparatów i bibliotekami obrazów.
-
PlatformColor: Ulepszone testowanie i wsparcie dla
PlatformColorw interpolacjach animowanych i zakresach wyjściowych. -
Zdarzenia klawiatury na Androidzie: Dodano obsługę
onKeyDown/onKeyUpna Androidzie, umożliwiając obsługę zdarzeń klawiatury dla klawiatur sprzętowych i pilotów telewizyjnych.
Dostępność
Komponenty tekstowe z handlerami onPress lub onLongPress otrzymują teraz automatycznie accessibilityRole="link" dla lepszego wsparcia dostępności, zapewniając że czytniki ekranu prawidłowo ogłaszają interaktywne elementy tekstowe.
Na Androidzie wykonano znaczną pracę, aby naprawić problemy ze stanem dostępności w przypadku widoków recyklingowanych — zapewniając że stany isClickable i OnClickListener są prawidłowo resetowane, gdy widoki są recyklingowane, co zapobiega ogłaszaniu przez czytniki ekranu niepoprawnych stanów.
Ulepszenia URL API
Dodano brakujące standardowe właściwości do URL (hash, host, pathname, itp.) i metody do URLSearchParams (get, set, delete, itp.), przybliżając implementację URL w React Native do standardu sieciowego. Naprawiono również problem z duplikującymi się wpisami w URLSearchParams.
Inne zmiany łamiące kompatybilność
iOS
- Naprawiono rzadki crash
EXC_BAD_ACCESSwImageResponseObserverCoordinatorprzez opakowanie obserwatorów w wskaźniki zliczające referencje. To zmienia deklaracje obiektów w API obserwatoraRCTImage, co może wpłynąć na zależne biblioteki, takie jakreact-native-svg.
Android
- Usunięto
BridgeDevSupportManager.
C++
JSBigStringimplementuje terazjsi::Bufferbezpośrednio. PośrednictwoBigStringBufferzostało usunięte (obecnie przestarzałe). Kod, który bezpośrednio dziedziczy poBigStringBufferlub zależy od niego, może wymagać aktualizacji.
JS
- Przestarzałe zakładki Perf i Network zostały usunięte z wbudowanego inspektora elementów, ponieważ te funkcje są teraz dostępne w React Native DevTools.
Przeczytaj pełną listę zmian łamiących kompatybilność w dzienniku zmian dla wersji 0.84.
Przestarzałe funkcje
Ta wersja zawiera dwa oznaczenia przestarzałe:
-
Sieć: Interfejsy API
XHRInterceptoriWebSocketInterceptorsą przestarzałe. Narzędzia deweloperskie powinny zamiast tego używać domenyNetworkprotokołu Chrome DevTools (CDP). -
TurboModules:
TurboModuleProviderFunctionTypejest przestarzałe.
Podziękowania
React Native 0.84 zawiera ponad 650 commitów od 95 współtwórców. Dziękujemy za waszą ciężką pracę!
Chcielibyśmy szczególnie podziękować tym, którzy wnieśli znaczący wkład w tę wersję:
-
Riccardo Cipolleschi za domyślne wstępnie skompilowane pliki binarne na iOS i usunięcie starszej architektury na iOS.
-
Rob Hogan za podniesienie wersji Node.js do 22.
-
Fabrizio Cucci za ulepszenia dostępności na Androidzie.
-
@pipopotamasu za wsparcie dla płaskiej konfiguracji ESLint v9.
Aktualizacja do wersji 0.84
0.84 to obecnie najnowsza stabilna wersja React Native, a wersja 0.81.x przechodzi do stanu nieobsługiwanego. Więcej informacji znajdziesz w polityce wsparcia React Native.
Aktualizacja
Do sprawdzenia zmian kodu między wersjami React Native w istniejących projektach użyj React Native Upgrade Helper, dodatkowo do dokumentacji aktualizacji.
💡 Nowość: Wypróbuj eksperymentalną umiejętność AI
upgrade-react-nativedla projektów Community CLI.
Tworzenie nowego projektu
npx @react-native-community/cli@latest init MyProject --version latest
Expo
W projektach Expo, React Native 0.84 będzie dostępny jako część wydań expo@canary.
Następny SDK, SDK 56, zostanie dostarczony z kolejną stabilną wersją React Native: 0.85.



