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: onboarding transitions for new to status flow #16554

Merged
merged 1 commit into from
Jul 24, 2023

Conversation

briansztamfater
Copy link
Member

@briansztamfater briansztamfater commented Jul 10, 2023

fixes #15877

Summary

Implement transitions for new to status flow in onboarding

Results

iOS
onboardingtransitions.mp4
Android
onboardingtransitionsandroid.mp4

Platforms

  • Android
  • iOS
Functional
  • new account

Steps to test

Scenario 1: new installation

  • Open Status
  • Tap on I'm new to status button in Onboarding
  • Check transitions

Scenario 2: at least 1 account already created

  • Open Status
  • Tap on account selection button at the top-right
  • Tap on plus button at the top-right
  • Select Create new profile
  • Check transitions

status: ready

@briansztamfater briansztamfater self-assigned this Jul 10, 2023
@briansztamfater briansztamfater marked this pull request as draft July 10, 2023 19:29
@status-im-auto
Copy link
Member

status-im-auto commented Jul 10, 2023

Jenkins Builds

Click to see older builds (84)
Commit #️⃣ Finished (UTC) Duration Platform Result
674964b #1 2023-07-10 19:32:27 ~3 min tests 📄log
✔️ 674964b #1 2023-07-10 19:35:21 ~6 min android-e2e 🤖apk 📲
✔️ 674964b #1 2023-07-10 19:35:26 ~6 min android 🤖apk 📲
✔️ 674964b #1 2023-07-10 19:54:12 ~24 min ios 📱ipa 📲
dbcdec8 #2 2023-07-10 20:01:56 ~2 min tests 📄log
1f7848e #3 2023-07-10 20:05:21 ~3 min tests 📄log
✔️ 1f7848e #3 2023-07-10 20:09:07 ~6 min android 🤖apk 📲
✔️ 1f7848e #3 2023-07-10 20:09:12 ~6 min android-e2e 🤖apk 📲
✔️ 1f7848e #3 2023-07-10 20:18:22 ~16 min ios 📱ipa 📲
63ba17c #4 2023-07-10 21:39:22 ~2 min tests 📄log
✔️ 63ba17c #4 2023-07-10 21:43:28 ~6 min android-e2e 🤖apk 📲
✔️ 63ba17c #4 2023-07-10 21:43:33 ~6 min android 🤖apk 📲
✔️ 63ba17c #4 2023-07-10 21:49:26 ~12 min ios 📱ipa 📲
f7603c9 #5 2023-07-10 22:10:23 ~2 min tests 📄log
✔️ f7603c9 #5 2023-07-10 22:13:37 ~5 min android 🤖apk 📲
✔️ f7603c9 #5 2023-07-10 22:13:40 ~5 min android-e2e 🤖apk 📲
✔️ f7603c9 #5 2023-07-10 22:20:32 ~12 min ios 📱ipa 📲
38f2ff2 #6 2023-07-10 22:58:36 ~2 min tests 📄log
✔️ 38f2ff2 #6 2023-07-10 23:01:31 ~5 min android-e2e 🤖apk 📲
✔️ 38f2ff2 #6 2023-07-10 23:01:44 ~5 min android 🤖apk 📲
0974f22 #7 2023-07-10 23:08:11 ~2 min tests 📄log
cd681c4 #8 2023-07-10 23:13:10 ~2 min tests 📄log
✔️ cd681c4 #8 2023-07-10 23:16:03 ~5 min android-e2e 🤖apk 📲
✔️ cd681c4 #8 2023-07-10 23:16:25 ~5 min android 🤖apk 📲
✔️ cd681c4 #8 2023-07-10 23:23:04 ~12 min ios 📱ipa 📲
0e23711 #10 2023-07-10 23:54:00 ~3 min tests 📄log
✔️ 0e23711 #10 2023-07-10 23:56:40 ~6 min android-e2e 🤖apk 📲
✔️ 0e23711 #10 2023-07-10 23:56:52 ~6 min android 🤖apk 📲
✔️ 0e23711 #10 2023-07-11 00:10:48 ~20 min ios 📱ipa 📲
e6bd035 #11 2023-07-11 14:35:04 ~2 min tests 📄log
✔️ e6bd035 #11 2023-07-11 14:39:21 ~6 min android-e2e 🤖apk 📲
✔️ e6bd035 #11 2023-07-11 14:39:25 ~6 min android 🤖apk 📲
6961c1e #12 2023-07-11 14:51:45 ~4 min tests 📄log
✔️ 6961c1e #12 2023-07-11 14:55:23 ~8 min android-e2e 🤖apk 📲
✔️ 6961c1e #12 2023-07-11 14:55:59 ~9 min ios 📱ipa 📲
✔️ 6961c1e #12 2023-07-11 14:56:06 ~9 min android 🤖apk 📲
f652b74 #13 2023-07-11 17:33:47 ~3 min tests 📄log
✔️ f652b74 #13 2023-07-11 17:36:05 ~5 min android 🤖apk 📲
✔️ f652b74 #13 2023-07-11 17:36:08 ~5 min android-e2e 🤖apk 📲
✔️ f652b74 #13 2023-07-11 17:44:01 ~13 min ios 📱ipa 📲
✔️ 9c344da #15 2023-07-12 17:33:51 ~5 min ios 📱ipa 📲
✔️ 9c344da #15 2023-07-12 17:34:16 ~6 min android-e2e 🤖apk 📲
✔️ 9c344da #15 2023-07-12 17:34:18 ~6 min android 🤖apk 📲
✔️ 9c344da #15 2023-07-12 17:35:26 ~7 min tests 📄log
916b6c8 #17 2023-07-12 18:16:55 ~2 min tests 📄log
✔️ 916b6c8 #17 2023-07-12 18:20:34 ~6 min android-e2e 🤖apk 📲
✔️ 916b6c8 #17 2023-07-12 18:20:37 ~6 min android 🤖apk 📲
✔️ 916b6c8 #17 2023-07-12 18:26:50 ~12 min ios 📱ipa 📲
5bd9e2f #18 2023-07-12 19:14:15 ~2 min tests 📄log
✔️ 5bd9e2f #18 2023-07-12 19:16:58 ~5 min android-e2e 🤖apk 📲
✔️ 5bd9e2f #18 2023-07-12 19:17:26 ~5 min android 🤖apk 📲
✔️ 5bd9e2f #18 2023-07-12 19:26:07 ~14 min ios 📱ipa 📲
024ce86 #20 2023-07-12 19:35:44 ~2 min tests 📄log
✔️ 024ce86 #20 2023-07-12 19:39:00 ~6 min android-e2e 🤖apk 📲
✔️ 024ce86 #20 2023-07-12 19:39:15 ~6 min android 🤖apk 📲
✔️ 024ce86 #20 2023-07-12 19:40:21 ~7 min ios 📱ipa 📲
505515d #21 2023-07-13 15:34:29 ~2 min tests 📄log
✔️ 505515d #21 2023-07-13 15:37:25 ~5 min android 🤖apk 📲
✔️ 505515d #21 2023-07-13 15:37:25 ~5 min android-e2e 🤖apk 📲
✔️ 505515d #21 2023-07-13 15:47:51 ~16 min ios 📱ipa 📲
✔️ f8ce682 #22 2023-07-13 16:56:19 ~5 min android 🤖apk 📲
✔️ f8ce682 #22 2023-07-13 16:56:33 ~6 min ios 📱ipa 📲
✔️ f8ce682 #22 2023-07-13 16:57:46 ~7 min android-e2e 🤖apk 📲
✔️ f8ce682 #22 2023-07-13 16:59:00 ~8 min tests 📄log
d907aa6 #23 2023-07-14 16:38:57 ~4 min tests 📄log
✔️ d907aa6 #23 2023-07-14 16:39:54 ~5 min android-e2e 🤖apk 📲
✔️ d907aa6 #23 2023-07-14 16:43:15 ~9 min android 🤖apk 📲
✔️ d907aa6 #23 2023-07-14 16:49:54 ~15 min ios 📱ipa 📲
d907aa6 #24 2023-07-14 16:50:02 ~2 min tests 📄log
✔️ d907aa6 #25 2023-07-14 16:59:12 ~7 min tests 📄log
fa4770f #26 2023-07-17 23:23:22 ~2 min tests 📄log
✔️ fa4770f #24 2023-07-17 23:26:46 ~5 min android 🤖apk 📲
✔️ 3c782c3 #25 2023-07-17 23:32:36 ~5 min android-e2e 🤖apk 📲
✔️ 3c782c3 #25 2023-07-17 23:34:07 ~7 min android 🤖apk 📲
✔️ 3c782c3 #27 2023-07-17 23:35:22 ~8 min tests 📄log
✔️ 3c782c3 #25 2023-07-17 23:39:45 ~12 min ios 📱ipa 📲
✔️ 5d3e475 #26 2023-07-19 04:00:02 ~5 min android-e2e 🤖apk 📲
✔️ 5d3e475 #26 2023-07-19 04:01:52 ~7 min android 🤖apk 📲
✔️ 5d3e475 #28 2023-07-19 04:02:41 ~8 min tests 📄log
✔️ 5d3e475 #26 2023-07-19 04:06:15 ~11 min ios 📱ipa 📲
✔️ a2cae3c #27 2023-07-23 23:28:28 ~6 min android-e2e 🤖apk 📲
✔️ a2cae3c #27 2023-07-23 23:28:31 ~6 min android 🤖apk 📲
✔️ a2cae3c #27 2023-07-23 23:28:43 ~6 min ios 📱ipa 📲
✔️ a2cae3c #29 2023-07-23 23:30:07 ~7 min tests 📄log
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 8a7ba6c #29 2023-07-24 00:43:18 ~6 min android 🤖apk 📲
✔️ 8a7ba6c #29 2023-07-24 00:43:19 ~6 min android-e2e 🤖apk 📲
✔️ 8a7ba6c #29 2023-07-24 00:43:39 ~6 min ios 📱ipa 📲
✔️ 8a7ba6c #31 2023-07-24 00:45:12 ~7 min tests 📄log
✔️ 5a3c66d #31 2023-07-24 13:04:19 ~5 min android 🤖apk 📲
✔️ 5a3c66d #31 2023-07-24 13:05:40 ~6 min ios 📱ipa 📲
✔️ 5a3c66d #31 2023-07-24 13:06:15 ~7 min android-e2e 🤖apk 📲
✔️ 5a3c66d #33 2023-07-24 13:07:44 ~8 min tests 📄log

Comment on lines 19 to 32
blur-show-fn (fn []
(reanimated/animate opacity
1
transition-half-duration-ms)
(js/clearInterval @timer-interval)
(reset! timer-interval
(js/setInterval
(fn []
(if (< @blur-amount max-blur-amount)
(swap! blur-amount + 1)
(js/clearInterval @timer-interval)))
(/ constants/onboarding-modal-animation-duration
max-blur-amount
2))))
Copy link
Member Author

@briansztamfater briansztamfater Jul 14, 2023

Choose a reason for hiding this comment

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

We cannot animate blur-amount, so we use a ratom and a timer to update blur-amount value + animate opacity to achieve some smoothness.

We use this animation while pushing a screen with transparent background to achieve an effect of blurring the background while the new content is pushed.

@briansztamfater briansztamfater changed the title [WIP] feat: onboarding transition for new to status flow feat: onboarding transitions for new to status flow Jul 14, 2023
@briansztamfater briansztamfater marked this pull request as ready for review July 14, 2023 16:34
@@ -6,9 +6,8 @@

(defn page-container
[insets]
{:flex 1
:padding-top (:top insets)
:background-color colors/neutral-80-opa-80-blur})
Copy link
Member Author

@briansztamfater briansztamfater Jul 14, 2023

Choose a reason for hiding this comment

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

We don't need background colors anymore inside onboarding screens because we now use the screen behind as the background

@@ -26,7 +26,7 @@
{:events [:onboarding-2/profile-data-set]}
[{:keys [db]} onboarding-data]
{:db (update db :onboarding-2/profile merge onboarding-data)
:dispatch [:navigate-to :create-profile-password]})
:dispatch [:navigate-to-within-stack [:create-profile-password :new-to-status]]})
Copy link
Member Author

Choose a reason for hiding this comment

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

We now navigate within the :new-to-status stack that is inside a modal

@@ -1,7 +1,8 @@
(ns status-im2.contexts.onboarding.identifiers.style)

(def page-container
{:flex 1})
{:flex 1
:overflow :hidden})
Copy link
Member Author

Choose a reason for hiding this comment

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

Fix for a glitch when navigating to other screen and the carousel overflows the screen bounds

Comment on lines 69 to 75
(def new-to-status-modal-animations
{:showModal {:translationX {:from (:width (rn/get-window))
:to 0
:duration constants/onboarding-modal-animation-duration}}
:dismissModal {:translationX {:from 0
:to (:width (rn/get-window))
:duration constants/onboarding-modal-animation-duration}}})
Copy link
Member Author

@briansztamfater briansztamfater Jul 14, 2023

Choose a reason for hiding this comment

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

For :new-to-status screen we now use a modal, but change transition animations to behave like a normal push. This is because we need to preserve the screen behind as a background and the only way to do that is using a modal with :modalPresentationStyle option with :overCurrentContext as its value

(/ constants/onboarding-modal-animation-duration
max-blur-amount
2))))]
(rn/use-effect
Copy link
Contributor

Choose a reason for hiding this comment

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

consider using reagent/with-let. cc @ulisesmac

Copy link
Contributor

@ulisesmac ulisesmac Jul 18, 2023

Choose a reason for hiding this comment

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

@briansztamfater @J-Son89

I thought the same at first sight, then I tried to modify the code to achieve it but it's not possible.

The functions @briansztamfater is passing to the atoms depend on a reanimated shared value, which is a hook. so, the problem is, the bindings in with-let are executed only once (when the component is mounted) and we'd need to create the opacity shared value there, but in React we must use the same amount of hooks in every re-render.

btw, I haven't shared the with-let explanation, if you want to read it:
https://github.com/reagent-project/reagent/blob/master/doc/CreatingReagentComponents.md#appendix-b---with-let-macro

Just to be clear enough:
If we declare opacity in reagent/with-let, the hook will be created in the first render, then for the second render, that hook will not be executed, so React will complain about it and it'll throw an exception saying somehting like
"Rendered fewer hooks than expected. This may be caused by an accidental early return statement in React Hooks"

Copy link
Member

@smohamedjavid smohamedjavid left a comment

Choose a reason for hiding this comment

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

@briansztamfater - We have an issue. When taps on the back button in the :welcome screen, it takes the user back to :enable-notification screen with the help of :init-root.

:on-press #(rf/dispatch [:init-root root])}}])

Because of :init-root the blurred background is not displayed.

I'm not sure. Maybe, we need to include the :welcome screen in the modal presentation to fix it.

But, we will have this same issue during syncing as once syncing is successful, we take the user to the :enable-notification screen.

{:on-press #(rf/dispatch [:init-root :enable-notifications])

@briansztamfater
Copy link
Member Author

@briansztamfater - We have an issue. When taps on the back button in the :welcome screen, it takes the user back to :enable-notification screen with the help of :init-root.

:on-press #(rf/dispatch [:init-root root])}}])

Because of :init-root the blurred background is not displayed.


I'm not sure. Maybe, we need to include the :welcome screen in the modal presentation to fix it.

But, we will have this same issue during syncing as once syncing is successful, we take the user to the :enable-notification screen.

{:on-press #(rf/dispatch [:init-root :enable-notifications])

@smohamedjavid Thanks for taking the time to test and finding this issue, I'll check it out and implement a solution :)

@status-im-auto
Copy link
Member

✔️ status-mobile/prs/android-e2e/PR-16554#24 🔹 ~6 min 2 sec 🔹 fa4770f 🔹 📦 android-e2e package

@briansztamfater
Copy link
Member Author

briansztamfater commented Jul 19, 2023

@smohamedjavid I've implemented a solution adding :welcome screen to the modal stack as it feels more natural, and in the case of syncing complete showing :enable-notifications as a modal with the same effect as :new-to-status (push transition) while moving the content of the screen behind so we keep the blurred background :)
This specific change is in this commit

The rest of suggestions from reviewers were implemented as well :)

Copy link
Contributor

@J-Son89 J-Son89 left a comment

Choose a reason for hiding this comment

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

Nice!

@smohamedjavid
Copy link
Member

@smohamedjavid I've implemented a solution adding :welcome screen to the modal stack as it feels more natural, and in the case of syncing complete showing :enable-notifications as a modal with the same effect as :new-to-status (push transition) while moving the content of the screen behind so we keep the blurred background :) This specific change is in this commit

The rest of suggestions from reviewers were implemented as well :)

Thanks @briansztamfater! Duly appreciate it! 😄

Copy link
Member

@smohamedjavid smohamedjavid left a comment

Choose a reason for hiding this comment

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

Checked Onboarding and Syncing using PR build. Works as expected! 😃 👍

Thanks again for the fix!

:popGesture false
:modalPresentationStyle :overCurrentContext
:hardwareBackButton {:dismissModalOnPress false
:popStackOnPress false}}
Copy link
Contributor

