Skip to content

Upgrading react-native 0.73 to 0.74

Breaking0.73.11 → 0.74.7Breaking8Deprecated1New20Changed17Fixed70Other3

BreakingUpgrade verdict

8 breaking changes.

  • Android no longer supports the old onTextInput callback, so code that relies on it must switch to the supported text input handling.
  • Android keyboard long-press events now work in the new architecture.
  • Android key-down events now work in the new architecture.
  • Android configuration change events now work in the new architecture.
Top 4 of 9 that need code or config changes

react-native publishes an official migration guide for version 0.74. It covers more than the release notes do.

Upgrade helper ↗

Adds glob ^7.1.1.

Drops deprecated-react-native-prop-types.

Installs 537 packages in all (was 520).

Breaking8
Removes the deprecated onTextInput callback on Android.
onTextInput
Implements onKeyLongPress in Bridgeless mode.
onKeyLongPress
Implements onKeyDown in Bridgeless mode.
onKeyDown
Implements onConfigurationChanged in Bridgeless mode.
onConfigurationChanged
Implements onNewIntent in Bridgeless mode.
onNewIntent
Implements onWindowFocusChange in Bridgeless mode.
onWindowFocusChange
Implements getJSCallInvokerHolder() for Bridgeless Catalyst Instance on Android.
getJSCallInvokerHolder()
Moves PopupMenu out of React Native core on Android.
PopupMenu
Deprecated1
Deprecates getSurfacePresenter and getModuleRegistry in favor of the surfacePresenter and moduleRegistry props on iOS.
getSurfacePresentergetModuleRegistrysurfacePresentermoduleRegistry

Generated by DepDelta from published .d.ts files. Not mixed with prose notes.

  • added: property ActionSheetIOSStatic.dismissActionSheet: () => void
  • added: property TextInputAndroidProps.selectionHandleColor?: ColorValue | null | undefined
  • added: property TextInputProps.onPress?: ((e: NativeSyntheticEvent<NativeTouchEvent>) => void) | undefined
  • removed: property AccessibilityProps.'aria-labelledby'?: string | undefined
  • removed: property AccessibilityProps.'aria-live'?: ('polite' | 'assertive' | 'off') | undefined
  • added: property AccessibilityPropsAndroid.'aria-labelledby'?: string | undefined
  • added: property AccessibilityPropsAndroid.'aria-live'?: ('polite' | 'assertive' | 'off') | undefined
  • removed: property ViewPropsAndroid.needsOffscreenAlphaCompositing?: boolean | undefined
  • changed: property ViewProps.hitSlop?: Insets | undefined → property ViewProps.hitSlop?: null | Insets | number | undefined
  • added: property ViewProps.needsOffscreenAlphaCompositing?: boolean | undefined
  • added: property ViewPropsAndroid.tabIndex?: 0 | -1 | undefined
  • added: const registerCallableModule: RegisterCallableModule
  • changed: property ImagePropsBase.defaultSource?: ImageURISource | number | undefined → property ImagePropsBase.defaultSource?: ImageURISource | ImageRequireSource | undefined
  • changed: property FlatListProps.onViewableItemsChanged?: | ((info: { viewableItems: Array<ViewToken>; changed: Array<ViewToken> }) => void) | null | undefined → property FlatListProps.onViewableItemsChanged?: | ((info: { viewableItems: Array<ViewToken<ItemT>>; changed: Array<ViewToken<ItemT>> }) => void) | null | undefined
  • changed: interface SectionListProps<ItemT, SectionT = DefaultSectionT> extends VirtualizedListWithoutRenderItemProps<ItemT> → interface SectionListProps<ItemT, SectionT = DefaultSectionT> extends VirtualizedListWithoutPreConfiguredProps<ItemT>
  • removed: method UIManagerStatic.setLayoutAnimationEnabledExperimental(value: boolean): void
  • removed: method UIManagerStatic.showPopupMenu(node: number, items: string[], error: () => void, success: (item: string, index: number | undefined) => void): void
  • removed: property UIManagerStatic.takeSnapshot: (view?: 'window' | React.ReactElement | number, options?: { width?: number | undefined; height?: number | undefined; format?: 'png' | 'jpeg' | undefined; quality?: number | undefined }) => Promise<string>
  • added: property UIManagerStatic.setLayoutAnimationEnabledExperimental?: | ((value: boolean) => void) | undefined
  • added: property UIManagerStatic.showPopupMenu?: | ((node: number, items: string[], error: () => void, success: (item: string, index: number | undefined) => void) => void) | undefined
  • changed: property FlexStyle.alignContent?: | 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'space-between' | 'space-around' | undefined → property FlexStyle.alignContent?: | 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'space-between' | 'space-around' | 'space-evenly' | undefined
  • changed: property FlexStyle.position?: 'absolute' | 'relative' | undefined → property FlexStyle.position?: 'absolute' | 'relative' | 'static' | undefined
  • changed: property TextStyle.fontWeight?: | 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | undefined → property TextStyle.fontWeight?: | 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 'ultralight' | 'thin' | 'light' | 'medium' | 'regular' | 'semibold' | 'condensedBold' | 'condensed' | 'heavy' | 'black' | undefined
  • changed: property TransformsStyle.transform?: | Readonly<MaximumOneOf<PerpectiveTransform & RotateTransform & RotateXTransform & RotateYTransform & RotateZTransform & ScaleTransform & ScaleXTransform & ScaleYTransform & TranslateXTransform & TranslateYTransform & SkewXTransform & SkewYTransform & MatrixTransform>[]> | string | undefined → property TransformsStyle.transform?: | Readonly<MaximumOneOf<PerspectiveTransform & RotateTransform & RotateXTransform & RotateYTransform & RotateZTransform & ScaleTransform & ScaleXTransform & ScaleYTransform & TranslateXTransform & TranslateYTransform & SkewXTransform & SkewYTransform & MatrixTransform>[]> | string | undefined
  • changed: type FontVariant = 'small-caps' | 'oldstyle-nums' | 'lining-nums' | 'tabular-nums' | 'proportional-nums' | 'common-ligatures' | 'no-common-ligatures' | 'discretionary-ligatures'… → type FontVariant = 'small-caps' | 'oldstyle-nums' | 'lining-nums' | 'tabular-nums' | 'common-ligatures' | 'no-common-ligatures' | 'discretionary-ligatures' | 'no-discretionary-li…
  • added: property ImageStyle.cursor?: CursorValue | undefined
  • added: property ViewStyle.cursor?: CursorValue | undefined
  • added: type CursorValue = 'auto' | 'pointer'
  • added: export * from '../Libraries/Core/registerCallableModule'
  • added: method WebSocket.ping(): void