Skip to content

Upgrading react-native 0.80 to 0.81

Unknown0.80.3 → 0.81.6New2Changed1Fixed24

UnknownUpgrade verdict

67 of 79 releases publish no notes, so breaking changes can't be ruled out.

  • Some releases in this range publish no notes, so DepDelta can't rule out breaking changes.
  • DepDelta found no commit log for them either.
Unknown for releases without notes

Releases without notes may still need changes. Check their commits before upgrading.

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

Upgrade Helper ↗

Node.js requirement changed in 0.81.0-rc.3: >=18 → >= 20.19.4.

Adds @jest/create-cache-key-function ^29.7.0, @react-native/assets-registry 0.81.6, @react-native/codegen 0.81.6, @react-native/community-cli-plugin 0.81.6, @react-native/gradle-plugin 0.81.6, @react-native/js-polyfills 0.81.6, @react-native/normalize-colors 0.81.6, @react-native/virtualized-lists 0.81.6, abort-controller ^3.0.0, anser ^1.4.9, ansi-regex ^5.0.0, babel-jest ^29.7.0, babel-plugin-syntax-hermes-parser 0.29.1, base64-js ^1.5.1, commander ^12.0.0, flow-enums-runtime ^0.0.6, glob ^7.1.1, invariant ^2.2.4, jest-environment-node ^29.7.0, memoize-one ^5.0.0, metro-runtime ^0.83.1, metro-source-map ^0.83.1, nullthrows ^1.1.1, pretty-format ^29.7.0, promise ^8.3.0, react-devtools-core ^6.1.5, react-refresh ^0.14.0, regenerator-runtime ^0.13.2, scheduler 0.26.0, semver ^7.1.3, stacktrace-parser ^0.1.10, whatwg-fetch ^3.0.0, ws ^6.2.3, yargs ^17.6.2.

