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

[iOS Only] Enable new architecture for react-native #19748

Merged
merged 1 commit into from
Apr 30, 2024

Conversation

siddarthkay
Copy link
Contributor

Summary

This PR enables Fabric and Hermes for iOS and in my initial tests the app seemed to behave well.
We can't do this for Android yet because the blur view implementation is not ported to Fabric properly.
needed for #18138

Review notes

Please check builds from this PR to see if you notice any performance improvements or degradation.

Testing notes

Please smoke test the iOS builds to see if there are any crashes.

Platforms

  • iOS

status: ready

@siddarthkay siddarthkay self-assigned this Apr 20, 2024
@siddarthkay siddarthkay requested a review from jakubgs as a code owner April 20, 2024 23:02
@siddarthkay siddarthkay linked an issue Apr 20, 2024 that may be closed by this pull request
7 tasks
@status-im-auto
Copy link
Member

status-im-auto commented Apr 20, 2024

Jenkins Builds

Click to see older builds (60)
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 114c8d1 #1 2024-04-20 23:06:49 ~4 min tests 📄log
✔️ 114c8d1 #1 2024-04-20 23:08:35 ~5 min android-e2e 🤖apk 📲
✔️ 114c8d1 #1 2024-04-20 23:08:55 ~6 min android 🤖apk 📲
✔️ 114c8d1 #1 2024-04-20 23:12:42 ~10 min ios 📱ipa 📲
15951fd #4 2024-04-22 12:44:53 ~2 min android-e2e 📄log
15951fd #4 2024-04-22 12:44:56 ~2 min android 📄log
15951fd #4 2024-04-22 12:44:57 ~2 min tests 📄log
✔️ 15951fd #4 2024-04-22 12:52:04 ~9 min ios 📱ipa 📲
c69ab9b #6 2024-04-23 09:07:24 ~3 min tests 📄log
✔️ c69ab9b #6 2024-04-23 09:10:18 ~6 min android 🤖apk 📲
✔️ c69ab9b #6 2024-04-23 09:13:13 ~9 min ios 📱ipa 📲
✔️ c69ab9b #6 2024-04-23 09:13:53 ~10 min android-e2e 🤖apk 📲
✔️ 2888613 #8 2024-04-23 10:00:56 ~5 min tests 📄log
✔️ 2888613 #8 2024-04-23 10:05:19 ~9 min ios 📱ipa 📲
✔️ 2888613 #8 2024-04-23 10:06:00 ~10 min android-e2e 🤖apk 📲
✔️ 2888613 #8 2024-04-23 10:06:13 ~10 min android 🤖apk 📲
20ecb6a #10 2024-04-23 10:12:09 ~3 min tests 📄log
✔️ 20ecb6a #10 2024-04-23 10:15:41 ~7 min android 🤖apk 📲
✔️ 20ecb6a #10 2024-04-23 10:18:06 ~9 min ios 📱ipa 📲
✔️ 20ecb6a #10 2024-04-23 10:18:52 ~10 min android-e2e 🤖apk 📲
c671cec #11 2024-04-23 14:18:59 ~4 min tests 📄log
✔️ c671cec #11 2024-04-23 14:24:22 ~9 min ios 📱ipa 📲
✔️ c671cec #11 2024-04-23 14:24:56 ~10 min android-e2e 🤖apk 📲
✔️ c671cec #11 2024-04-23 14:25:01 ~10 min android 🤖apk 📲
✔️ 77ce308 #12 2024-04-24 10:17:23 ~4 min tests 📄log
✔️ 77ce308 #12 2024-04-24 10:22:35 ~10 min ios 📱ipa 📲
✔️ 77ce308 #12 2024-04-24 10:22:58 ~10 min android-e2e 🤖apk 📲
✔️ 77ce308 #12 2024-04-24 10:23:05 ~10 min android 🤖apk 📲
✔️ cb05db7 #14 2024-04-24 11:51:28 ~4 min tests 📄log
✔️ cb05db7 #14 2024-04-24 11:52:15 ~5 min android-e2e 🤖apk 📲
✔️ cb05db7 #14 2024-04-24 11:56:00 ~9 min ios 📱ipa 📲
✔️ cb05db7 #14 2024-04-24 11:56:44 ~10 min android 🤖apk 📲
✔️ 6d4d582 #15 2024-04-25 09:38:17 ~7 min android 🤖apk 📲
✔️ 6d4d582 #15 2024-04-25 09:38:24 ~7 min tests 📄log
✔️ 6d4d582 #15 2024-04-25 09:40:28 ~9 min ios 📱ipa 📲
✔️ 6d4d582 #15 2024-04-25 09:42:00 ~10 min android-e2e 🤖apk 📲
✔️ 292e65a #16 2024-04-25 11:13:05 ~5 min tests 📄log
✔️ 292e65a #16 2024-04-25 11:13:29 ~6 min android-e2e 🤖apk 📲
✔️ 292e65a #16 2024-04-25 11:16:47 ~9 min android 🤖apk 📲
✔️ 292e65a #16 2024-04-25 11:16:49 ~9 min ios 📱ipa 📲
✔️ 8b57f57 #17 2024-04-26 06:27:15 ~5 min tests 📄log
✔️ 8b57f57 #17 2024-04-26 06:27:28 ~5 min android 🤖apk 📲
✔️ 8b57f57 #17 2024-04-26 06:30:50 ~9 min android-e2e 🤖apk 📲
✔️ 8b57f57 #17 2024-04-26 06:31:26 ~9 min ios 📱ipa 📲
✔️ 5cb0897 #18 2024-04-26 08:15:33 ~4 min tests 📄log
✔️ 5cb0897 #18 2024-04-26 08:17:08 ~5 min android-e2e 🤖apk 📲
✔️ 5cb0897 #18 2024-04-26 08:18:13 ~6 min android 🤖apk 📲
✔️ 5cb0897 #18 2024-04-26 08:20:47 ~9 min ios 📱ipa 📲
✔️ c0e0b2d #19 2024-04-26 12:22:32 ~4 min tests 📄log
✔️ c0e0b2d #19 2024-04-26 12:25:12 ~7 min android-e2e 🤖apk 📲
✔️ c0e0b2d #19 2024-04-26 12:25:35 ~7 min android 🤖apk 📲
✔️ c0e0b2d #19 2024-04-26 12:28:23 ~10 min ios 📱ipa 📲
✔️ a9f6a5f #20 2024-04-26 12:40:51 ~5 min android-e2e 🤖apk 📲
✔️ a9f6a5f #20 2024-04-26 12:41:47 ~6 min tests 📄log
✔️ a9f6a5f #20 2024-04-26 12:45:01 ~9 min android 🤖apk 📲
✔️ a9f6a5f #20 2024-04-26 12:50:25 ~15 min ios 📱ipa 📲
✔️ d125a45 #21 2024-04-27 06:40:04 ~5 min tests 📄log
✔️ d125a45 #21 2024-04-27 06:40:13 ~5 min android-e2e 🤖apk 📲
✔️ d125a45 #21 2024-04-27 06:43:35 ~9 min android 🤖apk 📲
✔️ d125a45 #21 2024-04-27 06:44:09 ~9 min ios 📱ipa 📲
Commit #️⃣ Finished (UTC) Duration Platform Result
fe0e2f6 #22 2024-04-29 11:23:08 ~4 min tests 📄log
✔️ fe0e2f6 #22 2024-04-29 11:25:14 ~6 min android-e2e 🤖apk 📲
✔️ fe0e2f6 #22 2024-04-29 11:26:32 ~8 min android 🤖apk 📲
✔️ fe0e2f6 #22 2024-04-29 11:27:56 ~9 min ios 📱ipa 📲
✔️ 9f02b1d #23 2024-04-30 07:44:50 ~3 min tests 📄log
✔️ 9f02b1d #23 2024-04-30 07:46:57 ~6 min android 🤖apk 📲
✔️ 9f02b1d #23 2024-04-30 07:49:01 ~8 min android-e2e 🤖apk 📲
✔️ 9f02b1d #23 2024-04-30 07:50:33 ~9 min ios 📱ipa 📲

@siddarthkay siddarthkay force-pushed the try-to-enable-new-architecture branch 2 times, most recently from 8559bfb to 21a54d6 Compare April 22, 2024 12:40
@siddarthkay siddarthkay marked this pull request as draft April 22, 2024 17:04
@siddarthkay siddarthkay force-pushed the try-to-enable-new-architecture branch 3 times, most recently from 9dc3482 to 2888613 Compare April 23, 2024 09:55
@siddarthkay siddarthkay marked this pull request as ready for review April 23, 2024 10:04
@siddarthkay siddarthkay force-pushed the try-to-enable-new-architecture branch from 2888613 to 0f70fa3 Compare April 23, 2024 10:06
@siddarthkay siddarthkay force-pushed the try-to-enable-new-architecture branch 3 times, most recently from c671cec to 77ce308 Compare April 24, 2024 10:12
nix/mobile/ios/shells/cocoapods.nix Outdated Show resolved Hide resolved
@siddarthkay siddarthkay force-pushed the try-to-enable-new-architecture branch 2 times, most recently from d7de816 to cb05db7 Compare April 24, 2024 11:46
@siddarthkay
Copy link
Contributor Author

@status-im/mobile-qa : we just need a smoke test for this PR since we enable new architecture only for iOS

@siddarthkay siddarthkay requested a review from a team April 24, 2024 12:05
@cammellos
Copy link
Contributor

