{"id":20740677,"url":"https://github.com/kelset/react-native-new-arch-limits","last_synced_at":"2026-02-25T07:02:22.248Z","repository":{"id":109437269,"uuid":"554251027","full_name":"kelset/react-native-new-arch-limits","owner":"kelset","description":"A quick repo for experimenting with the new arch and its limits","archived":false,"fork":false,"pushed_at":"2022-10-28T10:24:24.000Z","size":1460,"stargazers_count":25,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-21T18:14:11.582Z","etag":null,"topics":["react-native"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kelset.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-19T13:55:19.000Z","updated_at":"2023-09-09T15:01:27.000Z","dependencies_parsed_at":"2023-03-23T04:33:42.996Z","dependency_job_id":null,"html_url":"https://github.com/kelset/react-native-new-arch-limits","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kelset%2Freact-native-new-arch-limits","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kelset%2Freact-native-new-arch-limits/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kelset%2Freact-native-new-arch-limits/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kelset%2Freact-native-new-arch-limits/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kelset","download_url":"https://codeload.github.com/kelset/react-native-new-arch-limits/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250547086,"owners_count":21448437,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["react-native"],"created_at":"2024-11-17T06:29:34.087Z","updated_at":"2026-02-25T07:02:17.204Z","avatar_url":"https://github.com/kelset.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Testing the new architecture's limits\n\nJust a quick test app to validate a few doubts I have been having - basically, I'm starting with a fresh new RN app on latest stable (0.70.4) and throwing a bunch of libs at it to see what works and what doesn't when enabling the new architecture.\n\n## Tests matrix\n\nA few things to notice:\n\n- technically, to turn on the new arch you have just one switch, [see here](https://reactnative.dev/docs/next/the-new-architecture/use-app-template#enable-the-new-architecture). This means both TM and Fabric ON at the same time.\n  - there should be ways to only switch ON one or the other.I'll test all the options I can find. (also: from \u003e=71, [Android switches](https://github.com/facebook/react-native/pull/35091), [iOS switches](https://github.com/facebook/react-native/pull/35117) )\n    - TM on Android: ~based on [this guide](https://reactnative.dev/docs/new-architecture-app-modules-android#6-enable-the-useturbomodules-flag-in-your-application-oncreate), changing [this line](https://github.com/kelset/react-native-new-arch-limits/blob/main/android/app/src/main/java/com/testnewarchmatrix/MainApplication.java#L56) should do the trick~ nvm that, it looks like the easiest way of doing that is actually to switch on new arch as expected, via `gradle.properties`, and manually switch off [Fabric](https://github.com/kelset/react-native-new-arch-limits/blob/main/android/app/src/main/java/com/testnewarchmatrix/MainActivity.java#L37) and [Concurrent](https://github.com/kelset/react-native-new-arch-limits/blob/main/android/app/src/main/java/com/testnewarchmatrix/MainActivity.java#L45). Looks weird, but seems to be working.\n    - TM on iOS: ~based on [this guide](https://reactnative.dev/docs/new-architecture-app-modules-ios#3-enable-turbo-native-module-system), adding `RCTEnableTurboModule(YES);` on [this line](https://github.com/kelset/react-native-new-arch-limits/blob/main/ios/TestNewArchMatrix/AppDelegate.mm#L34) **AND** removing this [if statement](https://github.com/kelset/react-native-new-arch-limits/blob/main/ios/TestNewArchMatrix/AppDelegate.mm#L94)...should do the trick~ I can't seem to figure out a way to make it happen.\n- ~At the end, when everything else is tested, I'll also try to switch on ConcurrentReact and see what goes kaboom.~ by default, when turning ON the new arch, concurrent is ON too - [read more](https://reactnative.dev/docs/next/react-18-and-react-native#react-18-enabled-by-default).\n- I picked the libs pretty much on instinct, using [directory](https://reactnative.directory/) as a catalogue.\n- I'm sticking with Hermes only for now just for time-related reasons\n\nAs base test, I'll:\n\n- try to switch on new arch: ✅\n- try to switch on TM only: (android)✅ (ios)❌\n- try to switch on Fabric only: ❌\n  - this is not viable, because Fabric is a TurboModule (basically) so it would go kaboom without TM enabled\n\nThen I'll move to the meat of this experiment: the idea is that I'll add all these libs into the code, and see what happens.\n\n| What                                                                                                                        | which lib                                                                                  | old arch _(baseline)_ | new arch | only TM on |\n| --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | --------------------- | -------- | ---------- |\n| a visual lib with \"official support\" for new arch                                                                           | [react-native-slider](https://github.com/callstack/react-native-slider)                    | ✅                    | ✅       | ✅         |\n| a visual lib without \"official support\" for new arch                                                                        | [react-native-webview](https://github.com/react-native-webview/react-native-webview)       | ✅                    | ❌ (as expected)       | ✅         |\n| a non-visual lib with \"official support\" for new arch                                                                       | couldn't find any                                                                          | 🤷‍♂️                    | 🤷‍♂️       | 🤷‍♂️         |\n| a non-visual lib without \"official support\" for the new arch                                                                | [react-native-get-random-values](https://github.com/LinusU/react-native-get-random-values) | ✅                    | ✅       | ✅         |\n| a js-only lib                                                                                                               | [react-native-bouncy-checkbox](https://github.com/WrathChaos/react-native-bouncy-checkbox) | ✅                    | ✅       | ✅         |\n| a new-arch only lib                                                                                                         | [react-native-gradient](https://github.com/FyndX/react-native-gradient)                    | ❌ (as expected)      | ✅ (ios) ❌ (android - unexpected)       | ❌ (as expected)         |\n| a new-arch only lib with [backward compatibility](https://reactnative.dev/docs/the-new-architecture/backward-compatibility) | need to find one                                                                           | 🤷‍♂️                    | 🤷‍♂️       | 🤷‍♂️         |\n\n### Specific libs comments or notes\n\n- the fact that `FyndX/react-native-gradient` fails on `pod install` when on old arch is expected, it errors because the pod itself depends on `React-RCTFabric` which is new arch specific\n- non-Fabric compatible libraries have this nice fallback of a red box (see screenshot v1 in `/docs`); it all build fine but simply it won't get loaded\n- I think `FyndX/react-native-gradient` erroring in Android is probably because of the lib itself, not my doing. I already added [patch-package](https://github.com/ds300/patch-package) to handle the Folly bump (see the patch in `/patches`)\n\n## TODO\n\n- ✅ add \"status code\" to show which state the thing is in (old/new arch, concurrent on/off) (hats off to [@tido64](https://github.com/tido64) for [this](https://github.com/microsoft/react-native-test-app/blob/trunk/example/App.js#L159-L169))\n- ✅ do basic tests\n- ✅ add libraries and sample code one by one, in old arch\n- ✅ do the tests (new arch on first)\n- ✅ get the app in shape for turning on in new arch proper\n- ✅ test the TM only mode in Android\n- 🟡 summarize the whole thing into some learnings\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkelset%2Freact-native-new-arch-limits","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkelset%2Freact-native-new-arch-limits","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkelset%2Freact-native-new-arch-limits/lists"}