Skip to content

Conversation

@thymikee
Copy link
Contributor

Summary:

When working with OOT platforms we need to change the react-native package name to something else, which breaks JS and TS tests. This change makes sure that react-native imports map to the packages/react-native, allowing us to reduce the scope of the fork. It should be transparent to the core platforms.

Changelog:

[INTERNAL] [FIXED] - Make JS and TS tests independent of react-native package name

Test Plan:

CI green

@facebook-github-bot facebook-github-bot added CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. p: Callstack Partner: Callstack Partner Shared with Meta Applied via automation to indicate that an Issue or Pull Request has been shared with the team. labels Nov 29, 2023
@analysis-bot
Copy link

Platform Engine Arch Size (bytes) Diff
android hermes arm64-v8a 17,701,312 +0
android hermes armeabi-v7a n/a --
android hermes x86 n/a --
android hermes x86_64 n/a --
android jsc arm64-v8a 21,092,540 -7
android jsc armeabi-v7a n/a --
android jsc x86 n/a --
android jsc x86_64 n/a --

Base commit: dc95568
Branch: main

Comment on lines +44 to +46
// These mappers allow out-of-tree platforms tests to seamlessly resolve RN imports
'^react-native/(.*)': '<rootDir>/packages/react-native/$1',
'^react-native$': '<rootDir>/packages/react-native/index.js',
Copy link
Contributor

@NickGerleman NickGerleman Nov 29, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh hey I remember hitting this back in the day for RN Windows.

Something else you will run into is resolving files correctly based on platform extension, if you end up adding visionos there (even in internals of the fork).

@tido64 you ended up building a custom resolver or config for this right? Maybe we should upstream the solution we had.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We just upstreamed one bugfix (custom resolvers were not overridable when OOT was defined) and create a custom resolver here: callstack#32

We chose not to change the Platform and instead do something custom, because there's so much overlap between visionOS and iOS and we want to leverage 3rd party libs that rely on ios platform

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A nuance is that Jest uses a different resolver from Metro, but IIRC had some declarative fields to customize resolution. I looked it up, and here is the MSFT one I think: https://github.com/microsoft/rnx-kit/blob/main/packages/jest-preset/src/index.js

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As @NickGerleman pointed out, it's built into our Jest preset. react-native-windows uses it extensively: https://github.com/search?q=repo%3Amicrosoft%2Freact-native-windows%20%40rnx-kit%2Fjest-preset&type=code

It should work for react-native-visionos as well. If it doesn't, let me know.

Copy link
Contributor Author

@thymikee thymikee Nov 30, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change is 3 lines that we need vs the whole package imported. But we'll definitely consider relying on rnx-kit infra as it's already prepared for OOT platforms out there 👍🏼

@motiz88
Copy link
Contributor

motiz88 commented Nov 30, 2023

This diff seems harmless, but if this config is specific to the use case of maintaining an out-of-tree platform, I'd recommend keeping it separate from the react-native repo's core config. (A shareable Jest preset perhaps?)

@github-actions
Copy link

This PR is stale because it has been open 180 days with no activity. Remove stale label or comment or this will be closed in 7 days.

@github-actions github-actions bot added the Stale There has been a lack of activity on this issue and it may be closed soon. label May 29, 2024
@github-actions
Copy link

github-actions bot commented Jun 6, 2024

This PR was closed because it has been stalled for 7 days with no activity.

@github-actions github-actions bot closed this Jun 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. p: Callstack Partner: Callstack Partner Shared with Meta Applied via automation to indicate that an Issue or Pull Request has been shared with the team. Stale There has been a lack of activity on this issue and it may be closed soon.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants