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

Fix/28098: Clicking back button bring back the workspace #28573

Conversation

DylanDylann
Copy link
Contributor

@DylanDylann DylanDylann commented Oct 2, 2023

Details

Web - Clicking the back button brings back the workspace settings panel

Fixed Issues

$ #28098
PROPOSAL: #28098 (comment)

Tests

  • Web | Desktop:
  1. Open a new account on ND
  2. Open any report (mark as 1st report) => then open another report (mark as 2nd report)
  3. Click on FAB > New workspace
  4. Click outside the panel to close it
  5. Click on the browser back button
  6. Verify that the side panel should not open when clicking back, instead app should load the 1st report
  • Android | IOS | IOS / Safari | Android / Chrome:
  1. Open a new account on ND
  2. Click on FAB > New workspace
  3. Click back button until go to the home screen and verify that it works as normal
  • Verify that no errors appear in the JS console

Offline tests

QA Steps

  • Web | Desktop:
  1. Open a new account on ND
  2. Open any report (mark as 1st report) => then open another report (mark as 2nd report)
  3. Click on FAB > New workspace
  4. Click outside the panel to close it
  5. Click on the browser back button
  6. Verify that the side panel should not open when clicking back, instead app should load the 1st report
  • Android | IOS | Safari | Mobile chrome:
  1. Open a new account on ND
  2. Click on FAB > New workspace
  3. Click back button until go to the home screen and verify that it works as normal
  • Verify that no errors appear in the JS console

PR Author Checklist

  • I linked the correct issue in the ### Fixed Issues section above
  • I wrote clear testing steps that cover the changes made in this PR
    • I added steps for local testing in the Tests section
    • I added steps for the expected offline behavior in the Offline steps section
    • I added steps for Staging and/or Production testing in the QA steps section
    • I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
    • I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).
  • I included screenshots or videos for tests on all platforms
  • I ran the tests on all platforms & verified they passed on:
    • Android / native
    • Android / Chrome
    • iOS / native
    • iOS / Safari
    • MacOS / Chrome / Safari
    • MacOS / Desktop
  • I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
  • I followed proper code patterns (see Reviewing the code)
    • I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
    • I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
    • I verified that comments were added to code that is not self explanatory
    • I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
    • I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
      • If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:
    • I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
    • I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
    • I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
    • I verified the JSDocs style guidelines (in STYLE.md) were followed
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I followed the guidelines as stated in the Review Guidelines
  • I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
  • I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
  • I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
  • I verified that if a function's arguments changed that all usages have also been updated correctly
  • If a new component is created I verified that:
    • A similar component doesn't exist in the codebase
    • All props are defined accurately and each prop has a /** comment above it */
    • The file is named correctly
    • The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
    • The only data being stored in the state is data necessary for rendering and nothing else
    • If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes
    • For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
    • Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
    • All JSX used for rendering exists in the render method
    • The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions
  • If any new file was added I verified that:
    • The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory
  • If a new CSS style is added I verified that:
    • A similar style doesn't already exist
    • The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
  • I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
Screencast.from.02-10-2023.09.51.33.webm
Mobile Web - Chrome
384648828_6348671445262287_6088025575719771248_n.mp4
Mobile Web - Safari
bring-back-safari.mp4
Desktop
bring-back-desktop-output.mov
iOS
bring-back-ios.mov
Android
Screencast.from.02-10-2023.10.47.24.webm

@DylanDylann DylanDylann marked this pull request as ready for review October 2, 2023 08:09
@DylanDylann DylanDylann requested a review from a team as a code owner October 2, 2023 08:09
@melvin-bot melvin-bot bot requested review from fedirjh and removed request for a team October 2, 2023 08:09
@melvin-bot
Copy link

melvin-bot bot commented Oct 2, 2023

@fedirjh Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button]

Comment on lines 330 to 331
})
.then(() => Navigation.isNavigationReady())
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
})
.then(() => Navigation.isNavigationReady())
return Navigation.isNavigationReady();
})

Little simplification.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

just updated. Please help review

