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

[TS migration] Migrate 'useThrottledButtonState.js' hook to TypeScript #28920

Conversation

MaciejSWM
Copy link
Contributor

@MaciejSWM MaciejSWM commented Oct 5, 2023

Details

Fixed Issues

$ #24936
PROPOSAL:

Tests

  • Change default value of shouldShowDownloadButton = false, to true in HeaderInBackButton/index.js. This will show a Download icon in the header, e.g. when you open Send message screen. Click that icon. Icon should highlight and return back to normal thanks to useThrottledButtonState after 1800ms. This will confirm that nothing breaks.
  • Verify that no errors appear in the JS console

Offline tests

  • Same as Tests

QA Steps

  • Same as Tests

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)
  • 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
    • [x ] 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
Screen.Recording.2023-10-05.at.17.01.48.mov
Mobile Web - Chrome
Screen.Recording.2023-10-05.at.17.13.17.mov
Mobile Web - Safari
Screen.Recording.2023-10-09.at.10.39.34.mov
Desktop
Screen.Recording.2023-10-05.at.17.02.09.mov
iOS
Screen.Recording.2023-10-09.at.10.39.03.mov
Android
Screen.Recording.2023-10-05.at.17.11.18.mov

* @returns {Array}
*/
export default function useThrottledButtonState() {
type ThrottledButtonState = [boolean, () => void];
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
type ThrottledButtonState = [boolean, () => void];
type ThrottledButtonState = [boolean, Dispatch<SetStateAction<boolean>>];

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@kubabutkiewicz when I apply your suggestion, I'm getting this tooltip:

image

Which is expecting a boolean value to be passed to that function. In reality though, this function doesn't accept any params. LMK your thoughts.

Copy link
Contributor

Choose a reason for hiding this comment

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

ok, I thought we are returning the state setter from this hook but we are returning function which is just setting state to false so nvm. LGTM

@MaciejSWM MaciejSWM marked this pull request as ready for review October 9, 2023 08:51
@MaciejSWM MaciejSWM requested a review from a team as a code owner October 9, 2023 08:51
@melvin-bot melvin-bot bot requested review from Ollyws and removed request for a team October 9, 2023 08:51
@melvin-bot
Copy link

melvin-bot bot commented Oct 9, 2023

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

Copy link
Contributor

@kubabutkiewicz kubabutkiewicz left a comment

Choose a reason for hiding this comment

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

LGMT

@Ollyws
Copy link
Contributor

Ollyws commented Oct 9, 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
01_MacOS_Chrome.mp4
Mobile Web - Chrome
02_Android_Chrome.mp4
Mobile Web - Safari
03_iOS_Safari.mp4
Desktop
04_MacOS_Desktop.mp4
iOS
05_iOS_Native.mp4
Android
06_Android_Native.mp4

Copy link
Contributor

@Ollyws Ollyws left a comment

Choose a reason for hiding this comment

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

LGTM.

@melvin-bot
Copy link

melvin-bot bot commented Oct 9, 2023

We did not find an internal engineer to review this PR, trying to assign a random engineer to #24936 as well as to this PR... Please reach out for help on Slack if no one gets assigned!

@melvin-bot melvin-bot bot requested a review from srikarparsi October 9, 2023 11:30
Copy link
Contributor

@srikarparsi srikarparsi left a comment

Choose a reason for hiding this comment

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

lgtm!

@srikarparsi srikarparsi merged commit 932341f into Expensify:main Oct 9, 2023
14 of 21 checks passed
@OSBotify
Copy link
Contributor

OSBotify commented Oct 9, 2023

✋ 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 9, 2023
@github-actions
Copy link
Contributor

github-actions bot commented Oct 9, 2023

Performance Comparison Report 📊

Significant Changes To Duration

Name Duration
App start TTI 1177.023 ms → 1241.951 ms (+64.929 ms, +5.5%) 🔴
Show details
Name Duration
App start TTI Baseline
Mean: 1177.023 ms
Stdev: 34.147 ms (2.9%)
Runs: 1100.4028190001845 1104.430701999925 1111.5262639997527 1117.4701600000262 1125.2035830002278 1129.1549829998985 1129.6708119995892 1131.7350180000067 1132.4352430002764 1134.0868899999186 1134.1023519998416 1135.4811410000548 1135.4956539999694 1138.3040939997882 1139.2994029996917 1140.4877100000158 1142.4258420001715 1143.8467910001054 1147.9962069997564 1148.3434610003605 1154.9489839999005 1155.5513129997998 1155.97057900019 1156.0597149999812 1158.3816870003939 1159.5495939999819 1160.0937050003558 1160.137203999795 1160.8886559996754 1161.5225940002128 1161.5558339999989 1161.9964779997244 1164.0558089995757 1164.5173049997538 1165.101263999939 1165.4839559998363 1169.3457329999655 1169.4597389996052 1170.3294919999316 1170.3572930004448 1170.5102700004354 1172.3429140001535 1173.2927400004119 1174.355495000258 1176.228126999922 1176.7369219996035 1177.2871099999174 1179.5544739998877 1180.3632070003077 1180.5286480002105 1181.5653919996694 1181.787426000461 1182.9668870000169 1186.7924140002578 1187.0994170000777 1187.14824699983 1187.5610229996964 1188.510927000083 1189.227740000002 1189.481780000031 1189.5081380000338 1189.5296909995377 1192.2368160001934 1193.4853180004284 1195.8947550002486 1197.2400550004095 1197.900833999738 1198.0690099997446 1200.4215679997578 1201.2480399999768 1202.1365999998525 1202.7549280002713 1202.920659000054 1203.0332300001755 1203.0405069999397 1204.4291380001232 1206.0764210000634 1206.4586619995534 1211.1306980000809 1211.5918640000746 1212.6098370002583 1217.377661000006 1225.3349909996614 1225.679996999912 1226.2969890004024 1233.9369310000911 1243.5114059997723 1248.165377999656 1254.6418970003724 1255.0609759995714 1266.7889869995415

Current
Mean: 1241.951 ms
Stdev: 32.536 ms (2.6%)
Runs: 1153.7792670000345 1184.0934420004487 1193.4015389997512 1199.6262429999188 1199.7209590002894 1199.8548779999837 1201.5512020001188 1205.7365070004016 1206.203064000234 1207.064547999762 1208.2491319999099 1208.4752569999546 1209.8655549995601 1209.991012999788 1210.2782220002264 1210.5715220002457 1211.1439680000767 1212.280028999783 1212.5488790003583 1212.9042670000345 1213.0299300001934 1214.9731850000098 1215.1936179995537 1215.5544199999422 1215.7154149999842 1216.838267000392 1217.4152030004188 1217.728577000089 1220.3447110000998 1221.0909209996462 1221.3823229996487 1221.8174419999123 1222.4254879998043 1222.83381799981 1224.2286940002814 1225.9844869999215 1226.1396530000493 1226.177880000323 1226.4008809998631 1229.40749900043 1231.0294279996306 1232.498242000118 1233.9301399998367 1234.8152099996805 1235.410005999729 1235.89670499973 1237.177159000188 1237.497338999994 1237.5614200001583 1237.909779000096 1239.80034600012 1244.1857169996947 1247.9033970003948 1248.4583360003307 1248.5314649995416 1251.7344140000641 1251.8749810000882 1256.6166799999774 1257.4237500000745 1260.7690979996696 1261.121786000207 1261.6040000002831 1261.9103469997644 1262.2414309997112 1262.9416629998013 1264.050017000176 1264.9530499996617 1265.7968589998782 1265.8337880000472 1266.5110179996118 1267.3596059996635 1271.1378920003772 1271.474879000336 1272.2976789996028 1273.4074229998514 1273.5371819995344 1274.439539000392 1275.900286000222 1278.0958740003407 1278.485193000175 1278.8677559997886 1282.480937000364 1283.412929000333 1287.3950979998335 1290.3622089996934 1291.8520729998127 1292.5587950004265 1299.8237250000238 1303.0787500003353 1303.5570580000058 1312.4948509996757 1327.499947000295

Meaningless Changes To Duration

Show entries
Name Duration
App start runJsBundle 812.835 ms → 858.640 ms (+45.805 ms, +5.6%)
Open Search Page TTI 622.831 ms → 628.205 ms (+5.374 ms, +0.9%)
App start nativeLaunch 19.321 ms → 19.761 ms (+0.440 ms, +2.3%)
App start regularAppStart 0.015 ms → 0.015 ms (+0.000 ms, +0.5%)
Show details
Name Duration
App start runJsBundle Baseline
Mean: 812.835 ms
Stdev: 26.753 ms (3.3%)
Runs: 758 764 765 766 767 768 768 773 774 774 782 782 783 784 784 785 785 788 790 790 792 792 793 793 793 795 796 798 798 798 799 801 801 803 803 804 807 808 809 809 811 811 812 813 813 814 816 817 817 817 817 818 819 820 820 821 821 821 823 825 826 826 828 828 829 831 831 832 832 832 833 835 836 836 839 839 840 841 841 841 843 843 845 849 851 851 859 865 866 875 877

Current
Mean: 858.640 ms
Stdev: 23.557 ms (2.7%)
Runs: 811 816 823 824 825 827 829 830 831 831 832 834 834 838 838 838 838 839 840 840 840 840 841 841 841 841 844 844 845 845 845 846 847 847 847 847 851 852 852 853 853 854 856 856 856 857 859 859 860 860 860 861 861 861 863 864 864 865 866 866 867 868 868 869 869 869 870 870 871 873 874 874 878 883 883 886 889 890 893 895 898 899 902 905 906 907 907 913 915
Open Search Page TTI Baseline
Mean: 622.831 ms
Stdev: 17.309 ms (2.8%)
Runs: 589.3333339998499 597.1614580005407 597.194295999594 597.959146999754 600.3228759998456 603.5803629998118 604.5866700001061 604.5938720004633 604.7292080000043 605.4760339995846 605.5522469999269 605.734375 605.8373620007187 606.2049559997395 606.8130289996043 606.8822020003572 607.1068529998884 607.9042559992522 607.9332689996809 608.5095220003277 608.7315680002794 609.2649750001729 609.4085290003568 610.1548260003328 610.5421959999949 610.9005540004 611.2379970001057 612.5584720000625 612.8775639999658 613.509277000092 613.8841960001737 614.4233400002122 614.4670820003375 614.8491210006177 614.8952639997005 615.9048669999465 616.415731000714 616.8778899991885 617.0773520004004 617.2826340002939 617.7065840000287 618.1022550007328 618.3067220002413 620.0106200007722 620.8496509995311 621.3543300004676 621.4270839998499 621.6718350006267 622.759561999701 623.9599200002849 624.2198080001399 624.5332850003615 624.6066889995709 624.9101980002597 624.9556480003521 625.4269609991461 628.5371909998357 629.8426109999418 629.9380700001493 630.3141280002892 631.0027259998024 631.2921959999949 631.3156340001151 631.4046229999512 631.7288410002366 632.0215659998357 632.1414799997583 632.7623290000483 633.103027000092 636.0833740001544 637.303222999908 637.9248049994931 639.2242030007765 639.2778320005164 639.7287999996915 641.4335949998349 642.2943520005792 642.7208250006661 647.9910889994353 648.0542409997433 650.2404789999127 655.9224039996043 657.3642170000821 657.7336430000141 663.5513510005549 672.8227949999273 677.7432050006464

Current
Mean: 628.205 ms
Stdev: 23.788 ms (3.8%)
Runs: 599.550741000101 600.2860509995371 600.6414789995179 601.0549729997292 601.1963299997151 604.2530519999564 604.6335859997198 604.6892910003662 606.6355790002272 607.2860920000821 607.3097329996526 607.3723140005022 607.8619790002704 608.0563149992377 608.1108809998259 608.7446299996227 608.8607179997489 609.2854820005596 609.8252359991893 609.901286999695 610.6299649998546 610.6569819999859 610.6924240002409 610.9579269997776 611.5931389993057 611.6599119994789 612.0335690006614 613.131063000299 614.2228600000963 614.2821050006896 614.7720139995217 614.8027760004625 614.9431560002267 615.1868899995461 615.7963870000094 615.9787600003183 616.1943359998986 616.2264410005882 616.6321620000526 616.6396490000188 616.7740890001878 617.3135579992086 618.5769859999418 618.6398120000958 618.9458820000291 619.2661540005356 621.4926759991795 621.7796640004963 622.9173990003765 623.6918130004779 623.7045089993626 623.8192549999803 624.2121989997104 624.2648120000958 624.897135999985 625.0982670001686 625.2921959999949 626.2700200006366 626.9080809997395 627.5646569998935 628.1701259994879 629.2118739997968 632.3312590001151 632.7329099997878 633.2051190007478 633.8176279999316 634.3076579999179 634.7838550005108 635.1471760002896 637.3615729995072 643.3175049992278 643.7942719999701 644.5197350000963 644.9975589998066 645.8605960002169 653.4584560003132 657.8087980002165 659.7925619995221 660.4391689999029 664.0864260001108 665.9812019998208 666.2183440001681 667.5839029997587 677.4488939996809 678.3576659997925 683.0584319997579 684.6170650003478 684.7110599996522 685.5952970003709 688.5924080004916 691.3306479994208
App start nativeLaunch Baseline
Mean: 19.321 ms
Stdev: 1.120 ms (5.8%)
Runs: 17 17 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 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 21 21 21 21 21 21 21 21 22 22 22

Current
Mean: 19.761 ms
Stdev: 1.373 ms (6.9%)
Runs: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 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 22 22 22 22 22 22 23 23 23 24
App start regularAppStart Baseline
Mean: 0.015 ms
Stdev: 0.001 ms (5.8%)
Runs: 0.012775999493896961 0.013143000192940235 0.013224000111222267 0.013224000111222267 0.013264999724924564 0.0134680001065135 0.013509000651538372 0.013549000024795532 0.013590000569820404 0.013671999797224998 0.013672000728547573 0.013712000101804733 0.013753000646829605 0.013753000646829605 0.013794000260531902 0.013794000260531902 0.0138349998742342 0.013957000337541103 0.013997000642120838 0.01403799932450056 0.014078999869525433 0.014078999869525433 0.014079000800848007 0.014119000174105167 0.01411999948322773 0.014159999787807465 0.01416000071913004 0.01416000071913004 0.014282000251114368 0.014405000023543835 0.014444999396800995 0.014444999396800995 0.01444500032812357 0.014485999941825867 0.014526000246405602 0.014526000246405602 0.014566999860107899 0.014567000791430473 0.01464799977838993 0.014649000018835068 0.014649000018835068 0.014689000323414803 0.0147299999371171 0.014770999550819397 0.014810999855399132 0.014850999228656292 0.014851999469101429 0.014851999469101429 0.014852000400424004 0.014852000400424004 0.014891999773681164 0.014891999773681164 0.014892000705003738 0.0148930000141263 0.0148930000141263 0.014932999387383461 0.014973999932408333 0.01501499954611063 0.015015000477433205 0.015056000091135502 0.015095999464392662 0.015096000395715237 0.015137000009417534 0.015176999382674694 0.015177999623119831 0.015178000554442406 0.015217999927699566 0.01521800085902214 0.015381000004708767 0.015420999377965927 0.015422000549733639 0.015584999695420265 0.015625 0.015625 0.015665000304579735 0.015705999918282032 0.015706999227404594 0.0157880000770092 0.015828999690711498 0.01595000084489584 0.016112999990582466 0.01623500045388937 0.016316999681293964 0.0163569999858737 0.0163569999858737 0.016358000226318836 0.016805000603199005

Current
Mean: 0.015 ms
Stdev: 0.001 ms (5.8%)
Runs: 0.012613999657332897 0.013143000192940235 0.013469000346958637 0.013631000183522701 0.013632000423967838 0.013632000423967838 0.013712000101804733 0.013712000101804733 0.01375299971550703 0.013793999329209328 0.013794000260531902 0.013794000260531902 0.013794000260531902 0.013915999792516232 0.0139979999512434 0.0139979999512434 0.014038000255823135 0.014078999869525433 0.014161000028252602 0.014200999401509762 0.014200999401509762 0.014201000332832336 0.014201000332832336 0.014240999706089497 0.014240999706089497 0.014240999706089497 0.014241999946534634 0.014281999319791794 0.014282000251114368 0.014322999864816666 0.014322999864816666 0.01432300079613924 0.0143630001693964 0.014404000714421272 0.01444500032812357 0.01444500032812357 0.014485999941825867 0.014485999941825867 0.014526000246405602 0.014527000486850739 0.014566999860107899 0.014607000164687634 0.014607999473810196 0.01460800040513277 0.014649000018835068 0.014649000018835068 0.014771000482141972 0.014810999855399132 0.014811000786721706 0.014811000786721706 0.014852000400424004 0.014891999773681164 0.0148930000141263 0.0148930000141263 0.015014000236988068 0.01501499954611063 0.015015000477433205 0.015054999850690365 0.015054999850690365 0.015097000636160374 0.015137000009417534 0.015177000313997269 0.015217999927699566 0.015217999927699566 0.015217999927699566 0.015258999541401863 0.015300000086426735 0.015421000309288502 0.015421000309288502 0.015502999536693096 0.015542999841272831 0.015625 0.015665000304579735 0.01574699953198433 0.01574699953198433 0.015786999836564064 0.015828999690711498 0.015828999690711498 0.016112999990582466 0.01619499921798706 0.016276000067591667 0.016316000372171402 0.016358000226318836 0.016439000144600868 0.0165200000628829 0.01660200022161007 0.01664199959486723 0.016682999208569527

@github-actions
Copy link
Contributor

github-actions bot commented Oct 9, 2023

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

@OSBotify
Copy link
Contributor

OSBotify commented Oct 9, 2023

🚀 Deployed to staging by https://github.com/srikarparsi in version: 1.3.80-0 🚀

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

@kavimuru
Copy link

kavimuru commented Oct 9, 2023

@srikarparsi Not sure we can QA at our end. Is this internal?

@kavimuru
Copy link

@MaciejSWM Not sure we can QA at our end. Is this internal?

@Ollyws
Copy link
Contributor

Ollyws commented Oct 10, 2023

@kavimuru It's used by PressableWithDelayToggle so you can test it by:

  1. Go to Settings > Security > Two Factor Authentication
  2. Click on the 'Copy' button
  3. Verify the button changes to 'Copied!' then changes back to its original state after approximately 1800ms.

@OSBotify
Copy link
Contributor

🚀 Deployed to production by https://github.com/jasperhuangg in version: 1.3.80-3 🚀

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

@OSBotify
Copy link
Contributor

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

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

@OSBotify
Copy link
Contributor

🚀 Deployed to production by https://github.com/jasperhuangg in version: 1.3.83-11 🚀

platform result
🤖 android 🤖 skipped 🚫
🖥 desktop 🖥 skipped 🚫
🍎 iOS 🍎 skipped 🚫
🕸 web 🕸 skipped 🚫

@OSBotify
Copy link
Contributor

🚀 Deployed to production by https://github.com/jasperhuangg in version: 1.3.83-11 🚀

platform result
🤖 android 🤖 skipped 🚫
🖥 desktop 🖥 skipped 🚫
🍎 iOS 🍎 skipped 🚫
🕸 web 🕸 skipped 🚫

1 similar comment
@OSBotify
Copy link
Contributor

🚀 Deployed to production by https://github.com/jasperhuangg in version: 1.3.83-11 🚀

platform result
🤖 android 🤖 skipped 🚫
🖥 desktop 🖥 skipped 🚫
🍎 iOS 🍎 skipped 🚫
🕸 web 🕸 skipped 🚫

@OSBotify
Copy link
Contributor

🚀 Deployed to production by https://github.com/jasperhuangg in version: 1.3.83-11 🚀

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

@OSBotify
Copy link
Contributor

🚀 Deployed to production by https://github.com/francoisl in version: 1.3.84-10 🚀

platform result
🤖 android 🤖 skipped 🚫
🖥 desktop 🖥 skipped 🚫
🍎 iOS 🍎 skipped 🚫
🕸 web 🕸 skipped 🚫

@OSBotify
Copy link
Contributor

🚀 Deployed to production by https://github.com/francoisl in version: 1.3.84-10 🚀

platform result
🤖 android 🤖 success ✅
🖥 desktop 🖥 success ✅
🍎 iOS 🍎 failure ❌
🕸 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.

7 participants