Skip to content

Conversation

@brainbicycle
Copy link
Contributor

@brainbicycle brainbicycle commented Oct 7, 2025

Description

This PR is the last of a series of PRs aiming to enable the new architecture in Eigen.

*Things to keep in mind

  • We tried as much as possible to bring changes to main whenever possible to limit the scope of this PR. Unfortunately, it wasn't always possible and at some point, we needed to make some changes to get the app to work nicely on the new architecture
  • We kept 99% feature parity with what we currently have but we changed in some cases how we render things.
    • The 1% that we couldn't keep, is the accurate columnIndex calculation because the API was dropped from Flashlist (will be discussed with data team)
  • For the first time, we used feature flags from reanimated and react-native in order to solve some performance issues we have. These feature flags refer to different methods of parsing the components tree and rendering items, and not new features. A list of the issues and feature flags can be found here https://docs.swmansion.com/react-native-reanimated/docs/guides/performance/#%EF%B8%8F-lower-fps-while-scrolling

How to review this PR
We tried as much as possible to approach this commit by commit. That's how I suggest reviewing this PR if you want to know what this journey was like. However, keep in mind that as you progress further in the commits, we change the approach we take accordingly, and sometimes we revert some changes.

QA boards
QA session 1: https://www.notion.so/artsy/2025-10-31-Mobile-App-QA-New-architecture-29dcab0764a0809d831ad7a43c2a6c46
QA session 2: https://www.notion.so/artsy/2025-11-21-Mobile-App-QA-version-8-89-0-iOS-build-2025-11-21-10-Android-build-8-89-0-2025112110--2b2cab0764a08010af36d6b48805aa24
QA session 3: https://www.notion.so/artsy/2025-12-10-Mobile-App-QA-version-8-90-0-iOS-build-2025-12-10-Y-Z-Android-build-XYZ-New-Architectu-2c5cab0764a08025a6e2e0cd25dba760

In Progress
Measuring performance impact

PR Checklist

  • I have tested my changes on the following platforms:
    • Android.
    • iOS.
  • I hid my changes behind a feature flag, or they don't need one.
  • I have included screenshots or videos at least on Android, or I have not changed the UI.
  • I have added tests, or my changes don't require any.
  • I added an app state migration, or my changes do not require one.
  • I have documented any follow-up work that this PR will require, or it does not require any.
  • I have added a changelog entry below, or my changes do not require one.

To the reviewers 👀

  • I would like at least one of the reviewers to run this PR on the simulator or device.
Changelog updates

Changelog updates

Cross-platform user-facing changes

iOS user-facing changes

Android user-facing changes

Dev changes

  • enable new architecture - brian, george, mounir

Need help with something? Have a look at our docs, or get in touch with us.

@brainbicycle brainbicycle self-assigned this Oct 7, 2025
@brainbicycle brainbicycle marked this pull request as draft October 7, 2025 19:01
@brainbicycle brainbicycle mentioned this pull request Oct 7, 2025
10 tasks
@MounirDhahri MounirDhahri force-pushed the moplat/new-arch-revisited branch 4 times, most recently from 6cb25b0 to 841f693 Compare October 14, 2025 10:34
@MounirDhahri MounirDhahri force-pushed the moplat/new-arch-revisited branch from 841f693 to f037931 Compare October 15, 2025 15:35
@MounirDhahri MounirDhahri marked this pull request as ready for review October 28, 2025 14:05
@MounirDhahri
Copy link
Member

I am opening the PR to make sure all CI stuff keeps on running

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

Greptile Overview

Greptile Summary

Enables React Native new architecture experiment by setting newArchEnabled=true on both iOS and Android platforms and converting native modules to C++ (.mm).

  • Enabled new architecture in android/gradle.properties, ios/Podfile, and ios/Podfile.properties.json
  • Converted ARAppDelegateHelper.m and ARPHPhotoPickerModule.m to .mm (Objective-C++) for new arch compilation compatibility
  • Updated react-native-context-menu-view and react-native-launch-arguments to fork branches with new architecture fixes
  • Added startTransition prop to FlagProvider to handle React 18 transitions
  • Bumped node cache version to v26

Issues found:

  • Logic error in photo picker: checking results.count instead of images.count after image loading could cause incorrect error handling

Additional Comments (1)

  1. ios/Artsy/Emission/EigenCommunications/ARPHPhotoPickerModule.mm, line 96 (link)

    logic: checking results.count == 0 here is incorrect - should check images.count == 0 since images may fail to load even when results exist

9 files reviewed, 2 comments

Edit Code Review Agent Settings | Greptile

Comment on lines +14 to 23

#import <AuthenticationServices/AuthenticationServices.h>
#import <SafariServices/SafariServices.h>
#import <FBSDKCoreKit/FBSDKCoreKit-swift.h>


#import <Firebase.h>
#import "BrazeReactBridge.h"
#import "BrazeReactUtils.h"
#import <BrazeUI/BrazeUI-Swift.h>
Copy link
Contributor

Choose a reason for hiding this comment

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

style: added imports for AuthenticationServices and SafariServices when converting to C++, but these frameworks don't appear to be used - consider removing unused imports

@MounirDhahri MounirDhahri force-pushed the moplat/new-arch-revisited branch from f037931 to ab97692 Compare November 14, 2025 09:04
@artsy artsy deleted a comment from ArtsyOpenSource Nov 14, 2025
@ArtsyOpenSource
Copy link
Contributor

ArtsyOpenSource commented Nov 14, 2025

This PR contains the following changes:

  • Dev changes (enable new architecture - brian, george, mounir - brainbicycle)

Generated by 🚫 dangerJS against 42e108f

@artsy-peril
Copy link
Contributor

artsy-peril bot commented Nov 14, 2025

zeego

