Upgrading react-native 0.80 to 0.81
Unknown0.80.3 → 0.81.6New2Changed1Fixed24
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.
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).
API changes
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