Upgrading react-native 0.73 to 0.74
Breaking0.73.11 → 0.74.7Breaking8Deprecated1New20Changed17Fixed70Other3
BreakingUpgrade verdict
8 breaking changes.
In plain terms
- 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.
Must act 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).
What you must change
Breaking8
Removes the deprecated onTextInput callback on Android.
onTextInputImplements onKeyLongPress in Bridgeless mode.
onKeyLongPressImplements onKeyDown in Bridgeless mode.
onKeyDownImplements onConfigurationChanged in Bridgeless mode.
onConfigurationChangedImplements onNewIntent in Bridgeless mode.
onNewIntentImplements onWindowFocusChange in Bridgeless mode.
onWindowFocusChangeImplements getJSCallInvokerHolder() for Bridgeless Catalyst Instance on Android.
getJSCallInvokerHolder()Moves PopupMenu out of React Native core on Android.
PopupMenuDeprecations to plan for
Deprecated1
Deprecates getSurfacePresenter and getModuleRegistry in favor of the surfacePresenter and moduleRegistry props on iOS.
getSurfacePresentergetModuleRegistrysurfacePresentermoduleRegistryAPI changes
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