@fedirjh

This comment was marked as outdated.

Copy link
Contributor

@fedirjh fedirjh left a comment

Choose a reason for hiding this comment

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

Looks good to me.

Edit: We have a bug that would be fixed before moving foraward

@melvin-bot melvin-bot bot requested a review from danieldoglas October 2, 2023 15:40
@@ -325,9 +325,11 @@ function createWorkspaceAndNavigateToIt(policyOwnerEmail = '', makeMeAdmin = fal
}

if (shouldNavigateToAdminChat) {
Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(adminsChatReportID));
Copy link
Contributor

Choose a reason for hiding this comment

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

@DylanDylann Why did we remove this line? on staging when we create a new workspace , it should be redirected to admins room.

Copy link
Contributor

Choose a reason for hiding this comment

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

The dismissModal should redirect to #admins room but that doesn’t seem to be the case, can you please check?

Copy link
Contributor Author

@DylanDylann DylanDylann Oct 2, 2023

Choose a reason for hiding this comment

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

I replace it by Navigation.dismissModal(adminsChatReportID);, it still redirects to the admins room, and removes the current RHN modal as well

Copy link
Contributor Author

Choose a reason for hiding this comment

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

As I mentioned in the proposal #28098 (comment):

we can make sure that the current RIGHT_MODAL_NAVIGATOR screen is REPLACE by report screen, rather than PUSH a new report screen to the stack by using Navigation.dismissModal function:

Copy link
Contributor

Choose a reason for hiding this comment

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

it still redirects to the admins room, and removes the current RHN modal as well

It doesn’t work for me.

Can we just dismiss the modal , navigate to admins then open the modal again?

Copy link
Contributor

Choose a reason for hiding this comment

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

the browsers history is just [/r/{reportID}, /settings, /settings/workspaces]`

That's the expected behavior, no? I mean what's the issue here?

Copy link
Contributor Author

@DylanDylann DylanDylann Oct 5, 2023

Choose a reason for hiding this comment

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

or sorry. My bad. I have updated this comment #28573 (comment)

the browser`s history is just [/r/{reportID}, /settings/workspaces]

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@fedirjh do you have any suggestions for this one? The issue is that window.history does not sync with the react-navigation stacks

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@fedirjh based on the issue here #28573 (comment), I just updated the PR to fix the error mentioned here #28573 (comment)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Result

#28573 (comment)

Screencast.from.06-10-2023.22.40.21.webm
Screencast.from.06-10-2023.22.39.00.webm

@danieldoglas
Copy link
Contributor

@mountiny I'm going OOO for the next two weeks, if this is ready to merge, can you please do the last review? Thanks!