Author: Fernando Rojo

Description: Logical UI primitives, made for screens.

Homepage: https://github.com/nandorojo/zeeg#readme

Createdabout 4 years ago
Last Updated9 months ago
LicenseMIT
Maintainers1
Releases73
Direct Dependencies@radix-ui/react-context-menu, @radix-ui/react-dropdown-menu and sf-symbols-typescript
Keywordsreact-native, ios and android
README

ERROR: No README data found!

react-native-worklets

Author: Unknown

Description: The React Native multithreading library

Homepage: https://docs.swmansion.com/react-native-worklets

Createdover 5 years ago
Last Updatedabout 16 hours ago
LicenseMIT
Maintainers3
Releases300
Direct Dependenciessemver, convert-source-map, @babel/preset-typescript, @babel/plugin-transform-classes, @babel/plugin-transform-unicode-regex, @babel/plugin-transform-arrow-functions, @babel/plugin-transform-class-properties, @babel/plugin-transform-optional-chaining, @babel/plugin-transform-template-literals, @babel/plugin-transform-shorthand-properties and @babel/plugin-transform-nullish-coalescing-operator
Keywordsreact-native, react, native and worklets

react-native-ios-utilities

Author: Unknown

Description: Utilities for react-native + iOS and wrappers for using swift together with fabric/paper + JSI

Homepage: https://github.com/dominicstop/react-native-ios-utilities#readme

Createdover 3 years ago
Last Updated3 months ago
LicenseMIT
Maintainers1
Releases167
Keywordsreact-native, ios, utilities, utility, fabric, paper and JSI

react-native-ios-context-menu

Author: Unknown

Description: A react-native component to use context menu's (UIMenu) on iOS 13/14+

Homepage: https://github.com/dominicstop/react-native-ios-context-menu#readme

Createdabout 5 years ago
Last Updated3 months ago
LicenseMIT
Maintainers1
Releases117
Direct Dependencies@dominicstop/ts-event-emitter
Keywordsreact-native, ios, react-native-ios-context-menu and ReactNativeIosContextMenu

@react-native-menu/menu

Author: Jesse Katsumata

Description: UIMenu component for react-native

Homepage: https://github.com/react-native-menu/menu#readme

Createdabout 5 years ago
Last Updated4 months ago
LicenseMIT
Maintainers1
Releases41
Keywordsreact-native, ios and android
This README is too long to show.

New dependencies added: @react-native-menu/menu, react-native-ios-context-menu, react-native-ios-utilities, react-native-worklets and zeego.

Generated by 🚫 dangerJS against 42e108f

@github-actions
Copy link

🎉🤖 Android beta version generated: 8.89.0 (1674646476)

This beta is now available on Firebase!

@github-actions
Copy link

🎉🤖 Android beta version generated: 8.89.0 (1674646476)

This beta is now available on Play Store!

@github-actions
Copy link

🎉🍏 iOS beta version generated: 8.89.0 (2025.11.14.12)

This beta is now available on TestFlight!

@github-actions
Copy link

🎉🍏 iOS beta version generated: 8.89.0 (2025.11.14.12)

This beta is now available on Firebase!

@github-actions
Copy link

🎉🤖 Android beta version generated: 8.89.0 (1674646477)

This beta is now available on Firebase!

@github-actions
Copy link

🎉🍏 iOS beta version generated: 8.89.0 (2025.11.14.14)

This beta is now available on Firebase!

@github-actions
Copy link

🎉🍏 iOS beta version generated: 8.89.0 (2025.11.14.14)

This beta is now available on TestFlight!

@MounirDhahri MounirDhahri force-pushed the moplat/new-arch-revisited branch 3 times, most recently from 25d33bd to 125dc54 Compare November 19, 2025 12:50
@github-actions
Copy link

github-actions bot commented Nov 19, 2025

🎉 Beta Versions Generated (commit: 125dc54)

iOS 🍏

  • 8.89.0 (2025.11.19.12) - Available on TestFlight
  • 8.89.0 (2025.11.19.12) - Available on Firebase

@MounirDhahri MounirDhahri force-pushed the moplat/new-arch-revisited branch from 125dc54 to 645ca18 Compare November 20, 2025 16:35
MounirDhahri and others added 22 commits December 29, 2025 10:51
fix: infinite discovery broken padding on iOS
* fix: broken padding on heart icon

* fix: partner cut title on android
pass double to workaround decelerationRate prop issue
* fix: broken padding inside create alert modal

* fix: berghain mode create alert button

* fix: fair artworks grid paddings

* fix: generic grid broken paddings

* fix: broken test

* fix: broken test

* chore: address review comment
* chore: attempt fixing android build

* chore: bump cache for node

* chore: try again

* chore: increase workers

* chore: use same build command as fastfile
* wrap switch in flex to fix flex behavior

* fix padding issues in dark mode settings
* fix: broken android build (#13106)

* chore: attempt fixing android build

* chore: bump cache for node

* chore: try again

* chore: increase workers

* chore: use same build command as fastfile

* chore: test

* chore: minor fair screen improvements

* chore: do not use recycled reference for flashlist

* chore: bump palette-mobile version

* chore: remove lazy
@MounirDhahri MounirDhahri force-pushed the moplat/new-arch-revisited branch from 22d087b to 142ce67 Compare December 29, 2025 09:52
@github-actions
Copy link

github-actions bot commented Dec 29, 2025

🎉 Beta Versions Generated (commit: 42e108f)

Android 🤖

  • 8.91.0 (2025122916) - Available on Firebase
  • 8.91.0 (2025122916) - Available on Play Store

iOS 🍏

  • 8.91.0 (2025.12.29.16) - Available on Firebase
  • 8.91.0 (2025.12.29.16) - Available on TestFlight

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.

6 participants