Skip to content

Upgrading react-native 0.72 to 0.73

Breaking0.72.17 → 0.73.11Breaking2Security1New4Changed10Fixed49Other1

BreakingUpgrade verdict

2 breaking changes and a security fix.

  • On iOS, the setting that controls building Hermes from source has a new name, so existing build configurations using the old name need updating.
  • On Android, the old text input event callbacks are no longer fired.
  • The command-line tool used to create and manage React Native projects is updated to a newer version.
3 items need code or config changes

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

Upgrade helper ↗

Node.js requirement changed in 0.73.0-nightly-20230622-0201e51bb: >=16 → >=18.

Adds @react-native/community-cli-plugin 0.73.18, chalk ^4.0.0.

Drops use-sync-external-store.

Installs 520 packages in all (was 522).

Also installs @babel/plugin-transform-private-methods, @babel/plugin-transform-private-property-in-object, @isaacs/ttlcache, @react-native/babel-plugin-codegen, @react-native/babel-preset, @react-native/debugger-frontend, @react-native/dev-middleware, @react-native/metro-babel-transformer, chrome-launcher, chromium-edge-launcher, exponential-backoff, is-docker, lighthouse-logger, marky, temp-dir.

No longer installs @babel/plugin-syntax-class-properties, @babel/plugin-transform-block-scoped-functions, @babel/plugin-transform-for-of, @babel/plugin-transform-member-expression-literals, @babel/plugin-transform-object-super, @babel/plugin-transform-property-literals, @babel/plugin-transform-template-literals, async, babel-plugin-syntax-trailing-function-commas, babel-preset-fbjs, jest-regex-util, metro-inspector-proxy, metro-minify-uglify, metro-react-native-babel-preset, metro-react-native-babel-transformer and 1 more.

Moves @jest/types 26.6.2, 27.5.1, 29.6.3 → 26.6.2, 29.6.3, @react-native-community/cli 11.4.1 → 12.3.7, @react-native-community/cli-clean 11.4.1 → 12.3.7, @react-native-community/cli-config 11.4.1 → 12.3.7, @react-native-community/cli-debugger-ui 11.4.1 → 12.3.7, @react-native-community/cli-doctor 11.4.1 → 12.3.7, @react-native-community/cli-hermes 11.4.1 → 12.3.7, @react-native-community/cli-platform-android 11.4.1 → 12.3.7, @react-native-community/cli-platform-ios 11.4.1 → 12.3.7, @react-native-community/cli-plugin-metro 11.4.1 → 12.3.7, @react-native-community/cli-server-api 11.4.1 → 12.3.7, @react-native-community/cli-tools 11.4.1 → 12.3.7, @react-native-community/cli-types 11.4.1 → 12.3.7, @react-native/assets-registry 0.72.0 → 0.73.1, @react-native/codegen 0.72.8 → 0.73.3 and 32 more. Your build may pick other versions.

Breaking2
Renames the iOS build flag BUILD_FROM_SOURCE to RCT_BUILD_HERMES_FROM_SOURCE.
BUILD_FROM_SOURCERCT_BUILD_HERMES_FROM_SOURCE
Stops emitting deprecated onTextInput events on Android.
onTextInput
Security1
Updates the React Native CLI to 12.3.6.

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

  • changed: property TextInputIOSProps.textContentType?: | 'none' | 'URL' | 'addressCity' | 'addressCityAndState' | 'addressState' | 'countryName' | 'creditCardNumber' | 'emailAddress' | 'familyName' | 'fullStreetAddress' | 'givenName' | 'jobTitle' | 'location' | 'middleName' | 'name' | 'namePrefix' | 'nameSuffix' | 'nickname' | 'organizationName' | 'postalCode' | 'streetAddressLine1' | 'streetAddressLine2'… → property TextInputIOSProps.textContentType?: | 'none' | 'URL' | 'addressCity' | 'addressCityAndState' | 'addressState' | 'countryName' | 'creditCardNumber' | 'creditCardExpiration' | 'creditCardExpirationMonth' | 'creditCardExpirationYear' | 'creditCardSecurityCode' | 'creditCardType' | 'creditCardName' | 'creditCardGivenName' | 'creditCardMiddleName' | 'creditCardFamilyName' | 'emailAddress' | '…
  • changed: property TextInputProps.autoComplete?: | 'additional-name' | 'address-line1' | 'address-line2' | 'birthdate-day' | 'birthdate-full' | 'birthdate-month' | 'birthdate-year' | 'cc-csc' | 'cc-exp' | 'cc-exp-day' | 'cc-exp-month' | 'cc-exp-year' | 'cc-number' | 'country' | 'current-password' | 'email' | 'family-name' | 'gender' | 'given-name' | 'honorific-prefix' | 'honorific-suffix' | 'name' | 'name-… → property TextInputProps.autoComplete?: | 'additional-name' | 'address-line1' | 'address-line2' | 'birthdate-day' | 'birthdate-full' | 'birthdate-month' | 'birthdate-year' | 'cc-csc' | 'cc-exp' | 'cc-exp-day' | 'cc-exp-month' | 'cc-exp-year' | 'cc-number' | 'cc-name' | 'cc-given-name' | 'cc-middle-name' | 'cc-family-name' | 'cc-type' | 'country' | 'current-password' | 'email' | 'family-name' | 'ge…
  • added: property TextInput.setSelection: (start: number, end: number) => void
  • added: property TextInputIOSProps.smartInsertDelete?: boolean | undefined
  • added: property TextInputProps.readOnly?: boolean | undefined
  • changed: property ImagePropsBase.source: ImageSourcePropType → property ImagePropsBase.source?: ImageSourcePropType | undefined
  • changed: property FlatListProps.viewabilityConfig?: any | undefined → property FlatListProps.viewabilityConfig?: ViewabilityConfig | undefined
  • removed: function AppRegistry.registerHeadlessTask(appKey: string, task: TaskProvider): void
  • removed: type ShareDismissedAction = { action: 'dismissedAction' }
  • removed: type ShareSharedAction = { action: 'sharedAction'; activityType?: string | undefined }
  • changed: type ShareAction = ShareSharedAction | ShareDismissedAction → type ShareAction = { action: 'sharedAction' | 'dismissedAction'; activityType?: string | null | undefined }
  • changed: function StyleSheet.create<T extends NamedStyles<T> | NamedStyles<any>>(styles: T | NamedStyles<T>): T → function StyleSheet.create<T extends NamedStyles<T> | NamedStyles<any>>(styles: T & NamedStyles<any>): T
  • removed: property TextStyle.testID?: string | undefined
  • changed: property TransformsStyle.transform?: | (| PerpectiveTransform | RotateTransform | RotateXTransform | RotateYTransform | RotateZTransform | ScaleTransform | ScaleXTransform | ScaleYTransform | TranslateXTransform | TranslateYTransform | SkewXTransform | SkewYTransform | MatrixTransform)[] | string | undefined → property TransformsStyle.transform?: | Readonly<MaximumOneOf<PerpectiveTransform & 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' → type FontVariant = 'small-caps' | 'oldstyle-nums' | 'lining-nums' | 'tabular-nums' | 'proportional-nums' | 'common-ligatures' | 'no-common-ligatures' | 'discretionary-ligatures'…
  • added: property TextStyle.userSelect?: 'auto' | 'none' | 'text' | 'contain' | 'all' | undefined
  • added: property TransformsStyle.transformOrigin?: Array<string | number> | string | undefined
  • removed: property TextPropsIOS.minimumFontScale?: number | undefined
  • added: property TextProps.minimumFontScale?: number | undefined
  • changed: interface NativeSyntheticEvent<T> extends React.BaseSyntheticEvent<T, NodeHandle, NodeHandle> → interface NativeSyntheticEvent<T> extends React.BaseSyntheticEvent<T, React.ElementRef<HostComponent<unknown>>, React.ElementRef<HostComponent<unknown>>>
  • added: interface ViewProps
  • added: property FlexStyle.inset?: DimensionValue | undefined
  • added: property FlexStyle.insetBlock?: DimensionValue | undefined
  • added: property FlexStyle.insetBlockEnd?: DimensionValue | undefined
  • added: property FlexStyle.insetBlockStart?: DimensionValue | undefined
  • added: property FlexStyle.insetInline?: DimensionValue | undefined
  • added: property FlexStyle.insetInlineEnd?: DimensionValue | undefined
  • added: property FlexStyle.insetInlineStart?: DimensionValue | undefined
  • added: property ViewProps.experimental_layoutConformance?: 'strict' | 'classic' | undefined
  • changed: default function symbolicateStackTrace(stack: ReadonlyArray<StackFrame>): Promise<StackFrame[]> → default function symbolicateStackTrace(stack: ReadonlyArray<StackFrame>, extraData?: any): Promise<StackFrame[]>
  • added: export * from '../Libraries/DevToolsSettings/DevToolsSettingsManager'
  • changed: method Blob.slice(start?: number, end?: number): Blob → method Blob.slice(start?: number, end?: number, contentType?: string): Blob
  • added: interface File extends Blob
  • added: property File.lastModified: number
  • added: property File.name: string
  • added: readonly property Request.signal: AbortSignal | undefined
  • added: var File: { prototype: File; new (fileParts?: Array<Blob | string>, name?: string, options?: BlobOptions): File }