src/libs/actions/App.js Outdated Show resolved Hide resolved
@mountiny mountiny changed the title Fix/28098: Clicking back button bring back the workspace [HOLD App#16935] Fix/28098: Clicking back button bring back the workspace Oct 6, 2023
@mountiny mountiny changed the title [HOLD App#16935] Fix/28098: Clicking back button bring back the workspace Fix/28098: Clicking back button bring back the workspace Oct 20, 2023
@mountiny
Copy link
Contributor

@DylanDylann could you please sync with main and since #16935 is already merged? This simplified it as we are not navigating to additional report first now

@DylanDylann
Copy link
Contributor Author

DylanDylann commented Oct 20, 2023

@mountiny In the staging: https://staging.new.expensify.com/

Screencast.from.20-10-2023.15.43.24.webm

@fedirjh
Copy link
Contributor

fedirjh commented Oct 23, 2023

I cannot reproduce this bug

@DylanDylann I am still able to reproduce it. Staging v1.3.88-11

CleanShot.2023-10-23.at.02.19.14.mp4

@DylanDylann
Copy link
Contributor Author

@fedirjh Just updated PR to fix the issue: use createWorkspaceWithPolicyDraftAndNavigateToIt rather than createWorkspaceAndNavigateToIt when clicking on "New workspace" action button. Here is the result:

Screencast.from.23-10-2023.10.54.13.webm

@fedirjh
Copy link
Contributor

fedirjh commented Oct 23, 2023

That’s perfect, @DylanDylann Let's update all other parts where createWorkspaceAndNavigateToIt is used.

@DylanDylann
Copy link
Contributor Author

@fedirjh please help review the latest change in the PR

@fedirjh
Copy link
Contributor

fedirjh commented Oct 25, 2023

Bug?: Creating a workspace from old dot does not open the #admins room in new dot. I am sure this will be flagged as deploy blocker.

  • In production, Creating a workspace from old dot does redirect to ND and it opens the #admins room.
  • On this PR, Creating a workspace from old dot, it does not open #admins room, it instead opens an archived room.

Current PR behavior :

CleanShot.2023-10-25.at.11.20.38.mp4

Production behavior :

CleanShot.2023-10-25.at.11.22.29.mp4

@DylanDylann
Copy link
Contributor Author

@fedirjh I am using the createWorkspaceWithPolicyDraftAndNavigateToIt entire the app, that not navigate to #admin room. So we need to confirm that with the create new workspace from oldDot flow, should we keep using the old logic (using createWorkspaceAndNavigateToIt that add the #admin room) or using createWorkspaceWithPolicyDraftAndNavigateToIt ? @mountiny

@mountiny
Copy link
Contributor

I think we can remove it there too so this new behaviour would be expected @fedirjh @DylanDylann

@mountiny
Copy link
Contributor

conflicts

@DylanDylann
Copy link
Contributor Author

@mountiny fixed conflict

@fedirjh
Copy link
Contributor

fedirjh commented Oct 26, 2023

Reviewer Checklist

  • I have verified the author checklist is complete (all boxes are checked off).
  • I verified the correct issue is linked in the ### Fixed Issues section above
  • I verified testing steps are clear and they cover the changes made in this PR
    • I verified the steps for local testing are in the Tests section
    • I verified the steps for Staging and/or Production testing are in the QA steps section
    • I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
  • I checked that screenshots or videos are included for tests on all platforms
  • I included screenshots or videos for tests on all platforms
  • I verified tests pass on all platforms & I tested again on:
    • Android / native
    • Android / Chrome
    • iOS / native
    • iOS / Safari
    • MacOS / Chrome / Safari
    • MacOS / Desktop
  • If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
  • I verified proper code patterns were followed (see Reviewing the code)
    • I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
    • I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
    • I verified that comments were added to code that is not self explanatory
    • I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
    • I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
    • I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
    • I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
    • I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
    • I verified the JSDocs style guidelines (in STYLE.md) were followed
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I verified that this PR follows the guidelines as stated in the Review Guidelines
  • I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
  • I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
  • I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
  • If a new component is created I verified that:
    • A similar component doesn't exist in the codebase
    • All props are defined accurately and each prop has a /** comment above it */
    • The file is named correctly
    • The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
    • The only data being stored in the state is data necessary for rendering and nothing else
    • For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
    • Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
    • All JSX used for rendering exists in the render method
    • The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions
  • If any new file was added I verified that:
    • The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory
  • If a new CSS style is added I verified that:
    • A similar style doesn't already exist
    • The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
  • I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
CleanShot.2023-10-26.at.12.36.17.mp4
CleanShot.2023-10-26.at.13.12.13.mp4
Mobile Web - Chrome
CleanShot.2023-10-02.at.16.20.39.mp4
Mobile Web - Safari
CleanShot.2023-10-26.at.13.23.46.mp4
Desktop
CleanShot.2023-10-26.at.13.18.57.mp4
iOS
CleanShot.2023-10-02.at.16.32.39.mp4
Android
CleanShot.2023-10-02.at.16.16.50.mp4

Copy link
Contributor

@fedirjh fedirjh left a comment

Choose a reason for hiding this comment

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

Looks good to me.

@DylanDylann
Copy link
Contributor Author

@mountiny please help review this one as C+ is approved

Copy link
Contributor

@mountiny mountiny left a comment

Choose a reason for hiding this comment

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

Thank you! @danieldoglas all yours

@DylanDylann
Copy link
Contributor Author

@danieldoglas please help reivew this PR when you have a chance

@danieldoglas danieldoglas merged commit be61fbe into Expensify:main Oct 30, 2023
16 checks passed
@OSBotify
Copy link
Contributor

✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

@github-actions github-actions bot added the DeployBlockerCash This issue or pull request should block deployment label Oct 30, 2023
@github-actions
Copy link
Contributor

Performance Comparison Report 📊

Significant Changes To Duration

Name Duration
App start TTI 1040.825 ms → 1309.529 ms (+268.704 ms, +25.8%) 🔴
App start runJsBundle 719.873 ms → 916.087 ms (+196.214 ms, +27.3%) 🔴
Show details
Name Duration
App start TTI Baseline
Mean: 1040.825 ms
Stdev: 22.828 ms (2.2%)
Runs: 990.4682790003717 997.367425000295 998.3007389996201 999.903986999765 1000.2275050003082 1000.6155030000955 1006.0463579995558 1010.3836709996685 1011.2538329996169 1011.5941759999841 1013.8950540004298 1015.4562950003892 1017.0810529999435 1017.5386199997738 1019.3038780000061 1022.7361800000072 1023.4526599999517 1023.5023069996387 1025.108093000017 1025.7118710000068 1026.35204599984 1027.4254529997706 1028.4259740002453 1028.8314690003172 1029.4319280004129 1030.9698050003499 1034.2521919999272 1034.28761999961 1035.1590090002865 1035.3494739998132 1035.4450770001858 1037.9627790004015 1039.4487319998443 1039.8931369995698 1040.6308720000088 1040.8558609997854 1041.5229160003364 1041.6189529998228 1042.145494000055 1042.4362270003185 1045.4281660001725 1045.572216000408 1046.1773189995438 1046.7731229998171 1049.3379710000008 1049.5419110003859 1049.5874899998307 1049.7200490003452 1049.734985000454 1051.0016010003164 1051.0187370004132 1051.0666330000386 1052.4969910001382 1052.9724359996617 1053.1889410000294 1053.6565690003335 1053.7128079999238 1053.948985000141 1054.1806920003146 1055.195884999819 1055.5267329998314 1055.7318479996175 1056.0607190001756 1064.2775830002502 1066.0257999999449 1069.274459999986 1069.4063330003992 1070.3911849996075 1070.5190030001104 1074.9831860000268 1076.4424449997023 1077.2828959999606 1077.3284250004217 1081.569621999748 1086.2407269999385 1094.9673060001805

Current
Mean: 1309.529 ms
Stdev: 43.503 ms (3.3%)
Runs: 1214.1595529997721 1231.735112999566 1233.0749669997022 1238.2745920000598 1238.3100479999557 1238.4373169997707 1238.5041720001027 1253.1171409999952 1257.3656989997253 1259.42689100001 1262.2370589999482 1266.171319000423 1266.334246000275 1266.5299659995362 1269.603361999616 1271.6245400002226 1272.5769600002095 1274.2390660000965 1276.0925209997222 1276.2861590003595 1276.5976839996874 1279.5441840002313 1280.199792000465 1281.3931309999898 1281.6601010002196 1283.1245769998059 1288.3260380001739 1290.9467820003629 1291.2364010000601 1292.465839999728 1294.4845160003752 1301.6945650000125 1301.7366829998791 1303.4417289998382 1304.7066959999502 1305.093263999559 1306.1420499999076 1306.4975859997794 1308.5539760002866 1309.2085600001737 1310.361243000254 1313.5015900004655 1313.5187139995396 1314.6999500002712 1315.5658529996872 1316.4988089995459 1317.669443000108 1318.707988999784 1323.3010579999536 1324.3401589998975 1326.3968979995698 1327.695005999878 1328.1681730002165 1328.6234879996628 1328.7244520001113 1330.4182360004634 1332.5790050001815 1332.7823900002986 1333.2119939997792 1333.3638720000163 1334.5573030002415 1335.6095839999616 1337.3291899999604 1337.6234269998968 1337.9866260001436 1344.4472340000793 1346.617165000178 1347.3730800002813 1352.2493289997801 1356.7321600001305 1369.1613029995933 1372.4636369999498 1377.7746270000935 1378.1666249996051 1380.648678000085 1381.450596000068 1389.5033889999613 1396.5163740003482 1409.2165130004287 1415.6451040003449
App start runJsBundle Baseline
Mean: 719.873 ms
Stdev: 20.947 ms (2.9%)
Runs: 675 676 678 679 683 684 685 687 695 696 696 697 701 701 702 703 704 704 705 706 709 710 711 712 712 713 714 714 715 715 715 715 715 716 716 718 718 719 720 720 720 721 721 722 723 723 724 724 726 726 727 727 728 728 730 731 732 732 733 734 734 735 736 736 737 737 737 737 739 740 749 750 751 753 758 760 764 765 766

Current
Mean: 916.087 ms
Stdev: 35.455 ms (3.9%)
Runs: 847 850 855 857 857 860 860 867 867 870 873 876 877 878 878 882 883 884 886 888 889 890 891 893 897 901 903 906 907 908 909 910 911 914 914 915 916 916 916 917 918 918 919 921 923 924 924 925 926 927 927 928 928 930 938 938 939 939 940 941 942 942 943 944 945 946 946 947 947 948 952 952 961 962 971 972 974 989 994 1019

Meaningless Changes To Duration

Show entries
Name Duration
Open Search Page TTI 706.920 ms → 741.228 ms (+34.308 ms, +4.9%)
App start nativeLaunch 22.833 ms → 22.950 ms (+0.117 ms, +0.5%)
App start regularAppStart 0.013 ms → 0.017 ms (+0.004 ms, +29.3%) 🟡
Show details
Name Duration
Open Search Page TTI Baseline
Mean: 706.920 ms
Stdev: 35.181 ms (5.0%)
Runs: 622.0469559999183 645.9985760003328 649.5439460007474 651.9363199993968 663.5967610003427 664.0174969993532 666.6157639995217 668.0553390001878 668.6843269998208 668.7822269992903 669.2681069998071 669.4894199995324 669.6848959997296 670.3620199998841 673.8983160005882 676.3511560000479 677.1090089995414 678.3651529997587 678.4886890007183 679.6374109992757 681.0604659998789 681.5802409993485 684.5811369996518 685.987956000492 688.2279049996287 688.8766689999029 688.9206960005686 689.3002519998699 689.5391440000385 689.9557699998841 690.3320309994742 691.7459720000625 692.6549890004098 696.140420999378 696.3452150002122 698.1832280000672 698.5705979997292 701.5835369993001 701.8653979999945 703.9272870002314 704.1918540000916 704.8491220008582 705.1741540003568 706.1490479996428 707.3584799999371 707.7923990003765 709.2364100003615 709.475097999908 710.3057460002601 710.4379889992997 710.5503340000287 711.7674559997395 714.5705160005018 714.8202720005065 714.9793699998409 715.4069419996813 715.6501870006323 720.3646649997681 724.8426109999418 730.8778079999611 731.9738370003179 732.6345629999414 733.8304450009018 734.9565020008013 738.1995449997485 739.140951000154 745.6817230004817 746.6227629994974 746.9166669994593 747.5069989999756 751.8389489995316 757.2884529996663 760.9235030002892 761.2739260001108 764.4377039996907 765.4618330001831 771.0257160002366 775.9173990003765 776.6324460003525 781.7107349997386 796.4238699991256

Current
Mean: 741.228 ms
Stdev: 43.312 ms (5.8%)
Runs: 675.5346280001104 680.2186289997771 681.5836589997634 682.8046880001202 687.5002439999953 687.7903650002554 687.7954110000283 688.1602789992467 688.8077400000766 690.2605800004676 691.2101239999756 692.6136069996282 692.9994309991598 693.9299729997292 694.6100670006126 695.4579670000821 698.5576579999179 700.6289060004056 700.9206550000235 701.9136960003525 702.2714440003037 705.5808110004291 708.5526529997587 711.7845870004967 714.0810150001198 714.5174160003662 714.8331310003996 714.9492190005258 716.731771000661 721.8674730006605 725.9419759996235 729.9052329994738 731.2903249999508 731.9643959999084 733.8715009996668 734.8048909995705 736.081664999947 736.303222999908 736.4720049994066 737.8852540003136 738.1833499995992 738.266235999763 740.0827639997005 741.8645429983735 742.3358559999615 744.8703609993681 745.137532999739 745.7025549998507 746.8490410000086 747.71643100027 748.9642339991406 749.7873940002173 753.4596759993583 756.2066240003332 759.0135909998789 759.2914230003953 761.800008000806 766.525065000169 767.8678789995611 768.0989180002362 769.9054359998554 774.4208589997143 774.8687749998644 775.6983239995316 775.707032000646 776.2214760007337 776.978068000637 779.6127530001104 788.2447110004723 788.9235439999029 794.0931000001729 794.6656100004911 802.1581229995936 812.2198900002986 813.0436609992757 816.7098390003666 831.4770920006558 841.2377939987928 851.2331140004098 865.8000490004197
App start nativeLaunch Baseline
Mean: 22.833 ms
Stdev: 3.395 ms (14.9%)
Runs: 18 18 19 19 19 19 19 19 19 19 19 19 19 20 20 20 20 20 20 20 20 20 20 21 21 21 21 21 21 21 21 21 22 22 22 22 22 22 22 22 22 22 22 22 23 23 23 23 23 23 24 24 24 24 24 24 24 25 25 25 25 25 26 26 26 26 26 27 27 28 28 28 29 30 31 31 31 32

Current
Mean: 22.950 ms
Stdev: 2.499 ms (10.9%)
Runs: 19 19 19 19 19 20 20 20 20 20 20 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 22 22 22 22 22 22 22 22 22 22 22 22 22 23 23 23 23 23 23 23 23 23 23 24 24 24 24 24 24 24 24 24 25 25 25 25 25 25 26 26 26 26 26 26 26 26 26 26 27 28 28 29 31
App start regularAppStart Baseline
Mean: 0.013 ms
Stdev: 0.000 ms (3.8%)
Runs: 0.011963000521063805 0.012044999748468399 0.012085000053048134 0.012165999971330166 0.012165999971330166 0.012167000211775303 0.012206999585032463 0.012206999585032463 0.01228800043463707 0.012288999743759632 0.012329000048339367 0.012329000048339367 0.012329000048339367 0.012369999662041664 0.012370000593364239 0.012409999966621399 0.012411000207066536 0.012450999580323696 0.012531999498605728 0.012532000429928303 0.0125730000436306 0.012613999657332897 0.012614000588655472 0.012614000588655472 0.012655000202357769 0.012655000202357769 0.012655000202357769 0.01269499957561493 0.012695000506937504 0.012695999816060066 0.01269600074738264 0.012736000120639801 0.012776000425219536 0.012817000038921833 0.012817000038921833 0.01281800027936697 0.01281800027936697 0.01281800027936697 0.01281800027936697 0.01285799965262413 0.01285799965262413 0.012858000583946705 0.012897999957203865 0.012898999266326427 0.012898999266326427 0.012898999266326427 0.012898999266326427 0.012898999266326427 0.012899000197649002 0.012899000197649002 0.0129399998113513 0.012980000115931034 0.013020999729633331 0.013021000660955906 0.013141999952495098 0.013143000192940235 0.013183999806642532 0.013224000111222267 0.013224000111222267 0.0133050000295043 0.013306000269949436 0.013346000574529171 0.013346999883651733 0.013387000188231468 0.013508999720215797 0.013509999960660934 0.01355000026524067 0.013590999878942966 0.013631000183522701 0.013875999487936497 0.013875999487936497 0.013956000097095966 0.014038000255823135 0.01411999948322773

Current
Mean: 0.017 ms
Stdev: 0.001 ms (6.2%)
Runs: 0.014526999555528164 0.014892000705003738 0.014932999387383461 0.014973999932408333 0.01501499954611063 0.015135999768972397 0.015136000700294971 0.015300000086426735 0.015339999459683895 0.01534000039100647 0.015422000549733639 0.015463000163435936 0.015542999841272831 0.015665000304579735 0.015747000463306904 0.015786999836564064 0.0157880000770092 0.015868999995291233 0.015949999913573265 0.015949999913573265 0.015990999527275562 0.015990999527275562 0.015991000458598137 0.0159919997677207 0.016032000072300434 0.01607200037688017 0.01607200037688017 0.016153999604284763 0.016193999908864498 0.016234999522566795 0.016234999522566795 0.016236000694334507 0.016397999599575996 0.016439000144600868 0.016439000144600868 0.016479999758303165 0.01648000068962574 0.0165200000628829 0.01660200022161007 0.016642000526189804 0.0167239997535944 0.01676399912685156 0.016764000058174133 0.01676500029861927 0.016805000603199005 0.016844999976456165 0.016845999285578728 0.016927000135183334 0.016927000135183334 0.017008000053465366 0.017131000757217407 0.017172000370919704 0.017211999744176865 0.017292999662458897 0.01733400020748377 0.017374000512063503 0.017374999821186066 0.017415999434888363 0.017455999739468098 0.017455999739468098 0.017455999739468098 0.01753699965775013 0.017578000202775 0.017822000198066235 0.017863000743091106 0.017863000743091106 0.017903000116348267 0.018025999888777733 0.018025999888777733 0.018066000193357468 0.018352000042796135 0.0185139998793602 0.018717000260949135 0.01879899948835373 0.019001999869942665

@github-actions
Copy link
Contributor

@Expensify/mobile-deployers 📣 Please look into this performance regression as it's a deploy blocker.

@hannojg
Copy link
Contributor

hannojg commented Oct 30, 2023

The performance regression was most likely a false positive, that can be ignored!

(Discussion here: https://expensify.slack.com/archives/C05LX9D6E07/p1698667351323659)

@OSBotify
Copy link
Contributor

🚀 Deployed to staging by https://github.com/danieldoglas in version: 1.3.94-0 🚀

platform result
🤖 android 🤖 success ✅
🖥 desktop 🖥 success ✅
🍎 iOS 🍎 failure ❌
🕸 web 🕸 success ✅

1 similar comment
@OSBotify
Copy link
Contributor

OSBotify commented Nov 1, 2023

🚀 Deployed to staging by https://github.com/danieldoglas in version: 1.3.94-0 🚀

platform result
🤖 android 🤖 success ✅
🖥 desktop 🖥 success ✅
🍎 iOS 🍎 failure ❌
🕸 web 🕸 success ✅

@OSBotify
Copy link
Contributor

OSBotify commented Nov 2, 2023

🚀 Deployed to production by https://github.com/Beamanator in version: 1.3.94-2 🚀

platform result
🤖 android 🤖 success ✅
🖥 desktop 🖥 success ✅
🍎 iOS 🍎 success ✅
🕸 web 🕸 success ✅

@OSBotify
Copy link
Contributor

OSBotify commented Nov 2, 2023

🚀 Deployed to staging by https://github.com/danieldoglas in version: 1.3.95-0 🚀

platform result
🤖 android 🤖 success ✅
🖥 desktop 🖥 success ✅
🍎 iOS 🍎 success ✅
🕸 web 🕸 success ✅

@OSBotify
Copy link
Contributor

OSBotify commented Nov 6, 2023

🚀 Deployed to production by https://github.com/puneetlath in version: 1.3.95-9 🚀

platform result
🤖 android 🤖 success ✅
🖥 desktop 🖥 success ✅
🍎 iOS 🍎 success ✅
🕸 web 🕸 success ✅

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
DeployBlockerCash This issue or pull request should block deployment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants