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

[No QA] [TS migration] Migrate 'Pusher' lib to TypeScript #28116

Merged
merged 14 commits into from
Oct 13, 2023

Conversation

kubabutkiewicz
Copy link
Contributor

Details

Fixed Issues

$ 24896

Tests

  • Verify that no errors appear in the JS console

Offline tests

QA Steps

  • 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
Mobile Web - Chrome
Mobile Web - Safari
Desktop
iOS
Android

@@ -77,34 +93,31 @@ function init(args, params) {
}

// Listen for connection errors and log them
socket.connection.bind('error', (error) => {
// TODO: check if true
Copy link
Contributor

Choose a reason for hiding this comment

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

Do we need this TODO in prod?

Copy link
Contributor

Choose a reason for hiding this comment

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

Let's remove it @kubabutkiewicz

try {
data = _.isObject(eventData) ? eventData : JSON.parse(eventData);
data = isObject(eventData) ? eventData : JSON.parse(eventData);
Copy link
Contributor

Choose a reason for hiding this comment

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

Are we migrating from lodash in a scope of TS migration?

Suggested change
data = isObject(eventData) ? eventData : JSON.parse(eventData);
data = typeof eventData === 'object' ? eventData : JSON.parse(eventData);

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Lodash usage is allowed, we are migrating from underscore. And I think usage of lodash here is more safe, because if data will be Array type then typeof data will still be object for example same if data would be a Date

Copy link
Contributor

@rezkiy37 rezkiy37 left a comment

Choose a reason for hiding this comment

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

Left a couple comments.

src/libs/Pusher/EventType.ts Outdated Show resolved Hide resolved
src/libs/Pusher/library/index.native.ts Outdated Show resolved Hide resolved
src/libs/Pusher/library/index.ts Outdated Show resolved Hide resolved
src/libs/Pusher/library/types.ts Outdated Show resolved Hide resolved
src/libs/Pusher/pusher.ts Outdated Show resolved Hide resolved
src/libs/Pusher/pusher.ts Outdated Show resolved Hide resolved
src/libs/Pusher/pusher.ts Outdated Show resolved Hide resolved
src/libs/Pusher/pusher.ts Outdated Show resolved Hide resolved
src/libs/Pusher/pusher.ts Outdated Show resolved Hide resolved
src/libs/Pusher/pusher.ts Outdated Show resolved Hide resolved
@kubabutkiewicz kubabutkiewicz marked this pull request as ready for review September 28, 2023 10:57
@kubabutkiewicz kubabutkiewicz requested a review from a team as a code owner September 28, 2023 10:57
@melvin-bot melvin-bot bot requested review from marcochavezf and removed request for a team September 28, 2023 10:57
@melvin-bot
Copy link

melvin-bot bot commented Sep 28, 2023

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

*/
function sendEvent(channelName, eventName, payload) {
function sendEvent<T>(channelName: string, eventName: PusherEventName, payload: T) {
Copy link
Contributor

Choose a reason for hiding this comment

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

What is the purpose of generic type here? We need to better type payload or at least limit the generic type so it extends Record.


export default Pusher;
export default PusherNative satisfies Pusher;
Copy link
Contributor

Choose a reason for hiding this comment

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

From TS guidelines:

Do not use satisfies operator for platform-specific implementations, always define shared types that complies with all variants.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hmm , do you have an idea how to type it then? in this case platform specific files exports classes not functions , I dont see better solution for that 🤔

Copy link
Contributor

Choose a reason for hiding this comment

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

How about this:

import type Pusher from './types.ts';
import PusherImplementation from 'pusher-js/with-encryption';

const PusherWeb: Pusher = PusherImplementation;

export default PusherWeb;

*/
function registerSocketEventCallback(cb) {
socketEventCallbacks.push(cb);
function registerSocketEventCallback<T>(cb: SocketEventCallback<T>) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Same here, why a generic type?

@kubabutkiewicz
Copy link
Contributor Author

@blazejkustra fixed :)

Copy link
Contributor

@blazejkustra blazejkustra left a comment

Choose a reason for hiding this comment

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

TS check is failing, other than that LGTM

@kubabutkiewicz
Copy link
Contributor Author

@marcochavezf are you able to review this?

Copy link
Contributor

@marcochavezf marcochavezf left a comment

Choose a reason for hiding this comment

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

LGTM, just a NAB comment

Comment on lines -37 to -40
* @param {Object} args
* @param {String} args.appKey
* @param {String} args.cluster
* @param {String} args.authEndpoint
Copy link
Contributor

Choose a reason for hiding this comment

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

NAB: Sorry if I'm not up to date with the latest guidelines, but shouldn't we add a type for args if we already defined the types in JSDoc?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

No, for typescript migrations we are removing all JSDocs types we are leaving only params descriptions

@kubabutkiewicz
Copy link
Contributor Author

@marcochavezf Are you able to do PR reviewer checklist or assign someone to do that?

@marcochavezf
Copy link
Contributor

marcochavezf commented Oct 13, 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: 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
Mobile Web - Chrome
Mobile Web - Safari
Desktop
iOS
Android

@marcochavezf marcochavezf merged commit 7eead96 into Expensify:main Oct 13, 2023
13 of 15 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 13, 2023
@github-actions
Copy link
Contributor

Performance Comparison Report 📊

Significant Changes To Duration

Name Duration
App start TTI 1195.669 ms → 1561.561 ms (+365.892 ms, +30.6%) 🔴
App start runJsBundle 808.244 ms → 1099.185 ms (+290.940 ms, +36.0%) 🔴🔴
Show details
Name Duration
App start TTI Baseline
Mean: 1195.669 ms
Stdev: 40.113 ms (3.4%)
Runs: 1117.3537280000746 1117.826138000004 1123.5808199997991 1129.4554199995473 1129.4802890000865 1131.62191000022 1135.702182999812 1136.5870839999989 1142.1429789997637 1143.715268000029 1151.376331999898 1153.5031960001215 1154.610538000241 1155.864167000167 1156.5995230004191 1159.9786790004 1160.6022770004347 1162.6085010003299 1162.9817230002955 1163.5210640002042 1164.0107789998874 1168.5766719998792 1171.1997220003977 1171.3277540002018 1171.3811440002173 1171.6651090001687 1174.2568760002032 1175.0189819997177 1175.1300900001079 1175.748770000413 1177.4675759999081 1177.8630579998717 1178.5240409998223 1178.8662099996582 1179.4538340000436 1180.8578589996323 1180.9268479999155 1180.9710980001837 1181.5727739995345 1181.7647139998153 1182.9091990003362 1183.5173859996721 1188.6133230002597 1192.4780029999092 1193.3416299996898 1194.2129669999704 1195.733385000378 1195.76716999989 1197.032847000286 1198.5911980001256 1199.9719780003652 1200.9063200000674 1201.3509400002658 1202.4124189997092 1202.6278919996694 1203.665458000265 1203.710191000253 1203.9591539995745 1205.889572000131 1207.1508640004322 1210.6430770000443 1213.3224160000682 1213.5626469999552 1217.3492970000952 1218.842799000442 1221.7065620003268 1222.3829650003463 1224.4973189998418 1224.8960600001737 1224.9649759996682 1228.7044940004125 1232.1737590003759 1233.8980219997466 1234.7248959997669 1235.7769539998844 1238.5888189999387 1240.8915950004011 1242.482785999775 1243.4708810001612 1244.4933829996735 1250.8606829997152 1252.1985590001568 1258.9559869999066 1260.132403000258 1262.9810049999505 1267.583922999911 1269.5279700001702 1276.141990000382 1290.153868000023 1294.7599780000746

Current
Mean: 1561.561 ms
Stdev: 78.638 ms (5.0%)
Runs: 1403.2221569996327 1413.8971070004627 1418.370860000141 1420.292785000056 1427.985961000435 1428.5783620001748 1439.1707359999418 1447.478466999717 1452.1885160002857 1457.56520000007 1461.3747540004551 1466.5372999999672 1477.1744980001822 1477.8897590003908 1478.461288000457 1484.3380439998582 1487.471115999855 1489.6340129999444 1492.2918929997832 1496.8437299998477 1501.5261920001358 1504.1728609995916 1506.4134400002658 1512.883224000223 1513.0583359999582 1517.1112919999287 1517.890403999947 1522.2807930000126 1524.7136610001326 1525.2226120000705 1528.5476110000163 1528.6456949999556 1530.7526209997013 1530.892788999714 1531.378534999676 1531.811378000304 1532.043619000353 1532.5984659995884 1532.8883680002764 1541.1568360002711 1548.7392090000212 1552.404481999576 1552.4730019997805 1553.7401069998741 1553.9949970003217 1557.310084999539 1557.6525020003319 1558.0984939998016 1562.2981890002266 1565.236138000153 1568.400507000275 1568.5080960001796 1568.6435850001872 1570.078569999896 1572.2073980001733 1573.3996660001576 1576.988475999795 1581.266567000188 1583.775446999818 1588.7203069999814 1588.9620139999315 1592.1704080002382 1594.9954719999805 1603.3307569995522 1608.872247000225 1613.3723379997537 1616.4408459998667 1620.309523999691 1622.9332619998604 1634.6473390003666 1637.5529279997572 1639.4379899995402 1639.8596769999713 1640.6654820004478 1641.0528480000794 1642.4800549997017 1645.36737800017 1645.3676389995962 1647.4413099996746 1651.8700059996918 1654.764290000312 1655.7264940002933 1658.0168390003964 1664.922251000069 1672.2969810003415 1672.8547099996358 1678.8062779996544 1681.7777169998735 1688.0381859997287 1689.9867369998246 1724.7651119995862 1793.8103080000728
App start runJsBundle Baseline
Mean: 808.244 ms
Stdev: 32.583 ms (4.0%)
Runs: 729 738 747 755 756 757 761 763 767 768 770 771 772 773 776 778 778 779 780 781 781 783 784 786 786 789 790 790 793 793 794 794 794 795 795 797 801 804 805 805 806 808 808 808 809 810 811 811 811 813 814 815 816 817 817 818 820 821 822 822 822 822 823 823 823 825 825 827 828 830 833 836 838 838 839 840 841 846 846 847 850 855 856 856 859 868 874 874 880 883

Current
Mean: 1099.185 ms
Stdev: 45.476 ms (4.1%)
Runs: 1024 1031 1031 1031 1032 1036 1045 1045 1045 1046 1046 1047 1048 1049 1050 1050 1051 1054 1054 1055 1055 1056 1057 1059 1060 1060 1060 1061 1062 1064 1065 1066 1066 1066 1068 1071 1072 1072 1074 1074 1076 1088 1088 1089 1090 1092 1093 1099 1100 1105 1111 1113 1115 1115 1116 1118 1120 1120 1123 1126 1126 1128 1135 1136 1138 1139 1139 1141 1142 1143 1144 1144 1145 1148 1148 1149 1150 1150 1151 1153 1155 1156 1160 1165 1167 1168 1169 1169 1171 1172 1178 1191

Meaningless Changes To Duration

Show entries
Name Duration
Open Search Page TTI 622.275 ms → 627.592 ms (+5.317 ms, +0.9%)
App start regularAppStart 0.014 ms → 0.017 ms (+0.002 ms, +17.1%) 🟡
App start nativeLaunch 22.110 ms → 21.229 ms (-0.881 ms, -4.0%)
Show details
Name Duration
Open Search Page TTI Baseline
Mean: 622.275 ms
Stdev: 21.896 ms (3.5%)
Runs: 592.9672449994832 593.6144610000774 593.6295980000868 597.1937259994447 597.5854500001296 597.8786219991744 597.8975829994306 598.9062099996954 599.0373940002173 599.0401210002601 599.6020109998062 600.2778730001301 600.3527840003371 604.0249030003324 605.0878090001643 605.5979410000145 605.6048590000719 605.97452800069 606.2661129999906 606.4149169996381 606.4202879993245 606.7687180005014 606.7830809997395 606.886921999976 607.2290049996227 607.2622889997438 607.6916910000145 607.7235509995371 608.2560629993677 608.3772379998118 608.5281980000436 608.546833999455 608.978311999701 610.0539549998939 610.4166259998456 610.478516000323 611.035074999556 613.631674000062 614.5131839998066 615.0201010005549 615.1018469994888 615.2794190002605 615.6998300002888 616.0158279994503 616.0393070001155 616.2592370007187 616.428222999908 616.9073900002986 616.9659839998931 617.1245120000094 621.4776619998738 621.6053060004488 621.9548749998212 622.6674800002947 622.9285080004483 623.1966959992424 623.2188720004633 623.8175050001591 624.7599689997733 625.3401690004393 625.6325280005112 626.3568529998884 627.5605879994109 629.3612069999799 629.5828449996188 630.7978109996766 631.1367999995127 631.191487999633 633.0116779999807 638.3102219998837 640.9029540000483 641.614990000613 648.297485999763 649.285237999633 649.9122729999945 650.8817140003666 653.6554370000958 656.0105799995363 658.5856119999662 659.3863930003718 663.8576259994879 665.7542730001733 666.3263759994879 666.4366050008684 667.2038169996813 672.8458660002798 679.5466719996184 682.3819180000573

Current
Mean: 627.592 ms
Stdev: 24.978 ms (4.0%)
Runs: 584.660726999864 590.7614749995992 591.2143149999902 597.3395589999855 598.2519530002028 598.659342000261 598.7455240003765 599.344360999763 600.0694169998169 600.2241619993001 600.3418779997155 601.0556229995564 601.2185070002452 601.2216389998794 601.6747230002657 602.034953000024 602.5409750007093 603.0590009996668 605.0124099999666 605.203451000154 605.6363930003718 606.3994959993288 607.6344409994781 608.7385660000145 609.2152510005981 609.5764570003375 609.9868979994208 610.1643479997292 611.6873380001634 612.9053140003234 615.0718189999461 615.2098389994353 615.9318439997733 615.9790040003136 616.1255700001493 616.343423999846 616.6641039997339 617.3671469995752 618.4774179998785 618.5280359992757 618.6601149998605 621.1952309999615 622.1021739998832 622.3455819999799 623.3155519999564 624.1272789994255 624.3756100004539 624.4893800001591 624.5460620000958 624.5859380001202 624.7233890006319 624.7731940001249 625.6430669995025 625.6641039997339 626.0074469996616 626.6689459998161 627.1751709999517 629.4953209999949 631.2856860002503 631.9714360004291 632.1144209997728 632.1671959999949 633.0125740002841 633.1274009998888 637.0109059996903 637.5098479995504 639.9791259998456 640.6314700003713 640.7586670005694 644.6048580007628 647.6394859999418 648.371744999662 648.5652259998024 649.222453000024 649.6564949993044 650.937541000545 651.1271970001981 653.1856690002605 655.7089440003037 658.4451510002837 664.2154540000483 667.078083999455 667.3194989999756 671.9990230007097 673.2466640006751 673.3786619994789 674.6936450004578 675.5682789999992 679.8568519996479 681.796142000705 684.8029379993677 697.3046059999615
App start regularAppStart Baseline
Mean: 0.014 ms
Stdev: 0.001 ms (7.4%)
Runs: 0.012411000207066536 0.012491999194025993 0.0125730000436306 0.012614000588655472 0.012653999961912632 0.012653999961912632 0.012736000120639801 0.012775999493896961 0.012898999266326427 0.012899000197649002 0.013019999489188194 0.013061000034213066 0.013101999647915363 0.013182999566197395 0.013224000111222267 0.013306000269949436 0.013345999643206596 0.013387000188231468 0.013387000188231468 0.013387000188231468 0.013426999561488628 0.013427999801933765 0.013469000346958637 0.013508999720215797 0.013508999720215797 0.013509000651538372 0.01355000026524067 0.01355000026524067 0.01358999963849783 0.013630999252200127 0.013631000183522701 0.013631000183522701 0.01371300034224987 0.01375299971550703 0.01375299971550703 0.013875000178813934 0.013875000178813934 0.013875999487936497 0.013876000419259071 0.013955999165773392 0.013956000097095966 0.013996999710798264 0.01403799932450056 0.014038000255823135 0.014077999629080296 0.01407800056040287 0.014078999869525433 0.014079000800848007 0.014119000174105167 0.014159999787807465 0.014159999787807465 0.01416000071913004 0.014161000028252602 0.0142000000923872 0.014240999706089497 0.014241999946534634 0.014282000251114368 0.014283000491559505 0.014322999864816666 0.0143630001693964 0.014526000246405602 0.014526000246405602 0.014566999860107899 0.01464799977838993 0.014851999469101429 0.014852000400424004 0.014891999773681164 0.0148930000141263 0.014933999627828598 0.01501499954611063 0.015015000477433205 0.015056000091135502 0.015095999464392662 0.015217999927699566 0.015339999459683895 0.015339999459683895 0.015747000463306904 0.015828000381588936 0.016112999990582466 0.0163569999858737 0.016358000226318836 0.016560999676585197 0.016600999981164932 0.01672299951314926 0.017130999825894833

Current
Mean: 0.017 ms
Stdev: 0.002 ms (14.2%)
Runs: 0.013182999566197395 0.013386999256908894 0.013631000183522701 0.013712000101804733 0.0138349998742342 0.013875000178813934 0.013996999710798264 0.014038000255823135 0.01416000071913004 0.014283000491559505 0.014322999864816666 0.014364000409841537 0.014403999783098698 0.014405000023543835 0.014444999396800995 0.014444999396800995 0.01444500032812357 0.01448499970138073 0.01460800040513277 0.014648000709712505 0.014689000323414803 0.014689000323414803 0.01476999931037426 0.014771000482141972 0.014810999855399132 0.014811000786721706 0.014851999469101429 0.014852000400424004 0.014933000318706036 0.01497300062328577 0.01501499954611063 0.015015000477433205 0.015055999159812927 0.015096000395715237 0.015135999768972397 0.015137000009417534 0.015137000009417534 0.015217999927699566 0.015298999845981598 0.015339999459683895 0.015421999618411064 0.015463000163435936 0.015463000163435936 0.015502999536693096 0.015584999695420265 0.015625 0.015625 0.01574699953198433 0.015747000463306904 0.0157880000770092 0.015949999913573265 0.016195000149309635 0.016235999763011932 0.016479999758303165 0.01660200022161007 0.01664199959486723 0.0166830001398921 0.0166830001398921 0.016885999590158463 0.01696799974888563 0.017130999825894833 0.01717199943959713 0.017211999744176865 0.017374999821186066 0.01753699965775013 0.017578000202775 0.01794400066137314 0.01822900027036667 0.018432999961078167 0.018675999715924263 0.018757999874651432 0.018757999874651432 0.018880000337958336 0.01912400033324957 0.019164999946951866 0.019245999865233898 0.019286999478936195 0.01928700041025877 0.019368000328540802 0.019612999632954597 0.01981700025498867 0.019977999851107597 0.019979000091552734 0.020142000168561935 0.02034500055015087 0.0206300001591444 0.020670000463724136 0.02075199969112873 0.020956000313162804 0.021321999840438366 0.02250200044363737 0.023599999956786633
App start nativeLaunch Baseline
Mean: 22.110 ms
Stdev: 3.181 ms (14.4%)
Runs: 18 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 21 21 21 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 24 24 24 24 24 26 26 26 26 27 27 27 27 27 28 28 28 28 28 28 29 29 30 30

Current
Mean: 21.229 ms
Stdev: 1.996 ms (9.4%)
Runs: 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 20 20 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 24 24 24 25 25 25 26 26 26 26 27

@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/marcochavezf in version: 1.3.84-0 🚀

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

@OSBotify
Copy link
Contributor

🚀 Deployed to staging by https://github.com/marcochavezf in version: 1.3.85-0 🚀

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

@OSBotify
Copy link
Contributor

🚀 Deployed to production by https://github.com/francoisl in version: 1.3.85-4 🚀

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.

6 participants