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

feat: support new arch through interop layer #483

Merged
merged 6 commits into from
Nov 7, 2024

Conversation

KiwiKilian
Copy link
Collaborator

@KiwiKilian KiwiKilian commented Nov 4, 2024

This is based on https://github.com/reactwg/react-native-new-architecture/blob/main/docs/enable-libraries.md

I've collected and refined all input (thanks @rxnveer #481 and @thibaultcapelli #436 (comment)) towards the new arch support through the compatibility layer. This now compiles fine within the Expo Example app on the new architecture. Upgrade to Expo SDK 52 Preview didn't went smooth, figured to not waste more time until stable release.

It also still works on the old architecture within the React Native example app.

Fixes #436
Obsoletes #481

@KiwiKilian KiwiKilian changed the title feat: support new arch feat: support new arch through interop layer Nov 5, 2024
@KiwiKilian
Copy link
Collaborator Author

After this has been released, I will update new arch support on https://reactnative.directory/

@KiwiKilian
Copy link
Collaborator Author

KiwiKilian commented Nov 7, 2024

Currently the build of the Expo example on iOS is problematic, it only seems to work when doing the following "clean" approach:

Delete the following:

  • ~/Library/Developer/Xcode/DerivedData (only example projects related with RN MLN, looking like Expo.some-id)
  • In the project:
    • node_modules
    • .yarn
    • packages/examples/node_modules
    • packages/expo-app/.expo
    • packages/expo-app/android
    • packages/expo-app/ios
    • packages/expo-app/node_modules

Then the following steps:

  • Go to workspace root
  • yarn install
  • cd packages/expo-app
  • yarn build (~20 minutes)
  • yarn ios (~1 minute)

In further builds after this initial one, the following error occurs:

CommandError: Malformed xcodebuild results: "UNLOCALIZED_RESOURCES_FOLDER_PATH" variable was not generated in build output. Please report this issue and run your project with Xcode instead.

I've also tried updating the Expo exmaple to SDK 52 preview. That build fails always with:


  23 |     #if EXPO_CONFIGURATION_DEBUG
  24 |     return [
> 25 |       ExpoFetchModule.self,
     |       ^ cannot find 'ExpoFetchModule' in scope
  26 |       AssetModule.self,
  27 |       ConstantsModule.self,
  28 |       FileSystemModule.self,

I guess it's either our monorepo setup or problems with Expo and the new architecture. I would wait for the stable SDK 52 release, before I invest more time into debugging.

@tyrauber
Copy link
Collaborator

tyrauber commented Nov 7, 2024

@KiwiKilian, the withDwarfDsym config plugin is causing the "Malformed xcodebuild results" build error. Removing / disabling it resolves the issue.

@tyrauber tyrauber merged commit 951e9cf into maplibre:main Nov 7, 2024
4 checks passed
@KiwiKilian KiwiKilian deleted the feat/new-arch-support branch November 13, 2024 06:10
github-actions bot pushed a commit that referenced this pull request Dec 2, 2024
# [10.0.0-beta.1](v9.1.0...v10.0.0-beta.1) (2024-12-02)

### Bug Fixes

* add @babel/plugin-transform-private-methods for jest ([3a2188f](3a2188f))
* add generic expo config plugin to remove duplicate signature ([#453](#453)) ([2671381](2671381))
* allow MapView and Images to have no children ([#521](#521)) ([1e35bf6](1e35bf6))
* allow resetting contentInset with 0 ([#468](#468)) ([1fe42c6](1fe42c6))
* android example crashing on launch ([#372](#372)) ([aeef5c3](aeef5c3))
* cleanup yarn setup ([#463](#463)) ([d9a4d30](d9a4d30))
* corepack enable  on publish workflow ([2d13f33](2d13f33))
* correct types in MapView ([#268](#268)) ([0ea35c4](0ea35c4))
* disable code signing for release builds ([b3cf088](b3cf088))
* disable library code signing ([22030dd](22030dd))
* empty pbxproj and dwarf-with-dsym plugin config for EAS ([#458](#458)) ([0d54b46](0d54b46))
* expo-app should load library from workspace:. ([016b44a](016b44a))
* group dependabot commits by core, dev and example ([#165](#165)) ([b697978](b697978))
* keep [@ts-ignore](https://github.com/ts-ignore) for headingIcon in library [#476](#476) ([#477](#477)) ([ef62454](ef62454))
* make MarkerView props with defaults optional ([#460](#460)) ([185cf3e](185cf3e))
* plugin for debug simulator ([#164](#164)) ([06b23d4](06b23d4))
* remove AbortController test mock ([#403](#403)) ([698b558](698b558))
* round compass margins and attribution position to nearest integers [android] ([#294](#294)) ([c89c842](c89c842))
* setMaxAnimationFps on null ([#440](#440)) ([2884256](2884256))
* style expressions ([#466](#466)) ([2202908](2202908))
* updated Mapbox callstack check for iOS custom headers to check for MapLibre instead ([#461](#461)) ([a6d6216](a6d6216))
* use UIManager exported from react-native ([#511](#511)) ([a4030b5](a4030b5))
* yarn implementation ([#419](#419)) ([39233b1](39233b1))

### Continuous Integration

* add semantic release ([#526](#526)) ([069b6c5](069b6c5))

### Features

* align react and react-native versions for development ([b92abfe](b92abfe))
* configure packages/examples ([c4510c3](c4510c3))
* extract android UserLocation FPS ([#428](#428)) ([8c0abaa](8c0abaa))
* make Camera pure ([#471](#471)) ([23ecf88](23ecf88))
* MapLibre Android SDK 11.5.0 ([#455](#455)) ([042b759](042b759))
* monorepo configuration ([343e7ac](343e7ac))
* mv example packages/react-native-app ([5c9d3d0](5c9d3d0))
* mv examples, styles, assets, utils and scenes to packages/examples ([13600fe](13600fe))
* packages/expo-app ([c01abd5](c01abd5))
* setup build step ([#504](#504)) ([a017d64](a017d64))
* shared dependencies through packages/examples ([01a9586](01a9586))
* support new arch through interop layer ([#483](#483)) ([951e9cf](951e9cf))
* update maplibre native version ([#61](#61)) ([25c418a](25c418a))
* upgrade [@Turf](https://github.com/turf) to v7 and remove geo utils ([#478](#478)) ([a45fc55](a45fc55))

### BREAKING CHANGES

* Upgrade native packages and migrate components

* ci: move native builds to review

* ci: run release immediate for debugging

* ci: use android working directory for build

* docs: remove RELEASE.md

* chore: remove manual changelog task

* ci: enable release on beta branch

* ci: keep default tagFormat

* ci: setup npm tag fixes

* ci: run review on mr to beta

* ci: run fix tags on beta

* ci: fix name

* ci: clarify workflow_call

* ci: disable debugging

* ci: run fix tags in pr

* ci: setup fix tags to run on beta

* docs: prepare changelog for semantic-release

* ci: remove fix npm tags workflow
Copy link

github-actions bot commented Dec 2, 2024

🎉 This PR is included in version 10.0.0-beta.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

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

Successfully merging this pull request may close these issues.

Support for RN New Architecture
2 participants