Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Breaking changes in 4.0 #1797

Open
6 of 10 tasks
tido64 opened this issue Jan 29, 2024 · 5 comments
Open
6 of 10 tasks

Breaking changes in 4.0 #1797

tido64 opened this issue Jan 29, 2024 · 5 comments

Comments

@tido64
Copy link
Member

tido64 commented Jan 29, 2024

PR: tido/4.0
Timeline: EOY 2024

Breaking changes

  • [core] End support for >=0.66 <0.70
  • [core] Remove workarounds for >=0.66 <0.70
  • [init] Deprecate (and remove) --flatten
  • [apple] Remove :turbomodule_enabled (deprecated in 3.0.4)
  • [apple] Enable Hermes by default in new projects
  • [windows] Use package references by default (remove packages.config)

Post-publish tasks

@tido64 tido64 pinned this issue Mar 20, 2024
@kraenhansen
Copy link

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

@tido64
Copy link
Member Author

tido64 commented Apr 2, 2024

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.

@kelset
Copy link
Member

kelset commented Apr 2, 2024

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?

@Saadnajmi
Copy link
Collaborator

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.

@tido64
Copy link
Member Author

tido64 commented Apr 3, 2024

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants