react-native-test-app icon indicating copy to clipboard operation
react-native-test-app copied to clipboard

Breaking changes in 4.0

Open tido64 opened this issue 1 year ago • 5 comments

PR: tido/4.0 Timeline: EOY 2024

Breaking changes

  • [x] [core] End support for >=0.66 <0.70
  • [x] [core] Remove workarounds for >=0.66 <0.70
  • [x] [init] Deprecate (and remove) --flatten
  • [x] [android] Bump minSdkVersion to 24
  • [x] [apple] Remove :turbomodule_enabled (deprecated in 3.0.4)
  • [x] [apple] Enable Hermes by default in new projects
  • [x] [ios] Bumped minimum version to 15.1
  • [x] [macos] Bumped minimum version to 12.0
  • [x] [windows] Use package references by default (remove packages.config)

Post-publish tasks

  • [ ] Create the releases/3.x branch
  • [ ] Create the release-3.x tag
  • [ ] Update dependencies
  • [ ] Update Patches
  • [ ] Announcements

tido64 avatar Jan 29 '24 12:01 tido64

Should defaulting to Hermes being enabled be included in this, to match the RN template?

kraenhansen avatar Mar 31 '24 19:03 kraenhansen

Should defaulting to Hermes being enabled be included in this, to match the RN template?

So there are two ways we can go about this: 1) enable Hermes by default when generating new projects or 2) enable Hermes by default if this option is unset.

On Android, you can't disable Hermes. On Windows, Hermes is on by default starting with 0.73. iOS/macOS/visionOS currently default to JSC.

Internally at Microsoft, we don't use Hermes on Apple platforms due to the increased bundle size. I'd prefer that we stay closer to this than what Meta currently recommends. I'm not opposed to implementing solution 1 though.

Paging @acoates-ms @kelset @Saadnajmi for more opinions.

tido64 avatar Apr 02 '24 11:04 tido64

I'd also vouch for us keeping the default config closer to our internal needs; maybe we can revisit once RNTA reached a new major where 0.73 is the minimum version supported to match the Windows behaviour? 🤔 Also I'm not super familiar about viability of Hermes on macOS and visionOS.

Is there a flag we can pass when generating a RNTA project that sets Hermes? Like, yarn configure-test-app --use-hermes? If not, maybe that could be a quick tradeoff to make the DX smooth for folks that want to use Hermes?

kelset avatar Apr 02 '24 12:04 kelset

I'm personally in favor of using Hermes as the default for new projects (solution 1), though it may vary by platform. To answer @kelset , Hermes works on macOS and visionOS both.

Saadnajmi avatar Apr 02 '24 15:04 Saadnajmi

Starting with 0.73, Hermes is going to be the only viable option for Android and Windows. Chakra is dead. A --use-hermes would only apply to Apple platforms.

I'm going to put down "Hermes as default on iOS/macOS/visionOS in newly created projects" if there are no objections. This will be a very visible oneliner in Podfile and can be easily turned off if necessary.

tido64 avatar Apr 03 '24 18:04 tido64