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: 28988 parent for subcategories can be selected with arrow keys #29111

Merged
merged 2 commits into from
Oct 10, 2023

Conversation

tienifr
Copy link
Contributor

@tienifr tienifr commented Oct 9, 2023

Details

Fixed Issues

$ #28988
PROPOSAL: #28988 (comment)

Tests

  1. Go to the workspace chat > + button > Request money > Manual.
  2. Create the manual request
  3. Go to the workspace chat > + button > Request money > Manual.
  4. Enter any amount and click Next > Show more > Category.
  5. Using keyboard arrow, navigate to the grayed-out parent.
  6. Hit Enter.
  7. Verify that the the grayed-out parent is not selectable
  • Verify that no errors appear in the JS console

Offline tests

Same as above

QA Steps

  1. Go to the workspace chat > + button > Request money > Manual.
  2. Create the manual request
  3. Go to the workspace chat > + button > Request money > Manual.
  4. Enter any amount and click Next > Show more > Category.
  5. Using keyboard arrow, navigate to the grayed-out parent.
  6. Hit Enter.
  7. Verify that the the grayed-out parent is not selectable
  • 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: mWeb Chrome
    • iOS: Native
    • iOS: mWeb 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

Android: Native
Screenrecording_20231010_174543.mp4
Android: mWeb Chrome
Screenrecording_20231010_174008.mp4
iOS: Native
Screen.Recording.2023-10-10.at.16.54.23.mov
iOS: mWeb Safari
Screen.Recording.2023-10-10.at.16.35.23.mov
MacOS: Chrome / Safari
Screen.Recording.2023-10-10.at.16.23.15.mov
MacOS: Desktop
Screen.Recording.2023-10-10.at.16.39.28.mov

@tienifr tienifr changed the title Fix/28988 Fix: 28988 parent for subcategories can be selected with arrow keys Oct 9, 2023
@tienifr tienifr marked this pull request as ready for review October 9, 2023 18:13
@tienifr tienifr requested a review from a team as a code owner October 9, 2023 18:13
@melvin-bot melvin-bot bot requested review from akinwale and removed request for a team October 9, 2023 18:13
@melvin-bot
Copy link

melvin-bot bot commented Oct 9, 2023

@akinwale 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]

if (tag) {
uniquePolicyRecentlyUsedTags.unshift(tag);
}
optimisticPolicyRecentlyUsedTags[tagListKey] = [...uniquePolicyRecentlyUsedTags];
Copy link
Contributor

Choose a reason for hiding this comment

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

Why are tags being updated? This doesn't match the proposal where it's optimisticPolicyRecentlyUsedCategories that are supposed to be updated in this file.

@akinwale
Copy link
Contributor

akinwale commented Oct 9, 2023

@tienifr Your videos do not properly demonstrate the intended fix. I can invite a ND account to a workspace that I created that has parent and sub-categories created for testing, if you need access to one.

@tienifr
Copy link
Contributor Author

tienifr commented Oct 10, 2023

@akinwale Yes, I currently don't know how to create the parent and sub category. Can you also help me how to create them ? Thanks

@tienifr
Copy link
Contributor Author

tienifr commented Oct 10, 2023

@akinwale While implement this PR, I realize that the PR already fix this root cause, so I just filter out the empty category

@akinwale
Copy link
Contributor

@akinwale Yes, I currently don't know how to create the parent and sub category. Can you also help me how to create them ? Thanks

@tienifr I have a workspace where I have them set up. Please provide a test Expensify account email that you can use so I can invite you to the workspace.

@tienifr
Copy link
Contributor Author

tienifr commented Oct 10, 2023

@akinwale tienifr032022+433@gmail.com. Thanks

@akinwale
Copy link
Contributor

@akinwale tienifr032022+433@gmail.com. Thanks

Invite sent. Workspace name is "akinwale tests". You may need to sign out and sign in again before it shows up.

@akinwale
Copy link
Contributor

@akinwale While implement this PR, I realize that the PR already fix this root cause, so I just filter out the empty category

@Julesssss Based on this comment, it looks like the recently merged PR fixes the root cause, and the only change needed here is to add filters.

@tienifr's code change is applying the same fix, but for tags instead of categories, i.e. not adding empty tags to the recently used list.

What do you recommend here? Should we proceed with just the filtering of categories? And should we also consider the fix for tags?

@tienifr
Copy link
Contributor Author

tienifr commented Oct 10, 2023

@tienifr's code change is applying the same fix, but for tags instead of categories, i.e. not adding empty tags to the recently used list.

I just revert this change because I think it's out of scope and I don't see any bugs related to this

@Julesssss
Copy link
Contributor

Let's continue with just the filter logic change.

@Julesssss Julesssss closed this Oct 10, 2023
@Julesssss Julesssss reopened this Oct 10, 2023
@akinwale
Copy link
Contributor

@tienifr Please update the videos when you get a chance, and add one for native Android as well, and then I can perform a full review. Thanks.

@tienifr
Copy link
Contributor Author

tienifr commented Oct 10, 2023

@akinwale I'm doing

@tienifr
Copy link
Contributor Author

tienifr commented Oct 10, 2023

@akinwale I just updated the videos on web, mweb, desktop. They works well but on other platforms I think it's impossible to perform up/down key

@akinwale
Copy link
Contributor

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: mWeb Chrome
    • iOS: Native
    • iOS: mWeb 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
28988-web.mp4
Mobile Web - Chrome
28988-android-chrome.webm
Mobile Web - Safari
28988-ios-safari.mp4
Desktop
28988-desktop.mp4
iOS
28988-ios-native.mp4
Android
28988-android-native.webm

Copy link
Contributor

@akinwale akinwale left a comment

Choose a reason for hiding this comment

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

LGTM. Let's ship it!

cc @Julesssss

@Julesssss Julesssss merged commit f78f8aa into Expensify:main Oct 10, 2023
19 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 10, 2023
@github-actions
Copy link
Contributor

Performance Comparison Report 📊

Significant Changes To Duration

Name Duration
App start TTI 1265.600 ms → 1340.859 ms (+75.259 ms, +5.9%) 🔴
App start runJsBundle 865.176 ms → 918.484 ms (+53.308 ms, +6.2%) 🔴
Show details
Name Duration
App start TTI Baseline
Mean: 1265.600 ms
Stdev: 50.090 ms (4.0%)
Runs: 1160.0264079999179 1168.721278999932 1178.1053340001963 1181.3902739998884 1184.1675280001946 1188.2086669998243 1190.9628200000152 1191.8449889998883 1192.0798999997787 1195.3264700002037 1195.4249840001576 1198.5721069998108 1209.2241600002162 1211.1332100001164 1211.6321939998306 1213.6761980000883 1214.4670799998567 1221.938823999837 1223.0223509999923 1224.692960999906 1225.007639999967 1227.3279079999775 1227.7518919999711 1232.2805110001937 1233.9410850000568 1234.271486000158 1240.885019000154 1241.8371540000662 1242.3014549999498 1245.150425999891 1245.1800609999336 1245.8266030000523 1247.0688229999505 1249.6506030000746 1249.8915249998681 1250.8893340001814 1251.1161509999074 1252.3415439999662 1252.4405129998922 1253.6534239999019 1253.7088509998284 1255.7282859999686 1256.941182000097 1258.9222479998134 1262.5059380000457 1264.6541059999727 1266.9009779999033 1267.1043890002184 1270.3408980001695 1275.4018009998836 1280.1906229997985 1280.2511610002257 1282.2620029998943 1283.2347579998896 1283.9537820001133 1284.5492949998006 1285.080306999851 1287.191773999948 1287.8438039999455 1288.103556000162 1288.9399040001445 1289.077680000104 1289.59775599977 1296.8739430001006 1297.1115239998326 1299.133284999989 1299.3874340001494 1299.4141339999624 1301.4301499999128 1306.8027329999022 1308.2077060001902 1309.485625000205 1309.8444770001806 1312.1465230002068 1316.825122000184 1317.8733830000274 1318.1050499998964 1318.2965839998797 1319.584615000058 1323.4881369997747 1326.8385169999674 1328.413561000023 1338.6403529997915 1339.2409509997815 1340.641875000205 1342.3632950000465 1357.1501919999719 1367.5167350000702 1370.3789909998886 1392.9002149999142

Current
Mean: 1340.859 ms
Stdev: 39.735 ms (3.0%)
Runs: 1254.1317859999835 1264.651149999816 1270.003982000053 1275.7957310001366 1276.5305610001087 1278.1660609999672 1291.8358869999647 1294.108585999813 1294.730582000222 1296.7975639998913 1300.3725959998555 1300.591570999939 1307.312036999967 1307.6894060000777 1307.736488000024 1308.5233450001106 1310.155852000229 1311.4372560000047 1311.9013399998657 1312.4635160001926 1314.5726870000362 1314.7431689999066 1315.5630629998632 1316.0607909997925 1316.428464999888 1316.6418929998763 1320.1165370000526 1320.9455659999512 1323.0573399998248 1323.2461830000393 1323.4963960000314 1324.5253030001186 1324.9276609998196 1325.5038279998116 1325.6109899999574 1325.8317289999686 1328.6760269999504 1330.8429109998979 1330.986101000104 1331.613222999964 1331.8383550001308 1333.2502810000442 1334.4988469998352 1334.5846049999818 1335.7324100001715 1337.4042250001803 1337.7889990000986 1339.4483119999059 1339.9185720002279 1340.9254680001177 1341.2664589998312 1342.5895750001073 1342.880719000008 1343.3384320000187 1343.8970249998383 1347.0187499998137 1347.7402039999142 1350.691866000183 1353.6904540001415 1353.9011030001566 1357.6250610002317 1358.94410300022 1360.9813450002111 1363.734401000198 1363.8167300000787 1366.773554999847 1368.3787589999847 1368.5708019998856 1368.7669560001232 1372.0860460000113 1373.2549829999916 1377.2232249998488 1379.5007230001502 1382.063726999797 1382.6391389998607 1385.1124249999411 1387.6338960002176 1388.985630999785 1398.9151449999772 1405.6158639998175 1407.7334449999034 1420.9433619999327 1425.7300019999966 1427.3676169998944 1429.4934899997897 1431.685802000109 1440.4655079999939
App start runJsBundle Baseline
Mean: 865.176 ms
Stdev: 46.326 ms (5.4%)
Runs: 748 755 781 782 785 796 801 804 806 807 809 811 815 817 820 822 823 827 829 830 831 832 833 834 835 837 838 841 842 844 844 844 845 847 847 850 853 855 855 857 857 859 859 863 864 865 867 867 869 871 871 874 875 878 881 881 881 883 884 884 885 886 886 888 890 894 894 896 900 901 901 902 905 907 909 910 911 912 914 917 921 922 926 927 934 935 937 940 957 978 981

Current
Mean: 918.484 ms
Stdev: 45.256 ms (4.9%)
Runs: 807 814 828 832 847 850 852 854 857 863 866 875 879 880 881 883 883 886 887 888 888 889 892 893 893 893 894 895 895 896 896 899 900 901 907 908 908 909 909 909 910 910 911 914 915 915 916 917 917 918 919 921 922 924 925 926 926 927 928 928 929 929 932 933 934 936 946 950 952 952 953 953 953 960 965 969 971 971 973 975 977 978 980 980 991 1004 1004 1010 1011 1016 1020

Meaningless Changes To Duration

Show entries
Name Duration
Open Search Page TTI 632.209 ms → 635.671 ms (+3.462 ms, +0.5%)
App start nativeLaunch 22.170 ms → 23.856 ms (+1.685 ms, +7.6%)
App start regularAppStart 0.015 ms → 0.016 ms (+0.000 ms, +3.1%)
Show details
Name Duration
Open Search Page TTI Baseline
Mean: 632.209 ms
Stdev: 23.860 ms (3.8%)
Runs: 594.0880940002389 598.984538000077 603.4724129997194 604.3829749999568 606.2125649997033 606.3176680002362 606.499023000244 606.6612150003202 606.8094080002047 607.1433109999634 607.4079999998212 608.2358809998259 611.4575609997846 611.5028900001198 611.6660159998573 611.9081219998188 612.1582439998165 612.1754959998652 612.3775629997253 612.5968019999564 612.6818039999343 612.7170819998719 612.9365650000982 613.0352380000986 613.1920580002479 613.3844810002483 613.5439040004276 614.4457199997269 614.8971770000644 615.6938069998287 616.0026859999634 619.4647630001418 619.9535329998471 620.0541179999709 620.8717450001277 621.4635009998456 621.7552089998499 621.7995210001245 622.0286459997296 622.1837559998967 622.3039549998939 622.828125 624.0898039997555 624.3508709999733 625.144164999947 626.0981450001709 626.4276539999992 626.5699060000479 627.2124029998668 628.6401370000094 629.4148769997992 630.3576659997925 631.4888520003296 631.7144369999878 631.9800220001489 632.4770510001108 632.5083010001108 636.731690000277 637.2528479998 638.7610269999132 638.9521900000982 639.1947019998915 639.4207359999418 641.2624109997414 643.9270019996911 644.9976399997249 646.0192470001057 646.2137460000813 648.9202879997902 649.9016929999925 652.4741620002314 655.2764889998361 655.3686119997874 655.4300540001132 655.7038579997607 655.9381519998424 656.5833740001544 657.1346440003254 659.0676679997705 663.8174240002409 665.223063999787 666.3602710003033 669.3014739998616 676.7003170000389 676.862548999954 677.8844810002483 686.8487140000798 691.7942299996503 700.5987550001591 701.159423999954

Current
Mean: 635.671 ms
Stdev: 21.393 ms (3.4%)
Runs: 604.2123210001737 605.4741220003925 608.6821699999273 609.0914710001089 609.3607989996672 610.0300300000235 610.740764000453 613.331828000024 613.6632079998963 613.9231770001352 614.0549319996499 614.1658930000849 614.5051680002362 614.5577799999155 614.8389489999972 614.8701580003835 614.9428709996864 615.0880539999343 615.1470139999874 615.1573490002193 615.1866459995508 616.4888109997846 617.4525960003957 617.6399339996278 618.1474620001391 619.4148360001855 619.8188889999874 621.1408699997701 621.593586999923 621.9346119998954 622.3413489996456 622.944174000062 623.3981120004319 623.6975920000114 623.8259280002676 623.8544109999202 625.4027510001324 627.221923999954 628.3219409999438 630.3641359996982 631.063192000147 631.2231450001709 631.8464770000428 632.7465010001324 632.8302410002798 632.8547769999132 632.9901129999198 634.1726480000652 634.3470060001127 634.3783769998699 634.5679119997658 637.7120370003395 637.9996340000071 638.1854659998789 638.7304279999807 639.0588789996691 639.6434329999611 639.7564300000668 640.0859779999591 640.1800950001925 640.2309979996644 642.6573089999147 642.9354249997996 643.0141599997878 643.0528979999945 644.2481290004216 646.4812420001253 647.5987550001591 648.7569580003619 649.1547449999489 651.332317000255 651.3503829999827 653.1743979998864 654.9762380002066 655.5858570002019 655.8934739995748 658.5927329999395 661.9584960001521 664.3428960000165 664.6058760001324 665.5801999997348 666.3208420001902 670.1145429997705 670.8702400000766 675.6046549999155 680.5013429997489 682.456298999954 682.4919850002043 697.851645000279 698.2747800000943
App start nativeLaunch Baseline
Mean: 22.170 ms
Stdev: 2.881 ms (13.0%)
Runs: 18 18 19 19 19 19 19 19 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 22 22 22 22 22 22 23 23 23 23 23 23 23 23 23 24 24 24 24 24 24 25 25 25 25 25 26 26 27 27 28 28 28 28 29 29 30 30

Current
Mean: 23.856 ms
Stdev: 3.050 ms (12.8%)
Runs: 20 20 20 20 20 20 20 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 22 22 22 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 24 24 24 24 24 24 24 24 24 24 25 25 25 25 25 26 26 26 26 26 26 27 27 27 27 28 28 28 29 29 29 30 30 30 31 31 32 32
App start regularAppStart Baseline
Mean: 0.015 ms
Stdev: 0.001 ms (8.2%)
Runs: 0.012531999964267015 0.01310200011357665 0.01322399964556098 0.013387999963015318 0.013793999794870615 0.01383400009945035 0.013875000178813934 0.013956000097095966 0.013956999871879816 0.013956999871879816 0.014078999869525433 0.01407900033518672 0.014119000174105167 0.014119999948889017 0.014159999787807465 0.014159999787807465 0.014200999867171049 0.014281999785453081 0.014322999864816666 0.014323000330477953 0.014323000330477953 0.014403999783098698 0.014403999783098698 0.014444999862462282 0.01444500032812357 0.014485999941825867 0.014527000021189451 0.014566999860107899 0.014607000164687634 0.014811000321060419 0.014852000400424004 0.014891999773681164 0.014891999773681164 0.0148930000141263 0.014932999853044748 0.015014000236988068 0.015015000011771917 0.015055000316351652 0.01509599993005395 0.015136000234633684 0.015137000009417534 0.015178000088781118 0.015178000088781118 0.015217999927699566 0.015217999927699566 0.0152580002322793 0.01525900000706315 0.015298999845981598 0.015298999845981598 0.015339999925345182 0.015381000004708767 0.015421000309288502 0.015461999922990799 0.015461999922990799 0.015583999920636415 0.015705999918282032 0.01570600038394332 0.01578700030222535 0.015829000156372786 0.015868999995291233 0.015950000379234552 0.01599099999293685 0.0159919997677207 0.016032000072300434 0.01607300015166402 0.01607300015166402 0.016112999990582466 0.016114000231027603 0.016194999683648348 0.016276000067591667 0.016316999681293964 0.016397999599575996 0.016398000065237284 0.016398000065237284 0.0165200000628829 0.016600999981164932 0.016642000060528517 0.016805000137537718 0.016846000216901302 0.016927000135183334 0.017455999739468098 0.01753699965775013 0.017659999895840883 0.01814799988642335 0.018351000268012285 0.018554000183939934 0.018554999958723783 0.01859500026330352

Current
Mean: 0.016 ms
Stdev: 0.001 ms (5.8%)
Runs: 0.0138349998742342 0.014119000174105167 0.014283000025898218 0.014444999862462282 0.014485000167042017 0.014567000325769186 0.01472900016233325 0.014810999855399132 0.014932999853044748 0.014934000093489885 0.014972999691963196 0.014973999932408333 0.014973999932408333 0.015015000011771917 0.015015000011771917 0.015056000091135502 0.015056000091135502 0.015177000313997269 0.015177000313997269 0.015219000168144703 0.01525900000706315 0.015299000311642885 0.015300000086426735 0.015339999925345182 0.015381000004708767 0.015381000004708767 0.015381000004708767 0.015422000084072351 0.015422000084072351 0.015461999922990799 0.015503000002354383 0.015503000002354383 0.015544000081717968 0.015544000081717968 0.015544000081717968 0.015544000081717968 0.015583999920636415 0.015625 0.015665999613702297 0.015705999918282032 0.015705999918282032 0.01570699969306588 0.015746999997645617 0.015747000463306904 0.0157880000770092 0.0157880000770092 0.01582799991592765 0.01582799991592765 0.015868999995291233 0.015910000074654818 0.016032000072300434 0.01607200037688017 0.01607299968600273 0.016112999990582466 0.016112999990582466 0.016112999990582466 0.016152999829500914 0.016195000149309635 0.016234999988228083 0.016234999988228083 0.016234999988228083 0.016276000067591667 0.016276000067591667 0.0163569999858737 0.016439000144600868 0.016478999983519316 0.0165200000628829 0.0165200000628829 0.016600999981164932 0.016601999755948782 0.016642999835312366 0.01672299997881055 0.016763999592512846 0.01696800021454692 0.01700799958780408 0.017008000053465366 0.0170889999717474 0.01741599990054965 0.017496999818831682 0.018148000352084637 0.018269999884068966 0.018309999722987413 0.0185139998793602

@github-actions
Copy link
Contributor

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

@OSBotify
Copy link
Contributor

🚀 Deployed to staging by https://github.com/Julesssss in version: 1.3.81-0 🚀

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

@OSBotify
Copy link
Contributor

🚀 Deployed to staging by https://github.com/Julesssss in version: 1.3.83-0 🚀

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.

4 participants