Choose a reason for hiding this comment

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

Nit: for using kebab case wherever possible 😅

@status-im-auto
Copy link
Member

86% of end-end tests have passed

Total executed tests: 36
Failed tests: 5
Passed tests: 31
IDs of failed tests: 702731,702851,702783,702732,703133 

Failed tests (5)

Click to expand
  • Rerun failed tests

  • Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_pin_messages, id: 702732
    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] Pin feature is in development]]

    Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_activity_center_contact_request_accept_swipe_mark_all_as_read, id: 702851

    Device 2: Find Button by accessibility id: tab-contacts
    Device 2: Tap on found: Button

    medium/test_activity_center.py:111: in test_activity_center_contact_request_accept_swipe_mark_all_as_read
        self.errors.verify_no_errors()
    base_test_case.py:182: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Contact was not added to contact list after accepting contact request (as receiver)
    E    Contact was not added to contact list after accepting contact request (as sender)
    



    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_pin_messages, id: 702731

    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] Pin feature is in development]]

    2. test_1_1_chat_is_shown_message_sent_delivered_from_offline, id: 702783

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

    critical/chats/test_1_1_public_chats.py:1379: in test_1_1_chat_is_shown_message_sent_delivered_from_offline
        self.errors.verify_no_errors()
    base_test_case.py:182: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Message status was not changed to Delivered, it's Sent after back up online!
    



    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_switch, id: 703133

    Device 1: Find Button by accessibility id: show-profiles
    Device 1: Tap on found: Button

    critical/test_public_chat_browsing.py:433: in test_restore_multiaccount_with_waku_backup_remove_switch
        self.errors.verify_no_errors()
    base_test_case.py:182: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Contact(s) was (were) not restored from backup: MyCustomNickname!
    



    Device sessions

    Passed tests (31)

    Click to expand

    Class TestActivityMultipleDevicePR:

    1. test_activity_center_reply_read_unread_delete_filter_swipe, id: 702947
    Device sessions

    2. test_navigation_jump_to, id: 702936
    Device sessions

    3. test_activity_center_mentions, id: 702957
    Device sessions

    4. test_activity_center_admin_notification_accept_swipe, id: 702958
    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_send_image_save_and_share, id: 703297
    Device sessions

    2. test_group_chat_join_send_text_messages_push, id: 702807
    Device sessions

    3. test_group_chat_offline_pn, id: 702808
    Device sessions

    4. test_group_chat_reactions, id: 703202
    Device sessions

    Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_activity_center_contact_request_decline, id: 702850
    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_community_navigate_to_channel_when_relaunch, id: 702846
    Device sessions

    2. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_one_image_send_reply, id: 702859
    Device sessions

    2. test_community_message_edit, id: 702843
    Device sessions

    3. test_community_mentions_push_notification, id: 702786
    Device sessions

    4. test_community_contact_block_unblock_offline, id: 702894
    Device sessions

    5. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844
    Device sessions

    6. test_community_mark_all_messages_as_read, id: 703086
    Device sessions

    7. test_community_message_send_check_timestamps_sender_username, id: 702838
    Device sessions

    8. test_community_several_images_send_reply, id: 703194
    Device sessions

    9. test_community_leave, id: 702845
    Device sessions

    10. test_community_unread_messages_badge, id: 702841
    Device sessions

    11. test_community_emoji_send_copy_paste_reply, id: 702840
    Device sessions

    12. test_community_message_delete, id: 702839
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_delete_via_long_press_relogin, id: 702784
    Device sessions

    2. test_1_1_chat_text_message_delete_push_disappear, id: 702733
    Device sessions

    3. test_1_1_chat_message_reaction, id: 702730
    Device sessions

    4. test_1_1_chat_send_image_save_and_share, id: 703391
    Device sessions

    5. test_1_1_chat_push_emoji, id: 702813
    Device sessions

    6. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Device sessions

    7. test_1_1_chat_edit_message, id: 702855
    Device sessions

    8. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782
    Device sessions

    @qoqobolo qoqobolo self-assigned this Jul 20, 2023
    @qoqobolo
    Copy link
    Contributor

    Hey @briansztamfater, thanks for your work!
    The transition looks great!
    But there is an issue with the blurred background on iOS, probably something similar to what @smohamedjavid discovered above.

    ISSUE 1: I'm new to Status, Create profile and Create profile password screens don't have blurred background if you start creating a new profile from the profile selector screen [iOS only]

    Steps to reproduce:

    1. Create a profile on iOS device
    2. Log out
    3. Start creating a new profile

    Develop vs PR

    Screenshot 2023-07-21 at 16 30 16 Screenshot 2023-07-21 at 16 31 35
    IMG_1605.MP4

    @briansztamfater
    Copy link
    Member Author

    @qoqobolo Thanks for testing! Will rebase and take a look at the issue :)

    @briansztamfater briansztamfater force-pushed the feat/new-to-status-transition branch 2 times, most recently from 499407d to 8a7ba6c Compare July 24, 2023 00:36
    @briansztamfater
    Copy link
    Member Author

    @qoqobolo issue should be fixed now!

    @qoqobolo
    Copy link
    Contributor

    Thanks @briansztamfater!
    PR is ready to be merged.

    Signed-off-by: Brian Sztamfater <brian@status.im>
    @briansztamfater briansztamfater merged commit e672bf9 into develop Jul 24, 2023
    2 checks passed
    @briansztamfater briansztamfater deleted the feat/new-to-status-transition branch July 24, 2023 13:17
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    No open projects
    Archived in project
    Development

    Successfully merging this pull request may close these issues.

    Create transition component for onboarding designs
    8 participants