This looks like a small footprint PR, but just so that everyone is aware in case it causes subtle issues. cc @J-Son89 @smohamedjavid @clauxx

@ajayesivan
Copy link
Contributor

iOS build works perfectly, but make run-ios changes Podfile.lock & project.pbxproj files.

@siddarthkay siddarthkay force-pushed the try-to-enable-new-architecture branch 2 times, most recently from 6d4d582 to 292e65a Compare April 25, 2024 11:07
@siddarthkay
Copy link
Contributor Author

@ajayesivan : thanks for testing this locally. I fixed it with latest push.

@BalogunofAfrica
Copy link
Contributor

@siddarthkay Should this PR also address upgrades we need to do for the new arch as noted here: #18138 (comment)

@status-im-auto
Copy link
Member

90% of end-end tests have passed

Total executed tests: 52
Failed tests: 3
Expected to fail tests: 2
Passed tests: 47
IDs of failed tests: 727230,727229,702807 
IDs of expected to fail tests: 703495,703503 

Failed tests (3)

Click to expand
  • Rerun failed tests

  • Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_join_send_text_messages_push, id: 702807

    Device 2: Find `Text` by `xpath`: `//*[starts-with(@text,'Hey, admin!')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']//*[@content-desc='message-status']/android.widget.TextView`
    Device 2: `Text` is `Sent`

    critical/chats/test_group_chat.py:95: in test_group_chat_join_send_text_messages_push
        self.chats[1].chat_element_by_text(message_to_admin).wait_for_status_to_be('Delivered', timeout=120)
    ../views/chat_view.py:225: in wait_for_status_to_be
        raise TimeoutException("Message status was not changed to %s, it's %s" % (expected_status, current_status))
     Message status was not changed to Delivered, it's Sent
    



    Device sessions

    Class TestWalletMultipleDevice:

    1. test_wallet_send_asset_from_drawer, id: 727230

    # STEP: Getting ETH amount in the wallet of the sender before transaction
    Device 1: Find WalletTab by accessibility id: wallet-stack-tab

    critical/test_wallet.py:117: in test_wallet_send_asset_from_drawer
        sender_balance, receiver_balance, eth_amount_sender, eth_amount_receiver = self._get_balances_before_tx()
    critical/test_wallet.py:39: in _get_balances_before_tx
        self.wallet_1.wallet_tab.click()
    ../views/base_element.py:90: in click
        element = self.find_element()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 1: WalletTab by accessibility id: `wallet-stack-tab` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    2. test_wallet_send_eth, id: 727229

    Device 1: Swiping right on element SlideButton
    Device 1: Find SlideButton by xpath: //*[@resource-id='slide-button-track']

    critical/test_wallet.py:109: in test_wallet_send_eth
        self.wallet_1.send_asset(address=self.receiver['address'], asset_name='Ether', amount=amount_to_send)
    ../views/wallet_view.py:97: in send_asset
        self.confirm_transaction()
    ../views/wallet_view.py:84: in confirm_transaction
        self.slide_and_confirm_with_password()
    ../views/wallet_view.py:78: in slide_and_confirm_with_password
        self.slide_button_track.slide()
    ../views/base_view.py:257: in slide
        self.swipe_right_on_element(width_percentage=1.3, start_x=100)
    ../views/base_element.py:308: in swipe_right_on_element
        location, size = self.get_element_coordinates()
    ../views/base_element.py:294: in get_element_coordinates
        element = self.find_element()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 1: SlideButton by xpath: `//*[@resource-id='slide-button-track']` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    Expected to fail tests (2)

    Click to expand

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_mute_chat, id: 703495

    # STEP: Change device time so chat will be unmuted by timer
    Device 2: Long press on ChatElement

    critical/chats/test_group_chat.py:464: in test_group_chat_mute_chat
        self.errors.verify_no_errors()
    base_test_case.py:190: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Chat is still muted after timeout 
    

    [[Chat is not unmuted after expected time: https://github.com//issues/19627]]

    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_community_discovery, id: 703503

    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] Curated communities not loading, https://github.com//issues/17852]]

    Passed tests (47)

    Click to expand

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_markdown_support, id: 702809
    Device sessions

    2. test_community_hashtag_links_to_community_channels, id: 702948
    Device sessions

    3. test_community_mentions_push_notification, id: 702786
    Device sessions

    4. test_community_leave, id: 702845
    Device sessions

    5. test_community_join_when_node_owner_offline, id: 703629
    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_pin_messages, id: 702732
    Device sessions

    2. test_group_chat_send_image_save_and_share, id: 703297
    Device sessions

    3. test_group_chat_reactions, id: 703202
    Device sessions

    4. test_group_chat_offline_pn, id: 702808
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_delete_via_long_press_relogin, id: 702784
    Device sessions

    2. test_1_1_chat_is_shown_message_sent_delivered_from_offline, id: 702783
    Device sessions

    3. test_1_1_chat_mute_chat, id: 703496
    Device sessions

    Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_add_contact_field_validation, id: 702777
    Device sessions

    2. test_activity_center_contact_request_accept_swipe_mark_all_as_read, id: 702851
    Device sessions

    3. test_activity_center_contact_request_decline, id: 702850
    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_switch, id: 703133
    Device sessions

    2. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    3. test_community_undo_delete_message, id: 702869
    Device sessions

    4. test_community_navigate_to_channel_when_relaunch, id: 702846
    Device sessions

    5. test_community_mute_community_and_channel, id: 703382
    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_several_images_send_reply, id: 703194
    Device sessions

    2. test_community_one_image_send_reply, id: 702859
    Device sessions

    3. test_community_emoji_send_copy_paste_reply, id: 702840
    Device sessions

    4. test_community_mark_all_messages_as_read, id: 703086
    Device sessions

    5. test_community_contact_block_unblock_offline, id: 702894
    Device sessions

    6. test_community_edit_delete_message_when_offline, id: 704615
    Device sessions

    7. test_community_message_delete, id: 702839
    Device sessions

    8. test_community_message_send_check_timestamps_sender_username, id: 702838
    Device sessions

    9. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844
    Device sessions

    10. test_community_message_edit, id: 702843
    Device sessions

    11. test_community_unread_messages_badge, id: 702841
    Device sessions

    Class TestWalletOneDevice:

    1. test_wallet_add_remove_regular_account, id: 727231
    Device sessions

    2. test_wallet_add_remove_watch_only_account, id: 727232
    Device sessions

    Class TestActivityMultipleDevicePRTwo:

    1. test_activity_center_mentions, id: 702957
    Device sessions

    2. test_activity_center_admin_notification_accept_swipe, id: 702958
    Device sessions

    Class TestActivityMultipleDevicePR:

    1. test_navigation_jump_to, id: 702936
    Device sessions

    2. test_activity_center_reply_read_unread_delete_filter_swipe, id: 702947
    Device sessions

    Class TestDeepLinksOneDevice:

    1. test_links_open_universal_links_from_chat, id: 704613
    Device sessions

    2. test_links_deep_links, id: 702775
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782
    Device sessions

    2. test_1_1_chat_text_message_delete_push_disappear, id: 702733
    Device sessions

    3. test_1_1_chat_push_emoji, id: 702813
    Device sessions

    4. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Device sessions

    5. test_1_1_chat_edit_message, id: 702855
    Device sessions

    6. test_1_1_chat_send_image_save_and_share, id: 703391
    Device sessions

    7. test_1_1_chat_pin_messages, id: 702731
    Device sessions

    8. test_1_1_chat_message_reaction, id: 702730
    Device sessions

    Copy link
    Contributor

    @ajayesivan ajayesivan left a comment

    Choose a reason for hiding this comment

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

    Great work!

    @siddarthkay
    Copy link
    Contributor Author

    Hi @BalogunofAfrica : good question, We can do those upgrades gradually in separate PRs.
    I checked and the app still works without the red ones highlighted by npx new-arch

    Screenshot 2024-04-26 at 8 19 04 AM

    I was able to set my profile picture and send an image in chat which uses atleast 2 of these "must upgrade" libs.
    So we're still compatible :)

    Currently I am waiting on @status-im/mobile-qa to give me the green light to merge this PR.

    @siddarthkay siddarthkay force-pushed the try-to-enable-new-architecture branch 6 times, most recently from d125a45 to fe0e2f6 Compare April 29, 2024 11:17
    This commit enables `Fabric` and `Hermes` for `iOS` and in my initial tests the app seemed to behave well.
    We can't do this for Android yet because the blur view implementation is not ported to `Fabric` properly.
    needed for #18138
    
    Please check builds from this PR to see if you notice any performance improvements or degradation.
    
    Please smoke test the iOS builds to see if there are any crashes.
    
    - iOS
    
    status: ready
    @siddarthkay siddarthkay force-pushed the try-to-enable-new-architecture branch from fe0e2f6 to 9f02b1d Compare April 30, 2024 07:40
    @churik churik self-assigned this Apr 30, 2024
    @churik
    Copy link
    Member

    churik commented Apr 30, 2024

    Tested on IOS, no new issues found, PR is ready, thanks!

    @siddarthkay siddarthkay merged commit 86fefc2 into develop Apr 30, 2024
    6 checks passed
    @siddarthkay siddarthkay deleted the try-to-enable-new-architecture branch April 30, 2024 08:38
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    Archived in project
    Archived in project
    Development

    Successfully merging this pull request may close these issues.

    research for enabling new architecture in react-native