Installs 300 packages in all (was 0).

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

  • changed: property ScrollViewProps.onContentSizeChange?: ((w: number, h: number) => void) | undefined → property ScrollViewProps.onContentSizeChange?: | ((contentWidth: number, contentHeight: number) => void) | undefined
  • changed: property ScrollViewPropsAndroid.fadingEdgeLength?: number | undefined → property ScrollViewPropsAndroid.fadingEdgeLength?: number | { start: number; end: number } | undefined
  • added: property ScrollView.getNativeScrollRef: () => HostInstance | null
  • added: property ScrollViewProps.innerViewRef?: React.RefObject<View> | undefined
  • added: property ScrollViewProps.scrollViewRef?: React.RefObject<ScrollView> | undefined
  • changed: property TextInputProps.onBlur?: ((e: TextInputFocusEvent) => void) | undefined → property TextInputProps.onBlur?: ((e: BlurEvent) => void) | undefined
  • changed: property TextInputProps.onFocus?: ((e: TextInputFocusEvent) => void) | undefined → property TextInputProps.onFocus?: ((e: FocusEvent) => void) | undefined
  • added: property ViewPropsAndroid.onBlur?: ((e: BlurEvent) => void) | null | undefined
  • added: property ViewPropsAndroid.onFocus?: ((e: FocusEvent) => void) | null | undefined
  • added: type ImageSource = ImageRequireSource | ImageURISource | ReadonlyArray<ImageURISource>
  • changed: property FlatListProps.fadingEdgeLength?: number | undefined → property FlatListProps.fadingEdgeLength?: number | { start: number; end: number } | undefined
  • added: property ModalPropsIOS.allowSwipeDismissal?: boolean | undefined
  • added: const unstable_TextAncestorContext: React.Context<boolean>
  • added: property TextProps.pressRetentionOffset?: | { top: number; left: number; bottom: number; right: number } | undefined
  • added: type BlurEvent = NativeSyntheticEvent<TargetedEvent>
  • added: type FocusEvent = NativeSyntheticEvent<TargetedEvent>
  • removed: interface ExtendedError extends Error
  • removed: property ExtendedError.framesToPop?: number | undefined
  • changed: default function parseErrorStack(error: ExtendedError): StackFrame[] → default function parseErrorStack(errorStack?: string): StackFrame[]
  • changed: type StackFrame = { file: string; methodName: string; lineNumber: number; column: number | null } → type StackFrame = { column: number | null | undefined; file: string | null | undefined; lineNumber: number | null | undefined; methodName: string }
  • changed: default function symbolicateStackTrace(stack: ReadonlyArray<StackFrame>, extraData?: any): Promise<StackFrame[]> → default function symbolicateStackTrace(stack: ReadonlyArray<StackFrame>, extraData?: any): Promise<SymbolicatedStackTrace>
  • added: type CodeFrame = Readonly<{ content: string; location: | { row: number; column: number; [key: string]: any } | null | undefined; fileName: string }>
  • added: type SymbolicatedStackTrace = Readonly<{ stack: ReadonlyArray<StackFrame>; codeFrame: CodeFrame | null | undefined }>
  • removed: function attachNativeEvent(viewRef: any, eventName: string, argMapping: ReadonlyArray<null | undefined | Mapping>, platformConfig: null | undefined | PlatformConfig): { detach: () => void }
  • added: function attachNativeEventImpl(viewRef: any, eventName: string, argMapping: ReadonlyArray<null | undefined | Mapping>, platformConfig: null | undefined | PlatformConfig): { detach: () => void }
  • added: export { DecayAnimationConfig } from './animations/DecayAnimation'
  • added: export { InterpolationConfigType as InterpolationConfig } from './nodes/AnimatedInterpolation'
  • added: export { SpringAnimationConfig } from './animations/SpringAnimation'
  • added: export { TimingAnimationConfig } from './animations/TimingAnimation'
  • changed: const $$AnimatedText: AnimatedComponentType<React.JSX.LibraryManagedAttributes<typeof Text, React.ComponentProps<typeof Text>>, React.ComponentRef<typeof Text>> → const $$AnimatedText: AnimatedComponentType<TextProps, React.ComponentRef<typeof Text>>
  • changed: const $$AnimatedView: AnimatedComponentType<React.JSX.LibraryManagedAttributes<typeof View, React.ComponentProps<typeof View>>, React.ComponentRef<typeof View>> → const $$AnimatedView: AnimatedComponentType<ViewProps, React.ComponentRef<typeof View>>
  • changed: constructor AnimatedStyle(nodeKeys: ReadonlyArray<string>, nodes: ReadonlyArray<AnimatedNode>, style: { [$$Key$$: string]: unknown }, inputStyle: any, config?: null | undefined | AnimatedNodeConfig) → constructor AnimatedStyle(nodeKeys: ReadonlyArray<string>, nodes: ReadonlyArray<AnimatedNode>, style: { [$$Key$$: string]: unknown }, originalStyleForWeb: null | undefined | unknown, config?: null | undefined | AnimatedNodeConfig)
  • changed: static method AnimatedStyle.from(inputStyle: any, allowlist: null | undefined | AnimatedStyleAllowlist): null | undefined | AnimatedStyle → static method AnimatedStyle.from(flatStyle: null | undefined | FlatStyle, allowlist: null | undefined | AnimatedStyleAllowlist, originalStyleForWeb: null | undefined | unknown): null | undefined | AnimatedStyle
  • changed: const $$ActivityIndicator: typeof ActivityIndicatorWithRef → const $$ActivityIndicator: typeof ActivityIndicator
  • removed: const $$ProgressBarAndroidNativeComponent: typeof ProgressBarAndroidNativeComponent
  • removed: default $$ProgressBarAndroidNativeComponent
  • removed: type $$ProgressBarAndroidNativeComponent = typeof $$ProgressBarAndroidNativeComponent
  • added: export { default } from '../../../src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent'
  • changed: const $$SafeAreaView: typeof exported → const $$SafeAreaView: typeof SafeAreaView
  • changed: type ScrollViewProps = Readonly<Omit<ViewProps, keyof ScrollViewPropsIOS | keyof ScrollViewPropsAndroid | keyof ScrollViewBaseProps | keyof {}> & Omit<ScrollViewPropsIOS, keyof Scrol… → type ScrollViewProps = Readonly<Omit<Omit<ViewProps, 'experimental_accessibilityOrder'>, keyof ScrollViewPropsIOS | keyof ScrollViewPropsAndroid | keyof ScrollViewBaseProps | keyof {…
  • changed: const $$ScrollViewStickyHeader: typeof ScrollViewStickyHeaderWithForwardedRef → const $$ScrollViewStickyHeader: typeof ScrollViewStickyHeader
  • removed: const $$AndroidSwitchNativeComponent: typeof AndroidSwitchNativeComponent
  • removed: default $$AndroidSwitchNativeComponent
  • removed: type $$AndroidSwitchNativeComponent = typeof $$AndroidSwitchNativeComponent
  • added: export { default } from '../../../src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent'
  • removed: const $$SwitchNativeComponent: typeof SwitchNativeComponent
  • removed: default $$SwitchNativeComponent
  • removed: type $$SwitchNativeComponent = typeof $$SwitchNativeComponent
  • added: export { default } from '../../../src/private/specs_DEPRECATED/components/SwitchNativeComponent'
  • added: export { BlurEvent }
  • added: export { FocusEvent }
  • changed: type TextInputBlurEvent = NativeSyntheticEvent<TextInputFocusEventData> → type TextInputBlurEvent = BlurEvent
  • changed: type TextInputFocusEvent = NativeSyntheticEvent<TextInputFocusEventData> → type TextInputFocusEvent = FocusEvent
  • changed: type TextInputProps = Readonly<Omit<Omit<ViewProps, 'style'>, keyof TextInputIOSProps | keyof TextInputAndroidProps | keyof TextInputBaseProps | keyof {}> & Omit<TextInputIOSProps,… → type TextInputProps = Readonly<Omit<Omit<ViewProps, 'style' | 'experimental_accessibilityOrder'>, keyof TextInputIOSProps | keyof TextInputAndroidProps | keyof TextInputBaseProps |…
  • changed: type TouchableNativeFeedbackProps = Readonly<Omit<TouchableWithoutFeedbackProps, keyof TVProps | keyof { background?: (Readonly<{ type: 'ThemeAttrAndroid'; attribute: 'selectableItemBackground' |… → type TouchableNativeFeedbackProps = Readonly<Omit<TouchableWithoutFeedbackProps, keyof TouchableNativeFeedbackTVProps | keyof { background?: (Readonly<{ type: 'ThemeAttrAndroid'; attribute: 'sele…
  • removed: type TVProps = Readonly<{ hasTVPreferredFocus?: boolean | undefined; nextFocusDown?: number | undefined; nextFocusForward?: number | undefined; nextFocusLeft?: number | undef…
  • changed: type TouchableOpacityProps = Readonly<Omit<TouchableWithoutFeedbackProps, keyof TVProps | keyof TouchableOpacityBaseProps | keyof {}> & Omit<TVProps, keyof TouchableOpacityBaseProps | keyo… → type TouchableOpacityProps = Readonly<Omit<TouchableWithoutFeedbackProps, keyof TouchableOpacityTVProps | keyof TouchableOpacityBaseProps | keyof {}> & Omit<TouchableOpacityTVProps, keyof…
  • added: type TouchableOpacityTVProps = Readonly<{ hasTVPreferredFocus?: boolean | undefined; nextFocusDown?: number | undefined; nextFocusForward?: number | undefined; nextFocusLeft?: number | undef…
  • removed: type Props = ViewProps
  • changed: class NativeEventEmitter<TEventToArgsMap extends Readonly<Record<string, ReadonlyArray<UnsafeObject>>> = Readonly<Record<string, ReadonlyArray<UnsafeObject>>>> implements IEventEmitter<TEventToArgsMap> → class NativeEventEmitter<TEventToArgsMap extends Readonly<Record<string, ReadonlyArray<UnsafeNativeEventObject>>> = Readonly<Record<string, ReadonlyArray<UnsafeNativeEventObject>>>> implements IEventEmitter<TEventToArgsMap>
  • removed: type LayoutAnimationConfig = LayoutAnimationConfig_
  • added: export { LayoutAnimationConfig } from '../Renderer/shims/ReactNativeTypes'
  • changed: type SectionListProps<ItemT, SectionT = DefaultSectionT> = Omit<Omit<VirtualizedSectionListProps<ItemT, SectionT>, 'getItem' | 'getItemCount' | 'renderItem' | 'keyExtractor'>, keyof RequiredProps<ItemT, SectionT> | key… → type SectionListProps<ItemT, SectionT = DefaultSectionT> = Omit<Omit<VirtualizedSectionListProps<ItemT, SectionT>, 'getItem' | 'getItemCount' | 'renderItem' | 'keyExtractor'>, keyof RequiredSectionListProps<ItemT, Sect…
  • changed: const $$VirtualizedList: typeof VirtualizedList → const $$VirtualizedList: typeof VirtualizedListComponent
  • changed: type TaskProvider = () => Task → type TaskProvider = () => HeadlessTask
  • changed: type PublicTextInstance = ReturnType<createPublicTextInstance> → type PublicTextInstance = ReturnType<createPublicTextInstanceT>
  • changed: type AttributeConfiguration = Readonly<{ [propName: string]: AnyAttributeType; style: Readonly<{ [propName: string]: AnyAttributeType }> }> → type AttributeConfiguration = Readonly<{ [propName: string]: AnyAttributeType; style?: Readonly<{ [propName: string]: AnyAttributeType }> }>
  • changed: type ReactFabricType = { findHostInstance_DEPRECATED<TElementType extends ElementType>(componentOrHandle: (ElementRef<TElementType> | number) | undefined): PublicInstance | undefined… → type ReactFabricType = { findHostInstance_DEPRECATED<TElementType extends ElementType>(componentOrHandle: (React.ComponentRef<TElementType> | number) | undefined): PublicInstance | u…
  • changed: type ReactNativeType = { findHostInstance_DEPRECATED<TElementType extends ElementType>(componentOrHandle: (ElementRef<TElementType> | number) | undefined): PublicInstance | undefined… → type ReactNativeType = { findHostInstance_DEPRECATED<TElementType extends ElementType>(componentOrHandle: (React.ComponentRef<TElementType> | number) | undefined): PublicInstance | u…
  • added: const $$TextAncestorContext: typeof TextAncestorContext
  • added: default $$TextAncestorContext
  • added: type $$TextAncestorContext = typeof $$TextAncestorContext
  • changed: type TextProps = Readonly<Omit<PointerEventProps, keyof TextPropsIOS | keyof TextPropsAndroid | keyof TextBaseProps | keyof AccessibilityProps | keyof {}> & Omit<TextPropsIOS,… → type TextProps = Readonly<Omit<TextPointerEventProps, keyof TextPropsIOS | keyof TextPropsAndroid | keyof TextBaseProps | keyof AccessibilityProps | keyof {}> & Omit<TextPropsI…
  • removed: const $$NativeDeviceInfo: typeof NativeDeviceInfo
  • removed: default $$NativeDeviceInfo
  • removed: type $$NativeDeviceInfo = typeof $$NativeDeviceInfo
  • added: export { default } from '../../src/private/specs_DEPRECATED/modules/NativeDeviceInfo'
  • changed: const $$Platform: Platform → const $$Platform: PlatformType
  • removed: type Platform = IOSPlatform | AndroidPlatform | WindowsPlatform | MacOSPlatform | WebPlatform
  • added: type PlatformType = IOSPlatform | AndroidPlatform | WindowsPlatform | MacOSPlatform | WebPlatform
  • changed: type NativeComponentType<T> = HostComponent<T> → type NativeComponentType<T extends {}> = HostComponent<T>
  • changed: class EventEmitter<TEventToArgsMap extends Readonly<Record<string, ReadonlyArray<UnsafeObject>>> = Readonly<Record<string, ReadonlyArray<UnsafeObject>>>> implements IEventEmitter<TEventToArgsMap> → class EventEmitter<TEventToArgsMap extends Readonly<Record<string, ReadonlyArray<UnsafeEventObject>>> = Readonly<Record<string, ReadonlyArray<UnsafeEventObject>>>> implements IEventEmitter<TEventToArgsMap>
  • changed: interface IEventEmitter<TEventToArgsMap extends Readonly<Record<string, ReadonlyArray<UnsafeObject>>>> → interface IEventEmitter<TEventToArgsMap extends Readonly<Record<string, ReadonlyArray<UnsafeEventObject>>>>
  • added: export { ModeChangeEvent } from './src/private/components/virtualview/VirtualView'
  • added: export { ScrollViewImperativeMethods } from './Libraries/Components/ScrollView/ScrollView'
  • added: export { ScrollViewScrollToOptions } from './Libraries/Components/ScrollView/ScrollView'
  • added: export { VirtualViewMode } from './src/private/components/virtualview/VirtualView'
  • added: export { default as unstable_TextAncestorContext } from './Libraries/Text/TextAncestorContext'
  • added: export { default as unstable_VirtualView } from './src/private/components/virtualview/VirtualView'
  • added: const $$VirtualView: VirtualViewComponent
  • added: const _logs: { states?: Array<State> }
  • added: default $$VirtualView
  • added: enum VirtualViewMode
  • added: enum VirtualViewRenderState
  • added: function VirtualViewMode.cast(value: number | null | undefined): VirtualViewMode
  • added: function VirtualViewMode.getName(value: VirtualViewMode): string
  • added: function VirtualViewMode.isValid(value: number | null | undefined): value is VirtualViewMode
  • added: function VirtualViewMode.members(): IterableIterator<VirtualViewMode>
  • added: function VirtualViewRenderState.cast(value: number | null | undefined): VirtualViewRenderState
  • added: function VirtualViewRenderState.getName(value: VirtualViewRenderState): string
  • added: function VirtualViewRenderState.isValid(value: number | null | undefined): value is VirtualViewRenderState
  • added: function VirtualViewRenderState.members(): IterableIterator<VirtualViewRenderState>
  • added: function createHiddenVirtualView(height: number): VirtualViewComponent
  • added: member VirtualViewMode.Hidden = 2
  • added: member VirtualViewMode.Prerender = 1
  • added: member VirtualViewMode.Visible = 0
  • added: member VirtualViewRenderState.None = 2
  • added: member VirtualViewRenderState.Rendered = 1
  • added: member VirtualViewRenderState.Unknown = 0
  • added: namespace VirtualViewMode
  • added: namespace VirtualViewRenderState
  • added: type $$VirtualView = typeof $$VirtualView
  • added: type ModeChangeEvent = Readonly<Omit<Omit<NativeModeChangeEvent, 'mode'>, keyof { mode: VirtualViewMode; target: ReadOnlyElement }> & { mode: VirtualViewMode; target: ReadOnlyElement…
  • added: type Rect = Readonly<{ x: number; y: number; width: number; height: number }>
  • added: type _logs = typeof _logs
  • added: const $$VirtualViewNativeComponent: HostComponent<VirtualViewNativeProps>
  • added: default $$VirtualViewNativeComponent
  • added: type $$VirtualViewNativeComponent = typeof $$VirtualViewNativeComponent
  • added: type NativeModeChangeEvent = Readonly<{ mode: Int32; targetRect: Readonly<{ x: Double; y: Double; width: Double; height: Double }>; thresholdRect: Readonly<{ x: Double; y: Double; width: D…
  • changed: const $$ProgressBarAndroidNativeComponent: HostComponent<NativeProps> → const $$ProgressBarAndroidNativeComponent: HostComponent<AndroidProgressBarNativeProps>
  • changed: type DeviceInfoConstants = { readonly Dimensions: DimensionsPayload; readonly isIPhoneX_deprecated?: boolean } → type DeviceInfoConstants = { readonly Dimensions: DimensionsPayload; readonly isEdgeToEdge?: boolean; readonly isIPhoneX_deprecated?: boolean }
  • removed: type MeasureInWindowOnSuccessCallback = (x: number, y: number, width: number, height: number) => void
  • removed: type MeasureLayoutOnSuccessCallback = (left: number, top: number, width: number, height: number) => void
  • removed: type MeasureOnSuccessCallback = (x: number, y: number, width: number, height: number, pageX: number, pageY: number) => void
  • changed: readonly property Spec.measure: (reactTag: number, callback: MeasureOnSuccessCallback) => void → readonly property Spec.measure: (reactTag: number, callback: NativeMeasureOnSuccessCallback) => void
  • changed: readonly property Spec.measureInWindow: (reactTag: number, callback: MeasureInWindowOnSuccessCallback) => void → readonly property Spec.measureInWindow: (reactTag: number, callback: NativeMeasureInWindowOnSuccessCallback) => void
  • changed: readonly property Spec.measureLayout: (reactTag: number, ancestorReactTag: number, errorCallback: (error: Object) => void, callback: MeasureLayoutOnSuccessCallback) => void → readonly property Spec.measureLayout: (reactTag: number, ancestorReactTag: number, errorCallback: (error: Object) => void, callback: NativeMeasureLayoutOnSuccessCallback) => void
  • added: type NativeMeasureInWindowOnSuccessCallback = (x: number, y: number, width: number, height: number) => void
  • added: type NativeMeasureLayoutOnSuccessCallback = (left: number, top: number, width: number, height: number) => void
  • added: type NativeMeasureOnSuccessCallback = (x: number, y: number, width: number, height: number, pageX: number, pageY: number) => void
  • changed: function composeStyles<T extends ViewStyle | ImageStyle | TextStyle, U extends T, V extends T>(style1: null | undefined | StyleProp<U>, style2: null | undefined | StyleProp<V>): null | undefined | StyleProp<T> → function composeStyles<T, U extends T, V extends T>(style1: null | undefined | U, style2: null | undefined | V): null | undefined | (T | ReadonlyArray<T>)
  • added: function getRawNativeDOMForTests(): null | undefined | Spec
  • added: readonly property RefinedSpec.setNativeProps: (nativeElementReference: NativeElementReference, updatePayload: {}) => void
  • added: readonly property Spec.setNativeProps?: (nativeElementReference: unknown, updatePayload: unknown) => void