Skip to content

[No QA] Create prebuilt React Native artifacts #59738

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

Merged

Conversation

mateuuszzzzz
Copy link
Contributor

@mateuuszzzzz mateuuszzzzz commented Apr 7, 2025

Explanation of Change

PR adds workflow that builds and publishes patched react-native artifacts.

NOTE: ⚠️ This PR has its Mobile-Expensify part. We need to merge it first: https://github.com/Expensify/Mobile-Expensify/pull/13545

Fixed Issues

$ #57120
PROPOSAL:

MOBILE-EXPENSIFY: https://github.com/Expensify/Mobile-Expensify/pull/13545

Tests

  • Workflow should trigger and produce 2 packages. react-standalone and react-hybrid

Offline tests

QA Steps

// TODO: These must be filled out, or the issue title must include "[No QA]."

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 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 used JaimeGPT to get English > Spanish translation. I then posted it 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 either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
    • 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.ts 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 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(theme.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 the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
    • I verified that all the inputs inside a form are aligned with each other.
    • I added Design label and/or tagged @Expensify/design so the design team can review the changes.
  • 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.
  • I added unit tests for any new feature or bug fix in this PR to help automatically prevent regressions in this user flow.
  • 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.

Screenshots/Videos

Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari
MacOS: Desktop

Copy link
Contributor

github-actions bot commented Apr 7, 2025

⚠️ This PR is possibly changing native code and/or updating libraries, it may cause problems with HybridApp. Please check if any patch updates are required in the HybridApp repo and run an AdHoc build to verify that HybridApp will not break. Ask Contributor Plus for help if you are not sure how to handle this. ⚠️

Copy link
Contributor

github-actions bot commented Apr 8, 2025

⚠️ This PR is possibly changing native code and/or updating libraries, it may cause problems with HybridApp. Please check if any patch updates are required in the HybridApp repo and run an AdHoc build to verify that HybridApp will not break. Ask Contributor Plus for help if you are not sure how to handle this. ⚠️

Copy link
Contributor

github-actions bot commented Apr 8, 2025

⚠️ This PR is possibly changing native code and/or updating libraries, it may cause problems with HybridApp. Please check if any patch updates are required in the HybridApp repo and run an AdHoc build to verify that HybridApp will not break. Ask Contributor Plus for help if you are not sure how to handle this. ⚠️

Copy link
Contributor

github-actions bot commented Apr 8, 2025

⚠️ This PR is possibly changing native code and/or updating libraries, it may cause problems with HybridApp. Please check if any patch updates are required in the HybridApp repo and run an AdHoc build to verify that HybridApp will not break. Ask Contributor Plus for help if you are not sure how to handle this. ⚠️

Copy link
Contributor

github-actions bot commented Apr 8, 2025

⚠️ This PR is possibly changing native code and/or updating libraries, it may cause problems with HybridApp. Please check if any patch updates are required in the HybridApp repo and run an AdHoc build to verify that HybridApp will not break. Ask Contributor Plus for help if you are not sure how to handle this. ⚠️

@mateuuszzzzz
Copy link
Contributor Author

mateuuszzzzz commented Apr 10, 2025

@roryabraham PR in the current form should be ready, feel free to review it. I tested it on my forked App repository today and it worked fine. It created 2 artifacts for standalone NewDot and HybridApp here: https://github.com/mateuuszzzzz?tab=packages&repo_name=App

I have a few things to mention/discuss:

  • I noticed issue with 409 status code during publication. It seems like this is known problem https://github.com/orgs/community/discussions/149386. It doesn't break publication process, but causes the job to fail. It started to happen today so maybe my account is broken after many test publications. (You can see this error here)

  • I was thinking about re-adding workflow_dispatch so we could trigger workflow manually in order to test it.

  • In order to publish a package we use slightly modified version of this publish.gradle file. Let me know if there are things we'd like to add there. Especially, we could consider adding own signing{Key,Pwd}

  • I’m currently using ubuntu-latest for all jobs, but I think it’s worth switching to ubuntu-latest-xl for the jobs that generate artifacts.

  • In a separate PR, I'd like to add the changes necessary to enable the use of custom build artifacts during regular builds.

  • Publication process uses github token and github actor. I had to enable package write permissions in order to use it on my fork. We might want to consider switching to bot credentials instead.

Copy link
Contributor

@roryabraham roryabraham left a comment

Choose a reason for hiding this comment

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

Full diff of my requested changes:

full diff
diff --git a/.github/scripts/computePatchesHash.sh b/.github/scripts/computePatchesHash.sh
deleted file mode 100755
index 196f49bcf21..00000000000
--- a/.github/scripts/computePatchesHash.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-
-if [ -z "$VERSION" ]; then
-    echo "VERSION env variable is not set"
-    exit 1
-fi
-
-if [ -z "$PATCHES_PATHS" ]; then
-    echo "PATCHES_PATHS env variable is not set"
-    exit 1
-fi
-
-IFS=' ' read -ra PATCH_DIRS <<< "$PATCHES_PATHS"
-find "${PATCH_DIRS[@]}" -type f -name "react-native+${VERSION}*.patch" -exec sha256sum {} + | sort | sha256sum | awk '{print $1}'
diff --git a/.github/scripts/getNewPatchedRNVersion.sh b/.github/scripts/getNewPatchedRNVersion.sh
index 8b84b8cd5e8..736249e5769 100755
--- a/.github/scripts/getNewPatchedRNVersion.sh
+++ b/.github/scripts/getNewPatchedRNVersion.sh
@@ -1,9 +1,6 @@
 #!/bin/bash
 
-if [ -z "$VERSION" ]; then
-    echo "VERSION env variable is not set"
-    exit 1
-fi
+VERSION="$(jq -r '.dependencies["react-native"]' package.json)"
 
 if [[ "$IS_HYBRID_BUILD" == "true" ]]; then
     PACKAGE="react-hybrid"
diff --git a/.github/workflows/buildAndPublishReactNativeArtifacts.yml b/.github/workflows/buildAndPublishReactNativeArtifacts.yml
index b39aeaca0d6..5ea26af58d0 100644
--- a/.github/workflows/buildAndPublishReactNativeArtifacts.yml
+++ b/.github/workflows/buildAndPublishReactNativeArtifacts.yml
@@ -10,204 +10,112 @@ on:
       - Mobile-Expensify
 
 jobs:
-  verifyNewDotPatchesAndReactNativeVersion:
-    runs-on: ubuntu-latest
+  publish:
+    runs-on: ${{ github.repository_owner == 'Expensify' && 'ubuntu-latest-xl' || 'ubuntu-latest' }}
+    strategy:
+      matrix:
+        is_hybrid: [true, false]
+    env:
+      PATCHES_PATHS: ${{ matrix.is_hybrid && 'Mobile-Expensify/patches' || 'patches' }}
     steps:
+      # v4
       - name: Checkout
-        # v4
-        uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
-
-      - name: Check if NewDot patches or react-native version have changed
-        run: |
-          VERSION=$(jq -r '.dependencies["react-native"]' package.json)
-          HASH=$(VERSION=$VERSION ./.github/scripts/computePatchesHash.sh)
-
-          git fetch origin ${{ github.event.before }}
-          git checkout ${{ github.event.before }}
-
-          OLD_VERSION=$(jq -r '.dependencies["react-native"]' package.json)
-          # If version has changed and we want to find differences in patches, we need to consider pattern that involves previous react-native version
-          OLD_HASH=$(VERSION=$OLD_VERSION ./.github/scripts/computePatchesHash.sh)
-
-          if [ "$HASH" == "$OLD_HASH" ] && [ "$VERSION" == "$OLD_VERSION" ]; then
-            echo "No relevant changes"
-            exit 1
-          fi
-
-          if [ "$VERSION" != "$OLD_VERSION" ]; then
-            echo "Detected react-native version bump ($OLD_VERSION -> $VERSION)"
-            exit 0
-          fi
-
-          if [ "$HASH" != "$OLD_HASH" ]; then
-            echo "Detected changes in NewDot patches:"
-            git diff --name-only ${{ github.event.before }}..${{ github.event.after }} -- "patches/react-native+*.patch"
-          fi
-        env:
-          PATCHES_PATHS: "patches"
-
-  verifyHybridAppPatches:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout
-        # v4
         uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
         with:
-            submodules: true
-            fetch-depth: 0
-      - name: Get react-native version
-        run: |
-          echo "VERSION=$(jq -r '.dependencies["react-native"]' package.json)" >> $GITHUB_ENV
+          submodules: ${{ matrix.is_hybrid }}
+          ref: ${{ github.event.before }}
 
-      - name: Check if HybridApp patches have changed
-        run: |
-          CURRENT_SUBMODULE_COMMIT=$(git rev-parse :Mobile-Expensify)
-          CURRENT_PATCHES_HASH=$(./.github/scripts/computePatchesHash.sh)
- 
-          git fetch origin ${{ github.event.before }}
-          git checkout ${{ github.event.before }}
+      - name: Get previous commit hash
+        id: getOldHash
+        run: echo "HASH=$(git rev-parse ${{ matrix.is_hybrid == 'true' && ':Mobile-Expensify' || 'HEAD' }})" >> "$GITHUB_OUTPUT"
 
-          git submodule update
-          
-          PREVIOUS_SUBMODULE_COMMIT=$(git rev-parse :Mobile-Expensify)
-
-          if [ "$CURRENT_SUBMODULE_COMMIT" == "$PREVIOUS_SUBMODULE_COMMIT" ]; then
-            echo "Submodule commit is the same as the previous one, skipping patch check"
-            exit 1
-          fi
-
-          PREVIOUS_PATCHES_HASH=$(./.github/scripts/computePatchesHash.sh)
-
-          if [ "$CURRENT_PATCHES_HASH" == "$PREVIOUS_PATCHES_HASH" ]; then
-            echo "No changes in HybridApp patches"
-            exit 1
-          fi
-
-          echo "Detected changes in HybridApp patches:"
-          git -C Mobile-Expensify diff --name-only $PREVIOUS_SUBMODULE_COMMIT..$CURRENT_SUBMODULE_COMMIT -- "patches/react-native+*.patch"
-        env:
-          PATCHES_PATHS: "Mobile-Expensify/patches"
-          VERSION: ${{ env.VERSION }}
+      - name: Get previous react-native version
+        id: getOldVersion
+        run: echo "VERSION=$(jq -r '.dependencies["react-native"]' package.json)" >> "$GITHUB_OUTPUT"
 
-  buildAndPublishRNArtifactsForStandaloneNewDot:
-    runs-on: ubuntu-latest
-    if: ${{ always() && needs.verifyNewDotPatchesAndReactNativeVersion.result == 'success'}}
-    needs: verifyNewDotPatchesAndReactNativeVersion
-    steps:
-      - name: Checkout
-        # v4
-        uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
-
-      - name: Get react-native version
+      - name: Checkout new ref
         run: |
-          echo "VERSION=$(jq -r '.dependencies["react-native"]' package.json)" >> $GITHUB_ENV
-
-      - name: Setup Node
-        uses: ./.github/actions/composite/setupNode
-
-      - name: Setup Java
-        # v4
-        uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12
-        with:
-          distribution: oracle
-          java-version: 17
+          git fetch origin ${{ github.event.after }} --depth=1
+          git checkout ${{ github.event.after }}
+          git submodule update
 
-      - name: Setup Gradle
-        # v4
-        uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244
+      - name: Get new commit hash
+        id: getNewHash
+        run: echo "HASH=$(git rev-parse ${{ matrix.is_hybrid == 'true' && ':Mobile-Expensify' || 'HEAD' }})" >> "$GITHUB_OUTPUT"
 
-      - name: Save patches hash
-        run: |
-          echo "PATCHES_HASH=$(./.github/scripts/computePatchesHash.sh)" >> $GITHUB_ENV
-        env:
-          VERSION: ${{ env.VERSION }}
-          PATCHES_PATHS: "patches"
+      - name: Get new react-native version
+        id: getNewVersion
+        run: echo "VERSION=$(jq -r '.dependencies["react-native"]' package.json)" >> "$GITHUB_OUTPUT"
 
-      - name: Determine new patched RN version
+      - name: Check if version changed
+        id: didVersionChange
         run: |
-          echo "NEW_PATCHED_VERSION=$(./.github/scripts/getNewPatchedRNVersion.sh)" >> $GITHUB_ENV
-        env:
-          VERSION: ${{ env.VERSION }}
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-          IS_HYBRID_BUILD: "false"
+          readonly DID_VERSION_CHANGE=${{ steps.getOldVersion.outputs.VERSION != steps.getNewVersion.outputs.VERSION && 'true' || 'false' }}
+          echo "DID_VERSION_CHANGE=$DID_VERSION_CHANGE" >> "$GITHUB_OUTPUT"
+          if [[ "$DID_VERSION_CHANGE" == 'true' ]]; then
+            echo "::notice::Detected react-native version bump (${{ steps.getOldVersion.outputs.VERSION }} -> ${{ steps.getNewVersion.outputs.VERSION }})"
+          fi
 
-      - name: Build and publish RN artifacts
+      - name: Check if patches changed
+        id: didPatchesChange
         run: |
-          cd android
-          echo "Starting artifacts build for standalone NewDot"
-          echo "Version: ${{ env.NEW_PATCHED_VERSION }}"
-          echo "Commit hash: ${{ env.COMMIT_HASH }}"
-          echo "Patches hash: ${{ env.PATCHES_HASH }}"
-          export ORG_GRADLE_PROJECT_reactNativeArchitectures="armeabi-v7a,arm64-v8a,x86,x86_64"
-          ./gradlew buildReactNativeArtifacts -x lint -x test -x check
-          ./gradlew publishReactNativeArtifacts
-        env:
-          GH_PUBLISH_ACTOR: ${{ github.actor }}
-          GH_PUBLISH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-          IS_HYBRID_BUILD: "false"
-          PATCHED_VERSION: ${{ env.NEW_PATCHED_VERSION }}
-          COMMIT_HASH: ${{ github.event.after }}
-          PATCHES_HASH: ${{ env.PATCHES_HASH }}
-
-  buildAndPublishRNArtifactsForHybridApp:
-    runs-on: ubuntu-latest
-    if: ${{ always() && (needs.verifyNewDotPatchesAndReactNativeVersion.result == 'success' || needs.verifyHybridAppPatches.result == 'success')}}
-    needs: [verifyNewDotPatchesAndReactNativeVersion, verifyHybridAppPatches]
-    steps:
-      - name: Checkout
-        # v4
-        uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
-        with:
-          submodules: true
+          if git ${{ matrix.is_hybrid == 'true' && '-C Mobile-Expensify' }} diff --exit-code --name-only ${{ steps.getOldHash.outputs.HASH }}..${{ steps.getNewHash.outputs.HASH }} -- patches/react-native+*.patch; then
+            echo "::notice::Detected changes in NewDot patches"
+            echo "DID_PATCHES_CHANGE=true" >> "$GITHUB_OUTPUT"
+          else
+            echo "DID_PATCHES_CHANGE=false" >> "$GITHUB_OUTPUT"
+          fi
 
-      - name: Get react-native version
+      - name: Check if we should build and publish the package
+        id: shouldPublish
         run: |
-          echo "VERSION=$(jq -r '.dependencies["react-native"]' package.json)" >> $GITHUB_ENV
+          if [[ '${{ steps.didVersionChange.outputs.DID_VERSION_CHANGE }}' == 'true' || '${{ steps.didPatchesChange.outputs.DID_PATCHES_CHANGE }}' == 'true ]]; then
+            echo "SHOULD_PUBLISH=true" >> "$GITHUB_OUTPUT"
+          else
+            echo "::notice::No relevant changes, skipping publishing a new React Native build"
+            echo "SHOULD_PUBLISH=false" >> "$GITHUB_OUTPUT"
+          fi
 
       - name: Setup Node
+        if: ${{ steps.shouldPublish.outputs.SHOULD_PUBLISH == 'true' }}
         uses: ./.github/actions/composite/setupNode
         with:
-          IS_HYBRID_BUILD: "true"
+          IS_HYBRID_BUILD: ${{ matrix.is_hybrid }}
 
+      # v4
       - name: Setup Java
-        # v4
+        if: ${{ steps.shouldPublish.outputs.SHOULD_PUBLISH == 'true' }}
         uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12
         with:
           distribution: oracle
           java-version: 17
 
+      # v4
       - name: Setup Gradle
-        # v4
+        if: ${{ steps.shouldPublish.outputs.SHOULD_PUBLISH == 'true' }}
         uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244
 
-      - name: Save patches hash
-        run: |
-          echo "PATCHES_HASH=$(./.github/scripts/computePatchesHash.sh)" >> $GITHUB_ENV
-        env:
-          VERSION: ${{ env.VERSION }}
-          PATCHES_PATHS: "patches Mobile-Expensify/patches"
-
       - name: Determine new patched RN version
-        run: |
-          echo "NEW_PATCHED_VERSION=$(./.github/scripts/getNewPatchedRNVersion.sh)" >> $GITHUB_ENV
+        if: ${{ steps.shouldPublish.outputs.SHOULD_PUBLISH == 'true' }}
+        id: getNewPatchedVersion
+        run: echo "NEW_PATCHED_VERSION=$(./.github/scripts/getNewPatchedRNVersion.sh)" >> $GITHUB_OUTPUT
         env:
-          VERSION: ${{ env.VERSION }}
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-          IS_HYBRID_BUILD: "true"
+          GITHUB_TOKEN: ${{ github.token }}
+          IS_HYBRID_BUILD: ${{ matrix.is_hybrid }}
+
       - name: Build and publish RN artifacts
+        if: ${{ steps.shouldPublish.outputs.SHOULD_PUBLISH == 'true' }}
+        working-directory: ${{ matrix.is_hybrid == 'true' && 'Mobile-Expensify/Android' || 'android' }}
         run: |
-          cd Mobile-Expensify/Android
-          echo "Starting artifacts build for HybridApp"
-          echo "Version: ${{ env.NEW_PATCHED_VERSION }}"
+          echo "Starting artifacts build for ${{ matrix.is_hybrid == 'true' && 'HybridApp' || 'NewDot Standalone' }}"
+          echo "Version: ${{ env.PATCHED_VERSION }}"
           echo "Commit hash: ${{ env.COMMIT_HASH }}"
-          echo "Patches hash: ${{ env.PATCHES_HASH }}"
           export ORG_GRADLE_PROJECT_reactNativeArchitectures="armeabi-v7a,arm64-v8a,x86,x86_64"
           ./gradlew buildReactNativeArtifacts -x lint -x test -x check
           ./gradlew publishReactNativeArtifacts
         env:
           GH_PUBLISH_ACTOR: ${{ github.actor }}
-          GH_PUBLISH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-          IS_HYBRID_BUILD: "true"
-          PATCHED_VERSION: ${{ env.NEW_PATCHED_VERSION }}
+          GH_PUBLISH_TOKEN: ${{ github.token }}
+          IS_HYBRID_BUILD: ${{ matrix.is_hybrid }}
+          PATCHED_VERSION: ${{ steps.getNewPatchedVersion.outputs.NEW_PATCHED_VERSION }}
           COMMIT_HASH: ${{ github.event.after }}
-          PATCHES_HASH: ${{ env.PATCHES_HASH }}
diff --git a/patches/react-native+0.77.1+024+publish-gradle.patch b/patches/react-native+0.77.1+024+publish-gradle.patch
index 415b83af56e..e7e7877be6d 100644
--- a/patches/react-native+0.77.1+024+publish-gradle.patch
+++ b/patches/react-native+0.77.1+024+publish-gradle.patch
@@ -4,7 +4,7 @@ index 32287a7..68c9284 100644
 +++ b/node_modules/react-native/ReactAndroid/publish.gradle
 @@ -13,7 +13,11 @@ def signingKey = findProperty("SIGNING_KEY")
  def signingPwd = findProperty("SIGNING_PWD")
- 
+
  def reactAndroidProjectDir = project(':packages:react-native:ReactAndroid').projectDir
 -def mavenTempLocalUrl = "file:///tmp/maven-local"
 +def mavenURL = "https://maven.pkg.github.com/Expensify/App"
@@ -12,13 +12,13 @@ index 32287a7..68c9284 100644
 +def patchedVersion = System.getenv("PATCHED_VERSION")
 +def isHybridBuild = System.getenv("IS_HYBRID_BUILD")?.toBoolean()
 +def publishingGroupId = isHybridBuild ? "com.expensify.react-standalone" : "com.expensify.react-hybrid"
- 
+
  publishing {
      publications {
 @@ -26,12 +30,14 @@ publishing {
                  }
              }
- 
+
 +            groupId = publishingGroupId
 +
              // We populate the publishing version using the project version,
@@ -30,14 +30,13 @@ index 32287a7..68c9284 100644
 -                version = this.version
 +                version = patchedVersion
              }
- 
+
              pom {
 @@ -39,10 +45,15 @@ publishing {
                  description = "A framework for building native apps with React"
                  url = "https://github.com/facebook/react-native"
- 
+
 +                properties = [
-+                    "patchesHash": System.getenv("PATCHES_HASH"),
 +                    "commitHash": System.getenv("COMMIT_HASH"),
 +                ]
 +
@@ -49,9 +48,9 @@ index 32287a7..68c9284 100644
 +                        name = "Expensify"
                      }
                  }
- 
+
 @@ -65,8 +76,11 @@ publishing {
- 
+
      repositories {
          maven {
 -            name = "mavenTempLocal"
Just the workflow, because the diff is hard to read
name: Build and publish React Native artifacts

on:
  push:
    branches:
      - main
    paths:
      - package.json
      - patches/react-native+*.patch
      - Mobile-Expensify

jobs:
  publish:
    runs-on: ${{ github.repository_owner == 'Expensify' && 'ubuntu-latest-xl' || 'ubuntu-latest' }}
    strategy:
      matrix:
        is_hybrid: [true, false]
    env:
      PATCHES_PATHS: ${{ matrix.is_hybrid && 'Mobile-Expensify/patches' || 'patches' }}
    steps:
      # v4
      - name: Checkout
        uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
        with:
          submodules: ${{ matrix.is_hybrid }}
          ref: ${{ github.event.before }}

      - name: Get previous commit hash
        id: getOldHash
        run: echo "HASH=$(git rev-parse ${{ matrix.is_hybrid == 'true' && ':Mobile-Expensify' || 'HEAD' }})" >> "$GITHUB_OUTPUT"

      - name: Get previous react-native version
        id: getOldVersion
        run: echo "VERSION=$(jq -r '.dependencies["react-native"]' package.json)" >> "$GITHUB_OUTPUT"

      - name: Checkout new ref
        run: |
          git fetch origin ${{ github.event.after }} --depth=1
          git checkout ${{ github.event.after }}
          git submodule update

      - name: Get new commit hash
        id: getNewHash
        run: echo "HASH=$(git rev-parse ${{ matrix.is_hybrid == 'true' && ':Mobile-Expensify' || 'HEAD' }})" >> "$GITHUB_OUTPUT"

      - name: Get new react-native version
        id: getNewVersion
        run: echo "VERSION=$(jq -r '.dependencies["react-native"]' package.json)" >> "$GITHUB_OUTPUT"

      - name: Check if version changed
        id: didVersionChange
        run: |
          readonly DID_VERSION_CHANGE=${{ steps.getOldVersion.outputs.VERSION != steps.getNewVersion.outputs.VERSION && 'true' || 'false' }}
          echo "DID_VERSION_CHANGE=$DID_VERSION_CHANGE" >> "$GITHUB_OUTPUT"
          if [[ "$DID_VERSION_CHANGE" == 'true' ]]; then
            echo "::notice::Detected react-native version bump (${{ steps.getOldVersion.outputs.VERSION }} -> ${{ steps.getNewVersion.outputs.VERSION }})"
          fi

      - name: Check if patches changed
        id: didPatchesChange
        run: |
          if git ${{ matrix.is_hybrid == 'true' && '-C Mobile-Expensify' }} diff --exit-code --name-only ${{ steps.getOldHash.outputs.HASH }}..${{ steps.getNewHash.outputs.HASH }} -- patches/react-native+*.patch; then
            echo "::notice::Detected changes in NewDot patches"
            echo "DID_PATCHES_CHANGE=true" >> "$GITHUB_OUTPUT"
          else
            echo "DID_PATCHES_CHANGE=false" >> "$GITHUB_OUTPUT"
          fi

      - name: Check if we should build and publish the package
        id: shouldPublish
        run: |
          if [[ '${{ steps.didVersionChange.outputs.DID_VERSION_CHANGE }}' == 'true' || '${{ steps.didPatchesChange.outputs.DID_PATCHES_CHANGE }}' == 'true ]]; then
            echo "SHOULD_PUBLISH=true" >> "$GITHUB_OUTPUT"
          else
            echo "::notice::No relevant changes, skipping publishing a new React Native build"
            echo "SHOULD_PUBLISH=false" >> "$GITHUB_OUTPUT"
          fi

      - name: Setup Node
        if: ${{ steps.shouldPublish.outputs.SHOULD_PUBLISH == 'true' }}
        uses: ./.github/actions/composite/setupNode
        with:
          IS_HYBRID_BUILD: ${{ matrix.is_hybrid }}

      # v4
      - name: Setup Java
        if: ${{ steps.shouldPublish.outputs.SHOULD_PUBLISH == 'true' }}
        uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12
        with:
          distribution: oracle
          java-version: 17

      # v4
      - name: Setup Gradle
        if: ${{ steps.shouldPublish.outputs.SHOULD_PUBLISH == 'true' }}
        uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244

      - name: Determine new patched RN version
        if: ${{ steps.shouldPublish.outputs.SHOULD_PUBLISH == 'true' }}
        id: getNewPatchedVersion
        run: echo "NEW_PATCHED_VERSION=$(./.github/scripts/getNewPatchedRNVersion.sh)" >> $GITHUB_OUTPUT
        env:
          GITHUB_TOKEN: ${{ github.token }}
          IS_HYBRID_BUILD: ${{ matrix.is_hybrid }}

      - name: Build and publish RN artifacts
        if: ${{ steps.shouldPublish.outputs.SHOULD_PUBLISH == 'true' }}
        working-directory: ${{ matrix.is_hybrid == 'true' && 'Mobile-Expensify/Android' || 'android' }}
        run: |
          echo "Starting artifacts build for ${{ matrix.is_hybrid == 'true' && 'HybridApp' || 'NewDot Standalone' }}"
          echo "Version: ${{ env.PATCHED_VERSION }}"
          echo "Commit hash: ${{ env.COMMIT_HASH }}"
          export ORG_GRADLE_PROJECT_reactNativeArchitectures="armeabi-v7a,arm64-v8a,x86,x86_64"
          ./gradlew buildReactNativeArtifacts -x lint -x test -x check
          ./gradlew publishReactNativeArtifacts
        env:
          GH_PUBLISH_ACTOR: ${{ github.actor }}
          GH_PUBLISH_TOKEN: ${{ github.token }}
          IS_HYBRID_BUILD: ${{ matrix.is_hybrid }}
          PATCHED_VERSION: ${{ steps.getNewPatchedVersion.outputs.NEW_PATCHED_VERSION }}
          COMMIT_HASH: ${{ github.event.after }}

@roryabraham
Copy link
Contributor

In a separate PR, I'd like to add the changes necessary to enable the use of custom build artifacts during regular builds

I'm not sure what you mean by this.

Publication process uses github token and github actor. I had to enable package write permissions in order to use it on my fork. We might want to consider switching to bot credentials instead.

Looks like github.token has package:read/write permission by default: https://docs.github.com/en/actions/security-for-github-actions/security-guides/automatic-token-authentication#permissions-for-the-github_token

So we should be good with the standard token rather than another bot token

@mateuuszzzzz
Copy link
Contributor Author

mateuuszzzzz commented Apr 17, 2025

In a separate PR, I'd like to add the changes necessary to enable the use of custom build artifacts during regular builds

I'm not sure what you mean by this.

Sorry, I meant that this PR only added mechanism that builds react-native artifacts. Currently there's no automated way to use those custom artifacts during HybridApp / Standalone NewDot builds.

I thought it would be nice to implement this second part in another PR as it gives us better control and minimizes the risk of breaking local or CI builds if something goes wrong.

@roryabraham
Copy link
Contributor

Cool, that makes sense to me - create the artifacts in one PR and consume them in another

@mateuuszzzzz
Copy link
Contributor Author

mateuuszzzzz commented Apr 22, 2025

Pasting a part of suggested refactored workflow to discuss it:

 - name: Check if patches changed
        id: didPatchesChange
        run: |
          if git ${{ matrix.is_hybrid == 'true' && '-C Mobile-Expensify' }} diff --exit-code --name-only ${{ steps.getOldHash.outputs.HASH }}..${{ steps.getNewHash.outputs.HASH }} -- patches/react-native+*.patch; then
            echo "::notice::Detected changes in NewDot patches"
            echo "DID_PATCHES_CHANGE=true" >> "$GITHUB_OUTPUT"
          else
            echo "DID_PATCHES_CHANGE=false" >> "$GITHUB_OUTPUT"
          fi

When is_hybrid is true this step will only check diff in Mobile-Expensify patches. For HybridApp builds we apply patches from root directory first and then patches from Mobile-Expensify directory. We need additional if for this scenario that computes diff for root directory as well. I changed it in this commit: b225e52

In general, HybridApp artifacts should be created in this 3 scenarios:

  1. react-native version is changed
  2. react-native patches in root directory are changed
  3. react-native patches in Mobile-Expensify directory are changed

Copy link

melvin-bot bot commented Apr 23, 2025

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

@mateuuszzzzz mateuuszzzzz changed the title Create prebuilt React Native artifacts [No QA] Create prebuilt React Native artifacts Apr 23, 2025
@roryabraham
Copy link
Contributor

actionslint is still failing - you can check it with npm run gh-actions-validate

@roryabraham
Copy link
Contributor

diff to fix it:

diff --git a/.github/workflows/publishReactNativeAndroidArtifacts.yml b/.github/workflows/publishReactNativeAndroidArtifacts.yml
index 8b91bc5a175..30c2f05ecd6 100644
--- a/.github/workflows/publishReactNativeAndroidArtifacts.yml
+++ b/.github/workflows/publishReactNativeAndroidArtifacts.yml
@@ -31,7 +31,7 @@ jobs:
       - name: Get previous Mobile-Expensify commit hash
         if: ${{ matrix.is_hybrid == 'true' }}
         id: getOldMobileExpensifyHash
-        run: echo "HASH=$(git rev-parse :Mobile-Expensify) >> "$GITHUB_OUTPUT"
+        run: echo "HASH=$(git rev-parse :Mobile-Expensify)" >> "$GITHUB_OUTPUT"
 
       - name: Get previous react-native version
         id: getOldVersion
@@ -87,7 +87,7 @@ jobs:
       - name: Check if we should build and publish the package
         id: shouldPublish
         run: |
-          if [[ '${{ steps.didVersionChange.outputs.DID_VERSION_CHANGE }}' == 'true' || '${{ steps.didPatchesChange.outputs.DID_PATCHES_CHANGE }}' == 'true ]]; then
+          if [[ '${{ steps.didVersionChange.outputs.DID_VERSION_CHANGE }}' == 'true' || '${{ steps.didPatchesChange.outputs.DID_PATCHES_CHANGE }}' == 'true' ]]; then
             echo "SHOULD_PUBLISH=true" >> "$GITHUB_OUTPUT"
           else
             echo "::notice::No relevant changes, skipping publishing a new React Native build"
@@ -116,7 +116,7 @@ jobs:
       - name: Determine new patched RN version
         if: ${{ steps.shouldPublish.outputs.SHOULD_PUBLISH == 'true' }}
         id: getNewPatchedVersion
-        run: echo "NEW_PATCHED_VERSION=$(./.github/scripts/getNewPatchedRNVersion.sh)" >> $GITHUB_OUTPUT
+        run: echo "NEW_PATCHED_VERSION=$(./.github/scripts/getNewPatchedRNVersion.sh)" >> "$GITHUB_OUTPUT"
         env:
           GITHUB_TOKEN: ${{ github.token }}
           IS_HYBRID_BUILD: ${{ matrix.is_hybrid }}

Copy link
Contributor

@roryabraham roryabraham left a comment

Choose a reason for hiding this comment

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

see diff

@roryabraham
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 that the composer does not automatically focus or open the keyboard on mobile unless explicitly intended. This includes checking that returning the app from the background does not unexpectedly open the keyboard.
  • 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 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 either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
    • 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.ts 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(theme.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 the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
    • I verified that all the inputs inside a form are aligned with each other.
    • I added Design label and/or tagged @Expensify/design so the design team can review the changes.
  • 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.
  • For any bug fix or new feature in this PR, I verified that sufficient unit tests are included to prevent regressions in this flow.
  • 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

Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari
MacOS: Desktop

@roryabraham roryabraham merged commit b5c9d19 into Expensify:main Apr 24, 2025
16 checks passed
@OSBotify
Copy link
Contributor

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

@roryabraham
Copy link
Contributor

This didn't work as written - we needed to use the OS_BOTIFY_TOKEN to get access to Mobile-Expensify. Created fast-follower to fix it here: #60865

@roryabraham
Copy link
Contributor

Second test run after fast-follower: https://github.com/Expensify/App/actions/runs/14652470386/job/41121256064

@roryabraham
Copy link
Contributor

looks like that worked 🎉

@github-actions github-actions bot added the DeployBlockerCash This issue or pull request should block deployment label Apr 24, 2025
Copy link
Contributor

Performance Comparison Report 📊 (1/6)

⚠️ Some tests did not pass successfully, so some results are omitted from final report: Report typing, Linking, Money request

Significant Changes To Duration

Name Duration
App start time contentAppeared_To_screenTTI 733.749 ms → 859.693 ms (+125.943 ms, +17.2%) 🔴
App start time TTI 1462.443 ms → 1593.859 ms (+131.416 ms, +9.0%) 🔴
Show details
Name Duration
App start time contentAppeared_To_screenTTI Baseline
Mean: 733.749 ms
Stdev: 50.996 ms (7.0%)
Runs: 617.7725619999692 652.8300620000809 657.6298909999896 660.0901609999128 661.7446230000351 662.7896900000051 663.6270409999415 675.6017030000221 677.9943379999604 681.5420570001006 688.8223919998854 691.3216790000442 694.5348040000536 696.6316990000196 700.1811339999549 700.9921349999495 701.1192280000541 707.1525689999107 717.7454150000121 721.4584180000238 722.8628050000407 723.2041140000802 726.7677309999708 733.2786940000951 734.074672000017 736.6054100000765 743.224324000068 745.4056319999509 746.728693000041 751.2657469999976 756.9093629999552 758.7593199999537 760.9452209998854 774.1770520000719 774.9596140000504 777.1322009998839 781.8855950001162 786.956177999964 788.1011069999076 788.4363770000637 789.5621030000038 794.3290510000661 796.1299429999199 797.1590430000797 801.2203240001108 802.191218999913 802.8123339999001 805.955098999897 821.0996779999696

Current
Mean: 859.693 ms
Stdev: 225.367 ms (26.2%)
Runs: 647.3474280000664 648.6348840000574 662.4653229999822 666.1423889999278 671.3517479998991 671.4147809999995 673.4669369999319 674.5848189999815 686.7023579999804 687.8583190001082 688.8937790000346 689.6731970000546 691.4807329999749 712.89836500003 717.1112399999984 717.2478960000444 720.734211999923 723.7947639999911 725.8954900000244 726.3100900000427 731.6472640000284 732.2946099999826 733.4415150000714 733.8988469999749 734.4452609999571 737.789955999935 741.6345540001057 745.2211549999192 747.3650380000472 749.8307990001049 757.9802989999298 758.3603290000465 760.0307769998908 772.3770610000938 776.6730659999885 777.6625989999156 779.7685020000208 781.6469300000463 785.2481120000593 791.6682510001119 792.2380210000556 792.9010350001045 814.0709999999963 814.6360220001079 820.0514179999009 1125.3169199998956 1162.6166620000731 1195.0220639999025 1198.950000999961 1214.0166599999648 1236.1859430000186 1237.2374849999323 1241.8401329999324 1259.8318839999847 1260.6701660000253 1269.1148109999485 1270.866151999915 1298.812673999928 1305.7591279998887 1338.4276340000797
App start time TTI Baseline
Mean: 1462.443 ms
Stdev: 58.926 ms (4.0%)
Runs: 1322.830062000081 1327.7725619999692 1357.6270409999415 1367.3216790000442 1372.8223919998854 1377.789690000005 1379.181133999955 1392.6298909999896 1395.9943379999604 1412.2657469999976 1413.1525689999107 1424.9921349999495 1431.2041140000802 1432.0901609999128 1436.4056319999509 1444.1192280000541 1447.7454150000121 1453.601703000022 1453.6316990000196 1454.224324000068 1454.9452209998854 1459.074672000017 1460.7677309999708 1468.5348040000536 1470.744623000035 1474.2786940000951 1476.5420570001006 1477.7593199999537 1478.4584180000238 1482.8628050000407 1484.8123339999001 1489.9093629999552 1493.6054100000765 1495.956177999964 1497.5621030000038 1498.2203240001108 1512.1770520000719 1514.4363770000637 1517.132200999884 1518.8855950001162 1519.1590430000797 1520.728693000041 1522.329051000066 1524.1299429999199 1535.1011069999076 1542.0996779999696 1551.191218999913 1559.955098999897 1560.9596140000504

Current
Mean: 1593.859 ms
Stdev: 238.055 ms (14.9%)
Runs: 1328.8937790000346 1339.466936999932 1364.5848189999815 1386.1112399999984 1393.6348840000574 1394.351747999899 1399.3474280000664 1407.4147809999995 1409.445260999957 1412.1423889999278 1417.8954900000244 1418.8583190001082 1428.7947639999911 1429.4415150000714 1433.7023579999804 1435.3100900000427 1436.789955999935 1437.6472640000284 1441.4807329999749 1443.3650380000472 1446.734211999923 1448.4653229999822 1457.6345540001057 1465.2946099999826 1469.3603290000465 1477.2481120000593 1482.89836500003 1484.9802989999298 1486.898846999975 1489.3770610000938 1498.6731970000546 1499.7685020000208 1500.6730659999885 1501.2478960000444 1502.2211549999192 1506.0307769998908 1514.2380210000556 1522.636022000108 1526.6625989999156 1528.9010350001045 1546.668251000112 1546.830799000105 1548.6469300000463 1552.0514179999009 1577.0709999999963 1868.6166620000731 1874.3169199998956 1879.0220639999025 1965.950000999961 1983.2374849999323 1990.8318839999847 2000.8401329999324 2003.866151999915 2009.1859430000186 2011.0166599999648 2041.1148109999485 2056.6701660000253 2061.7591279998887 2067.812673999928 2077.4276340000797

Copy link
Contributor

Performance Comparison Report 📊 (2/6)

Meaningless Changes To Duration (1/5)

Show entries
Name Duration
App start time nativeLaunchEnd_To_appCreationStart 82.683 ms → 88.800 ms (+6.117 ms, +7.4%)
App start time nativeLaunch 27.317 ms → 26.610 ms (-0.706 ms, -2.6%)
App start time appCreation 76.283 ms → 74.241 ms (-2.042 ms, -2.7%)
App start time appCreationEnd_To_contentAppeared 541.508 ms → 543.050 ms (+1.542 ms, ±0.0%)
App start time runJsBundle 340.268 ms → 343.424 ms (+3.156 ms, +0.9%)
App start time regularAppStart 0.022 ms → 0.023 ms (+0.000 ms, +0.9%)
App start time (CPU) 156.545 % → 152.455 % (-4.090 %, -2.6%)
App start time (FPS) 60.000 FPS → 60.000 FPS
App start time (RAM) 361.306 MB → 361.893 MB (+0.587 MB, ±0.0%)
App start time (CPU/JS) 0.000 % → 0.000 %
App start time (CPU/UI) 30.658 % → 30.486 % (-0.172 %, -0.6%)
Open search router TTI Load Search Options 150.939 ms → 149.692 ms (-1.248 ms, -0.8%)
Open search router TTI Open Search Router TTI 1262.849 ms → 1254.611 ms (-8.238 ms, -0.7%)
Open search router TTI (CPU) 151.328 % → 152.867 % (+1.539 %, +1.0%)
Open search router TTI (FPS) 60.000 FPS → 60.000 FPS
Open search router TTI (RAM) 392.729 MB → 392.600 MB (-0.130 MB, ±0.0%)
Open search router TTI (CPU/JS) 0.000 % → 0.000 %
Open search router TTI (CPU/UI) 25.990 % → 26.317 % (+0.327 %, +1.3%)
Chat opening Chat TTI 806.966 ms → 804.540 ms (-2.427 ms, ±0.0%)
Chat opening (CPU) 162.370 % → 162.319 % (-0.051 %, ±0.0%)
Chat opening (FPS) 60.000 FPS → 60.000 FPS
Chat opening (RAM) 391.297 MB → 391.543 MB (+0.246 MB, ±0.0%)
Chat opening (CPU/JS) 0.000 % → 0.000 %
Chat opening (CPU/UI) 31.861 % → 32.005 % (+0.144 %, ±0.0%)
Show details
Name Duration
App start time nativeLaunchEnd_To_appCreationStart Baseline
Mean: 82.683 ms
Stdev: 11.054 ms (13.4%)
Runs: 64 67 68 69 70 70 70 70 71 71 72 73 73 73 74 74 74 75 76 76 76 77 77 77 77 78 79 79 80 81 81 82 82 83 83 84 84 84 85 86 86 87 87 88 89 90 91 93 94 94 97 98 98 98 100 103 104 104 104 111

Current
Mean: 88.800 ms
Stdev: 11.302 ms (12.7%)
Runs: 67 70 72 72 73 73 74 75 75 76 76 77 79 79 79 80 80 80 81 81 82 82 84 84 85 86 86 86 87 90 90 90 91 93 93 93 94 94 94 95 95 95 96 96 96 98 98 99 99 100 103 103 103 104 105 105 106 109 109 111
App start time nativeLaunch Baseline
Mean: 27.317 ms
Stdev: 4.664 ms (17.1%)
Runs: 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 25 25 25 26 26 26 26 27 27 27 27 27 27 28 28 28 30 30 31 31 31 32 32 32 33 34 34 35 36 36 36 37 38 38

Current
Mean: 26.610 ms
Stdev: 4.223 ms (15.9%)
Runs: 21 22 22 22 22 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 24 24 24 24 25 25 25 25 25 25 25 26 26 26 26 27 27 27 27 27 28 28 29 29 30 30 30 31 31 31 32 32 33 34 34 34 34 36 40
App start time appCreation Baseline
Mean: 76.283 ms
Stdev: 9.536 ms (12.5%)
Runs: 54 57 60 62 63 65 65 66 66 67 67 68 68 69 69 70 70 71 71 71 73 73 73 73 74 75 75 76 76 77 77 77 78 78 78 78 78 78 79 79 79 79 80 80 83 84 84 84 84 84 84 86 88 88 91 92 93 95 96 99

Current
Mean: 74.241 ms
Stdev: 8.683 ms (11.7%)
Runs: 58 59 60 61 61 64 65 65 65 67 67 67 67 68 68 68 68 69 69 70 71 71 71 71 71 71 71 73 73 73 73 74 75 75 76 77 78 78 78 79 79 80 80 81 81 82 82 83 83 84 84 84 85 85 86 88 93 101
App start time appCreationEnd_To_contentAppeared Baseline
Mean: 541.508 ms
Stdev: 29.353 ms (5.4%)
Runs: 483 484 495 497 498 498 499 501 501 505 512 512 518 526 529 529 529 530 530 530 531 532 532 533 534 536 538 539 540 540 542 542 546 547 548 548 551 552 553 553 556 556 558 560 564 565 566 566 566 566 569 569 570 577 589 593 600 604 612

Current
Mean: 543.050 ms
Stdev: 34.320 ms (6.3%)
Runs: 446 470 489 494 498 498 502 505 507 513 513 514 515 517 517 517 518 519 524 525 525 528 530 530 537 538 539 543 545 545 547 549 550 551 551 553 555 556 556 559 561 562 562 562 564 567 570 571 571 574 577 577 583 583 584 589 603 608 611 616

Copy link
Contributor

Performance Comparison Report 📊 (3/6)

Meaningless Changes To Duration (2/5)

Show entries
Name Duration
App start time nativeLaunchEnd_To_appCreationStart 82.683 ms → 88.800 ms (+6.117 ms, +7.4%)
App start time nativeLaunch 27.317 ms → 26.610 ms (-0.706 ms, -2.6%)
App start time appCreation 76.283 ms → 74.241 ms (-2.042 ms, -2.7%)
App start time appCreationEnd_To_contentAppeared 541.508 ms → 543.050 ms (+1.542 ms, ±0.0%)
App start time runJsBundle 340.268 ms → 343.424 ms (+3.156 ms, +0.9%)
App start time regularAppStart 0.022 ms → 0.023 ms (+0.000 ms, +0.9%)
App start time (CPU) 156.545 % → 152.455 % (-4.090 %, -2.6%)
App start time (FPS) 60.000 FPS → 60.000 FPS
App start time (RAM) 361.306 MB → 361.893 MB (+0.587 MB, ±0.0%)
App start time (CPU/JS) 0.000 % → 0.000 %
App start time (CPU/UI) 30.658 % → 30.486 % (-0.172 %, -0.6%)
Open search router TTI Load Search Options 150.939 ms → 149.692 ms (-1.248 ms, -0.8%)
Open search router TTI Open Search Router TTI 1262.849 ms → 1254.611 ms (-8.238 ms, -0.7%)
Open search router TTI (CPU) 151.328 % → 152.867 % (+1.539 %, +1.0%)
Open search router TTI (FPS) 60.000 FPS → 60.000 FPS
Open search router TTI (RAM) 392.729 MB → 392.600 MB (-0.130 MB, ±0.0%)
Open search router TTI (CPU/JS) 0.000 % → 0.000 %
Open search router TTI (CPU/UI) 25.990 % → 26.317 % (+0.327 %, +1.3%)
Chat opening Chat TTI 806.966 ms → 804.540 ms (-2.427 ms, ±0.0%)
Chat opening (CPU) 162.370 % → 162.319 % (-0.051 %, ±0.0%)
Chat opening (FPS) 60.000 FPS → 60.000 FPS
Chat opening (RAM) 391.297 MB → 391.543 MB (+0.246 MB, ±0.0%)
Chat opening (CPU/JS) 0.000 % → 0.000 %
Chat opening (CPU/UI) 31.861 % → 32.005 % (+0.144 %, ±0.0%)
Show details
Name Duration
App start time runJsBundle Baseline
Mean: 340.268 ms
Stdev: 18.456 ms (5.4%)
Runs: 307 307 309 309 309 309 310 310 315 315 316 316 317 317 318 318 318 318 319 319 323 323 325 325 328 328 331 331 331 331 332 332 333 333 333 333 333 333 334 334 334 334 334 334 335 335 335 335 336 336 338 338 338 338 339 339 340 340 340 340 341 341 341 341 343 343 343 343 343 343 344 344 344 344 345 345 346 346 346 346 346 346 348 348 351 351 352 352 352 352 360 360 361 361 361 361 361 361 363 363 366 366 368 368 375 375 381 381 381 381 383 383

Current
Mean: 343.424 ms
Stdev: 21.380 ms (6.2%)
Runs: 287 287 297 297 302 302 303 303 310 310 316 316 320 320 321 321 324 324 324 324 325 325 325 325 326 326 331 331 331 331 332 332 333 333 335 335 335 335 335 335 337 337 338 338 338 338 339 339 339 339 339 339 339 339 340 340 341 341 342 342 343 343 345 345 345 345 345 345 346 346 348 348 350 350 351 351 352 352 353 353 354 354 356 356 358 358 359 359 361 361 364 364 364 364 364 364 366 366 366 366 366 366 367 367 367 367 369 369 371 371 378 378 379 379 385 385 386 386
App start time regularAppStart Baseline
Mean: 0.022 ms
Stdev: 0.002 ms (8.6%)
Runs: 0.018269999884068966 0.01920600002631545 0.01936800009571016 0.019530999939888716 0.019857000093907118 0.019857000093907118 0.020018999930471182 0.020060000009834766 0.020628999918699265 0.02079300000332296 0.02087399992160499 0.021078000077977777 0.021157999988645315 0.021646999986842275 0.021647999994456768 0.021769999992102385 0.021809999831020832 0.021849999902769923 0.02197199990041554 0.022012999979779124 0.02205400005914271 0.022055000066757202 0.022055000066757202 0.022135999985039234 0.022176000056788325 0.022378999972715974 0.022378999972715974 0.02250099997036159 0.02254300005733967 0.022582999896258116 0.02266400004737079 0.022744999965652823 0.022868000203743577 0.023071000119671226 0.023233999963849783 0.02331500011496246 0.023437000112608075 0.0235190000385046 0.023600999964401126 0.02384499995969236 0.023966999957337976 0.024007000029087067 0.024252000031992793 0.024536000099033117 0.024536000099033117 0.024984000017866492 0.025308999931439757 0.025390999857336283 0.026692999992519617 0.026814999990165234 0.026814999990165234

Current
Mean: 0.023 ms
Stdev: 0.003 ms (14.6%)
Runs: 0.017131000058725476 0.017659999895840883 0.01839099987410009 0.018431999953463674 0.0186769999563694 0.019124000100418925 0.019164999946951866 0.01920600002631545 0.019286999944597483 0.019286999944597483 0.019653999945148826 0.01993800001218915 0.020222999854013324 0.020222999854013324 0.02026399993337691 0.020345000084489584 0.020345000084489584 0.020506999921053648 0.020548000000417233 0.02079300000332296 0.02087399992160499 0.020915000000968575 0.021036999998614192 0.021484999917447567 0.02148500015027821 0.021566000068560243 0.021727999905124307 0.021810000063851476 0.021891999989748 0.022298000054433942 0.02266400004737079 0.02298999996855855 0.0231929998844862 0.02331599988974631 0.023356000194326043 0.023437999887391925 0.023926000110805035 0.024047000100836158 0.024169999873265624 0.024332999950274825 0.024698999943211675 0.02469900017604232 0.02490300009958446 0.024942999938502908 0.024942999938502908 0.02494300017133355 0.02534900000318885 0.025594000006094575 0.02571600000374019 0.027263000141829252 0.02775100013241172 0.02840099995955825 0.028971000108867884 0.029215999878942966 0.030192000092938542 0.032226999988779426
App start time (CPU) Baseline
Mean: 156.545 %
Stdev: 7.529 % (4.8%)
Runs: 138.1482520971716 139.24807299040427 139.3265273038303 143.232770012904 144.49357373484585 145.08043924313955 145.46159160968014 147.8917325364694 148.62264210961607 149.2546479131406 149.8605312338463 150 150.27063042043847 151.5310331717518 151.71283567545166 152.30840109046324 152.9656785859513 153.02167863845204 153.24625997272767 154.38372806871192 155.2281486049021 155.43533436766512 156.14390644335322 156.34532881548796 156.45455542815088 156.52957853348906 157.04820818737537 157.09747537402853 157.24602919101838 157.71616449802968 157.78727926044905 157.92968221771463 158.32024475760895 158.90779610021988 158.96359415397822 159.59945382774734 159.69391523115658 159.8112212677835 159.91245629257983 160.31057842075967 160.58646963749706 161.46974082546964 162.28927523480317 162.3351124879047 162.96559531142495 163.02231844608906 163.04984745509591 163.74874963224482 163.8888293374305 164.17346971849915 164.63151590749618 166.15575626945557 166.33333333333337 166.5785797166992 167.1813003284521 168.069379624012 168.23614225149967 168.35877364407511

Current
Mean: 152.455 %
Stdev: 9.204 % (6.0%)
Runs: 130.393667694032 130.74867563639773 131.34427473674225 131.76095617529884 135.5490698274664 137.43635130182548 139.50383493914808 142.49693537782872 143.6959303382165 144.19573396275732 144.42045930664074 144.44444444444446 144.63782326239783 146.25929658834147 146.31815516125664 146.74273326428775 147.85570776742273 147.92162553582196 149.71245343148712 150.66577188132732 151.46717253884472 151.6754864059826 152.32382072475585 152.33200460280872 152.99347345427412 153.29645557661604 153.3863798821532 153.63107317505484 153.7116257314195 154.20607636020182 154.2879350293298 154.41338306005193 154.6838243574685 155.1604276409906 155.3537993832458 155.74937941579228 155.75347912524853 156.76377349063856 157.3580156700362 157.89564273580646 158.28723132024658 159.13589739559836 159.19900973267033 159.6796385753903 159.68063872255496 159.75685481432066 159.8148713707026 160.15973497406424 160.2557050860614 160.32959258203977 160.51587603141405 160.83735801857654 162.7859112121208 163.8454740295554 164.34109958451228 164.8442515715815 165.58841098209578 165.67582423921505 167.56513169431983
App start time (FPS) Baseline
Mean: 60.000 FPS
Stdev: 0.000 FPS (0.0%)
Runs: 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60

Current
Mean: 60.000 FPS
Stdev: 0.000 FPS (0.0%)
Runs: 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60

Copy link
Contributor

Performance Comparison Report 📊 (4/6)

Meaningless Changes To Duration (3/5)

Show entries
Name Duration
App start time nativeLaunchEnd_To_appCreationStart 82.683 ms → 88.800 ms (+6.117 ms, +7.4%)
App start time nativeLaunch 27.317 ms → 26.610 ms (-0.706 ms, -2.6%)
App start time appCreation 76.283 ms → 74.241 ms (-2.042 ms, -2.7%)
App start time appCreationEnd_To_contentAppeared 541.508 ms → 543.050 ms (+1.542 ms, ±0.0%)
App start time runJsBundle 340.268 ms → 343.424 ms (+3.156 ms, +0.9%)
App start time regularAppStart 0.022 ms → 0.023 ms (+0.000 ms, +0.9%)
App start time (CPU) 156.545 % → 152.455 % (-4.090 %, -2.6%)
App start time (FPS) 60.000 FPS → 60.000 FPS
App start time (RAM) 361.306 MB → 361.893 MB (+0.587 MB, ±0.0%)
App start time (CPU/JS) 0.000 % → 0.000 %
App start time (CPU/UI) 30.658 % → 30.486 % (-0.172 %, -0.6%)
Open search router TTI Load Search Options 150.939 ms → 149.692 ms (-1.248 ms, -0.8%)
Open search router TTI Open Search Router TTI 1262.849 ms → 1254.611 ms (-8.238 ms, -0.7%)
Open search router TTI (CPU) 151.328 % → 152.867 % (+1.539 %, +1.0%)
Open search router TTI (FPS) 60.000 FPS → 60.000 FPS
Open search router TTI (RAM) 392.729 MB → 392.600 MB (-0.130 MB, ±0.0%)
Open search router TTI (CPU/JS) 0.000 % → 0.000 %
Open search router TTI (CPU/UI) 25.990 % → 26.317 % (+0.327 %, +1.3%)
Chat opening Chat TTI 806.966 ms → 804.540 ms (-2.427 ms, ±0.0%)
Chat opening (CPU) 162.370 % → 162.319 % (-0.051 %, ±0.0%)
Chat opening (FPS) 60.000 FPS → 60.000 FPS
Chat opening (RAM) 391.297 MB → 391.543 MB (+0.246 MB, ±0.0%)
Chat opening (CPU/JS) 0.000 % → 0.000 %
Chat opening (CPU/UI) 31.861 % → 32.005 % (+0.144 %, ±0.0%)
Show details
Name Duration
App start time (RAM) Baseline
Mean: 361.306 MB
Stdev: 7.083 MB (2.0%)
Runs: 341.37109375 349.640625 350.1953125 354.34375 354.3515625 354.50390625 354.7734375 354.78125 355.3736979166667 355.6041666666667 355.6822916666667 355.7747395833333 356.32421875 356.4713541666667 356.7122395833333 356.8346354166667 357.0677083333333 357.3828125 357.4283854166667 357.6015625 357.7265625 358.0872395833333 358.2825520833333 358.3059895833333 358.46484375 358.68359375 358.7421875 358.84375 359.6341145833333 359.64453125 360.29296875 360.3619791666667 360.5104166666667 360.5807291666667 361.28515625 361.6419270833333 362.3736979166667 362.6848958333333 364.1669921875 364.4482421875 365.7317708333333 367.2018229166667 367.208984375 367.6005859375 368.05859375 368.5283203125 368.955078125 369.4453125 369.5439453125 370.4817708333333 370.873046875 371.515625 371.6419270833333 373.4856770833333 374.05078125 374.189453125 378.9640625

Current
Mean: 361.893 MB
Stdev: 6.880 MB (1.9%)
Runs: 343.572265625 344.91796875 350.6145833333333 354.5703125 354.6848958333333 355.28515625 356.0846354166667 356.2421875 356.3997395833333 356.75390625 356.9973958333333 357.0169270833333 357.3502604166667 357.6302083333333 357.6744791666667 357.7682291666667 358.13671875 358.41015625 358.5703125 358.83203125 359.6106770833333 359.6927083333333 359.7122395833333 359.96875 360.1184895833333 360.34375 360.5833333333333 360.66796875 360.8059895833333 361.4791666666667 361.8294270833333 361.8919270833333 362.7473958333333 363.5 364.0078125 364.296875 364.490234375 364.90625 365.4140625 366.0712890625 366.6315104166667 367.08203125 368.1067708333333 369.1875 369.5302734375 369.611328125 369.798828125 370.5390625 370.9228515625 371.712890625 372.244140625 373.3763020833333 374.3232421875 379.5046875
App start time (CPU/JS) Baseline
Mean: 0.000 %
Stdev: 0.000 % (NaN%)
Runs: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Current
Mean: 0.000 %
Stdev: 0.000 % (NaN%)
Runs: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
App start time (CPU/UI) Baseline
Mean: 30.658 %
Stdev: 2.746 % (9.0%)
Runs: 23 24 24.9 26.7 26.8 27 27 27.2 28 28.4 28.5 28.6 28.6 29 29 29.1 29.2 29.5 29.6 29.8 29.8 29.9 29.9 30 30.1 30.3 30.3 30.5 30.9 31.1 31.3 31.3 31.4 31.4 31.9 31.9 31.9 32.1 32.5 32.5 32.7 32.7 32.8 32.8 33 33.2 33.3 33.3 33.6 33.7 33.8 34 34 34.1 35.1 35.2 35.3

Current
Mean: 30.486 %
Stdev: 2.258 % (7.4%)
Runs: 23.9 25.9 26 26.6 27.5 28 28.1 28.4 28.6 28.7 28.9 28.9 28.9 29 29.3 29.4 29.7 29.7 29.8 29.9 30 30.1 30.4 30.5 30.5 30.6 30.7 30.9 31 31.2 31.2 31.3 31.3 31.3 31.6 31.9 31.9 32 32 32.2 32.6 32.6 32.7 32.8 33.2 33.3 33.3 33.3 33.9 34 35.3
Open search router TTI Load Search Options Baseline
Mean: 150.939 ms
Stdev: 8.443 ms (5.6%)
Runs: 137.25935900001787 137.46008299989626 138.0353190000169 140.6215000001248 140.96606500004418 142.8885500000324 142.94893399998546 143.7135830000043 143.77815799997188 144.23270699987188 144.33158400002867 144.35416699992493 144.39921099995263 144.4364020000212 144.6979580000043 144.74983700015582 145.0221760000568 145.0364989999216 145.11438000015914 145.1582440000493 145.2762450000737 145.29915400012396 145.39278099988587 145.7514239999 145.8036700002849 145.87048300006427 146.05997700011358 146.44161000009626 147.36132899997756 147.55940699996427 148.16894599981606 148.63285299995914 148.8042809998151 149.43310600006953 149.5203450000845 149.83837900008075 150.63944499986246 151.07759599993005 151.73502599983476 155.35249800002202 156.56392400013283 157.31123899994418 157.48063200013712 157.90222100005485 157.9086510001216 158.41801000013947 159.17338100005873 160.53544100001454 160.86657700012438 160.87797000003047 160.89164200006053 161.17097999993712 161.69925900013186 162.75927700009197 164.43363500013947 164.75952200009488 165.29980499995872 166.87386000016704 167.00455700000748 171.20747900009155

Current
Mean: 149.692 ms
Stdev: 7.193 ms (4.8%)
Runs: 137.71012300020084 138.8100179999601 139.0400390001014 139.0531820000615 139.89249700005166 140.5728760000784 142.7594810000155 142.89241600013338 143.44189500017092 143.6176349997986 143.74983800016344 143.88419599994086 144.17085799993947 144.172038000077 144.38578199991025 144.43212900008075 144.45576999988407 144.47432500007562 145.35949699999765 145.4334309999831 145.69421399990097 145.94616700010374 146.27628599992022 146.50362199987285 146.93017599987797 147.21321600000374 147.50638799997978 147.96000199997798 147.9894619998522 148.0580239999108 148.81937599997036 148.9039300000295 149.01766000012867 149.23608399997465 149.53287700004876 149.8869630000554 150.03442399995402 150.7344569999259 151.2198080001399 151.67993099987507 151.69596399995498 152.20951299997978 152.50040699983947 153.17000399995595 154.16686999984086 154.48714200011455 154.90934300003573 154.94966699997894 155.34480799990706 155.68945299996994 155.96537299989723 158.24812800018117 159.63281199987978 159.7704669998493 160.1269120001234 161.8244630000554 162.55407700012438 165.456135999877 167.99641899997368 169.34810400009155

Copy link
Contributor

Performance Comparison Report 📊 (5/6)

Meaningless Changes To Duration (4/5)

Show entries
Name Duration
App start time nativeLaunchEnd_To_appCreationStart 82.683 ms → 88.800 ms (+6.117 ms, +7.4%)
App start time nativeLaunch 27.317 ms → 26.610 ms (-0.706 ms, -2.6%)
App start time appCreation 76.283 ms → 74.241 ms (-2.042 ms, -2.7%)
App start time appCreationEnd_To_contentAppeared 541.508 ms → 543.050 ms (+1.542 ms, ±0.0%)
App start time runJsBundle 340.268 ms → 343.424 ms (+3.156 ms, +0.9%)
App start time regularAppStart 0.022 ms → 0.023 ms (+0.000 ms, +0.9%)
App start time (CPU) 156.545 % → 152.455 % (-4.090 %, -2.6%)
App start time (FPS) 60.000 FPS → 60.000 FPS
App start time (RAM) 361.306 MB → 361.893 MB (+0.587 MB, ±0.0%)
App start time (CPU/JS) 0.000 % → 0.000 %
App start time (CPU/UI) 30.658 % → 30.486 % (-0.172 %, -0.6%)
Open search router TTI Load Search Options 150.939 ms → 149.692 ms (-1.248 ms, -0.8%)
Open search router TTI Open Search Router TTI 1262.849 ms → 1254.611 ms (-8.238 ms, -0.7%)
Open search router TTI (CPU) 151.328 % → 152.867 % (+1.539 %, +1.0%)
Open search router TTI (FPS) 60.000 FPS → 60.000 FPS
Open search router TTI (RAM) 392.729 MB → 392.600 MB (-0.130 MB, ±0.0%)
Open search router TTI (CPU/JS) 0.000 % → 0.000 %
Open search router TTI (CPU/UI) 25.990 % → 26.317 % (+0.327 %, +1.3%)
Chat opening Chat TTI 806.966 ms → 804.540 ms (-2.427 ms, ±0.0%)
Chat opening (CPU) 162.370 % → 162.319 % (-0.051 %, ±0.0%)
Chat opening (FPS) 60.000 FPS → 60.000 FPS
Chat opening (RAM) 391.297 MB → 391.543 MB (+0.246 MB, ±0.0%)
Chat opening (CPU/JS) 0.000 % → 0.000 %
Chat opening (CPU/UI) 31.861 % → 32.005 % (+0.144 %, ±0.0%)
Show details
Name Duration
Open search router TTI Open Search Router TTI Baseline
Mean: 1262.849 ms
Stdev: 112.165 ms (8.9%)
Runs: 1014.8911549998447 1033.130371000152 1034.2674559999723 1038.3685709999409 1038.6011970001273 1038.6555590000935 1040.270712000085 1049.8660079999827 1051.1391610000283 1052.2277840001043 1059.7288819998503 1059.929281000048 1061.34269199986 1063.546672000084 1063.7202969999053 1064.98478300008 1065.1316730000544 1065.7966320000123 1067.1848560001235 1067.211059999885 1068.4521900000982 1068.8466400001198 1070.1812350000255 1076.6850590000395 1079.7737230001949 1082.618041999871 1084.466878999956 1085.2353519999888 1091.6382250001188 1092.7717289999127 1093.1456710000057 1093.4299319996499 1094.8260910001118 1094.956707000034 1097.0944429999217 1101.1928310000803 1108.1656499998644 1117.135377000086 1119.6743580000475 1125.7388919999357 1128.972616000101 1134.3635259999428 1134.6159680001438 1134.7242850000039 1137.9276129999198 1143.2134199999273 1144.0296640000306 1152.5263269999996 1153.8393560000695 1156.8129889999982 1162.2824300001375 1162.6286629999522 1167.7675789999776 1169.0345060001127 1169.3183599999174 1170.327759000007 1175.1480719998945 1176.6784680001438 1176.8732910000253 1179.2654629999306 1179.6788739999756 1180.2338869997766 1183.4340820000507 1183.5679529998451 1184.6050629999954 1184.6050629999954 1188.4045820001047 1189.3263360001147 1192.3616949999705 1193.7500010002404 1193.8959959999193 1197.9943450000137 1199.5056159999222 1201.2684740000404 1202.1530770000536 1202.1706549997907 1202.2285170000978 1203.5032149998005 1204.3172209998593 1208.571493000025 1209.737019999884 1210.0431320001371 1210.865885999985 1212.2946790000424 1215.1296389999334 1215.1592209998053 1216.9149179998785 1216.9149179998785 1220.027386000147 1221.5111090000719 1221.5111090000719 1223.5366630000062 1224.0874840000179 1224.2248539999127 1224.5785320000723 1226.0012620000634 1226.0012620000634 1226.8616539998911 1226.8616539998911 1227.825195999816 1229.8376060000155 1231.0098880000878 1231.5724700000137 1233.3828540001996 1238.917684999993 1238.917684999993 1240.6003020000644 1241.701783000026 1242.6278490000404 1243.8511969998945 1245.8883469998837 1246.198974999832 1246.198974999832 1247.053304999601 1247.633463999955 1247.633463999955 1247.6444510000292 1248.656495000003 1250.2696539999451 1250.943034000229 1252.4170329999179 1252.8315850000363 1252.8867599999066 1253.584433000069 1254.0781660000794 1257.04675400001 1257.268677999964 1257.4577639999334 1257.9828700001817 1258.424519999884 1259.715618000133 1259.715618000133 1260.4342459999025 1265.5029299999587 1267.486125000054 1267.8498539999127 1268.7207849998958 1268.7511809999123 1270.4697279999964 1271.298625000054 1278.1975919997785 1278.7569989999756 1284.0197759999428 1284.9255790000316 1284.9255790000316 1285.0405279998668 1285.9914969999809 1289.8636890000198 1289.8636890000198 1292.8251149998978 1292.9625659999438 1294.2869879999198 1294.2869879999198 1294.6935640000738 1295.724731999915 1296.1395270000212 1296.5854499998968 1297.7626149998978 1299.922120000003 1300.0333659998141 1300.148275999818 1303.518798999954 1305.8830170000438 1305.8830170000438 1306.948934999993 1307.961833999958 1308.1754159999546 1310.4950359999202 1311.3955089999363 1315.867391999811 1316.8315029998776 1318.7690029998776 1319.430338999955 1320.5688069998287 1320.759521999862 1320.759521999862 1323.794435000047 1323.962728999788 1325.5948089999147 1325.5948089999147 1326.4475920000114 1328.5728360000066 1328.7843019999564 1329.1980389999226 1333.6833500000648 1335.1673190000001 1335.2867440001573 1336.3754889999982 1336.965821000049 1338.1108399999794 1339.1920990000945 1339.5609549998771 1340.073080000002 1341.1664229999296 1342.6777759999968 1342.6777759999968 1343.3806970000733 1345.1404629999306 1345.1843669998925 1345.810060000047 1348.9239509999752 1348.9920659998897 1349.5159920000006 1351.3427740000188 1352.4085289998911 1353.3499759999104 1357.4086509998888 1357.6445730000269 1358.6451010000892 1358.6451010000892 1364.9419350000098 1364.9419350000098 1365.459799000062 1366.6416430000681 1367.1470550000668 1368.257732000202 1369.9734300000127 1373.6372889999766 1374.165934999939 1375.911419000011 1376.8684089998715 1377.3135180000681 1377.883097999962 1377.883097999962 1378.7141519999132 1378.7141519999132 1380.8770759999752 1381.1786710000597 1381.5304370000958 1381.7491059999447 1382.889608999947 1383.9450280000456 1389.7748219999485 1390.7957770000212 1390.8627119997982 1391.1805429998785 1391.2460950000677 1393.240194000071 1393.240194000071 1394.8920089998282 1394.8920089998282 1395.4639900000766 1397.3473719998728 1397.3473719998728 1397.5801999999676 1398.8802089998499 1400.952148999786 1404.226684999885 1404.8947349998634 1406.87577399984 1407.742025999818 1411.170369999949 1415.0640879999846 1415.9028330000583 1416.1147059998475 1419.1444089999422 1420.8947759999428 1423.8009450000245 1427.9809569998179 1429.249513000017 1429.249513000017 1432.925212000031 1436.6619469998404 1445.2574470001273 1448.5526529999916 1458.4552420000546 1464.5785729999188 1472.5528969999868 1478.3355320000555 1585.2411300002132

Current
Mean: 1254.611 ms
Stdev: 103.533 ms (8.3%)
Runs: 1012.0072439999785 1025.5079350001179 1033.1083579999395 1033.1628829999827 1034.461386000039 1042.157186999917 1043.660971000092 1043.958415000001 1044.5910239999648 1046.418090999825 1050.3197840000503 1051.345500000054 1051.615885999985 1057.6172700000461 1060.049682999961 1064.6845300002024 1065.0535079999827 1065.9121920000762 1069.5302329999395 1070.1052250000648 1072.6982019999996 1074.6033540000208 1079.1384290000424 1080.3765060000587 1080.4522710000165 1084.4788420000114 1085.3204759999644 1085.3647880000062 1090.9637859999202 1094.4377040001564 1096.2010910001118 1098.8333749999292 1101.6187340000179 1105.236125000054 1108.0181490001269 1108.2081299996935 1111.678875000216 1118.131510999985 1121.7113449999597 1121.7477219998837 1127.4760739998892 1130.1871750000864 1131.2276619998738 1139.2881680000573 1143.9414069999475 1147.4753419999033 1149.9661870000418 1150.9011640001554 1153.4492600001395 1153.8443609999958 1154.6029870000202 1157.1082759997807 1157.5523689999245 1159.5245779999532 1160.7831220000517 1161.7624520000536 1167.0794679999817 1169.6369229999837 1170.1651619998738 1173.0462239999324 1173.820069000125 1174.8367109999526 1176.052328000078 1176.551635999931 1178.488078000024 1179.348308000015 1183.7065429999493 1187.6889250001404 1189.1097820000723 1189.1097820000723 1189.722616000101 1191.0228689999785 1194.7337650000118 1194.7337650000118 1195.1735849999823 1195.8996989999432 1197.96667600004 1198.2998049999587 1199.7602550000884 1200.8082280000672 1201.2509360001422 1201.4853519999888 1202.0928150000982 1204.2167160001118 1205.9872230000328 1207.6416019999888 1208.5180269998964 1208.6574309999123 1208.9099540000316 1209.1493740000296 1209.9954029999208 1210.3631190001033 1210.7427169999573 1211.5663670001086 1211.771443999838 1212.8204350001179 1214.0099289999343 1217.2890629998874 1217.8725590000395 1218.6342380000278 1219.7406409999821 1220.4479990000837 1222.459106999915 1223.3499360000715 1223.6440850000363 1225.6093349999283 1225.6229660001118 1227.235922000138 1227.251057999907 1227.9589850001503 1228.1502280000132 1228.2238360000774 1229.5944429999217 1229.6409920000006 1229.6409920000006 1234.6694750001188 1235.2434090001043 1235.8249520000536 1236.0323489999864 1236.328288000077 1237.3464359999634 1238.0821130000986 1240.1486830001231 1240.5137130001094 1240.5137130001094 1241.2650970001705 1243.9110520000104 1243.9923100001179 1245.8920089998282 1246.3976249999832 1246.7040210000705 1248.636392999906 1248.6828220000025 1249.075887999963 1249.075887999963 1249.561157999793 1249.704182999907 1254.2803960000165 1254.4586999998428 1254.6885589999147 1255.3670260000508 1256.0488690000493 1256.0787770000752 1256.7587490000296 1257.471721000038 1257.6842450001277 1258.0674650000874 1260.094889999833 1260.3950610000174 1260.3950610000174 1260.43933199998 1263.3371999999508 1264.517009000061 1265.1363129999954 1266.5273850001395 1266.527425999986 1267.2242439999245 1271.0039069999475 1273.4352220001165 1274.4272470001597 1278.4581720000133 1279.0731209998485 1279.4717209998053 1281.710001999978 1282.2110190000385 1282.310873000184 1283.6521410001442 1285.782634000061 1286.6758629998658 1289.6528739999048 1289.9448249998968 1290.8234870000742 1291.1559250000864 1291.1559250000864 1291.459838999901 1291.5823169997893 1291.833415000001 1291.909832000034 1293.3024500000756 1293.7554940001573 1294.6982019999996 1296.3183599999174 1297.6186939999461 1297.9899499998428 1298.6449799998663 1298.8353680002037 1299.0571300000884 1303.2422289999668 1304.4779459999409 1307.1731370000634 1307.651531000156 1307.8863540000748 1310.131876999978 1310.4535320000723 1310.5630300000776 1310.9797370000742 1310.9797370000742 1311.4260259999428 1312.6798920000438 1314.7423910000362 1314.852906000102 1315.0992850000039 1315.2425950001925 1315.2425950001925 1315.6700450000353 1315.8889569998719 1319.0789799997583 1320.0353599998634 1320.057128999848 1322.2180180000141 1322.64115400007 1322.7679449999705 1322.9454350001179 1323.8333340000827 1323.8861500001512 1325.4474700000137 1325.8847260000184 1328.0083830000367 1331.1958819997963 1332.1631680000573 1332.2717289999127 1332.5952969999053 1332.6397299999371 1334.023193999892 1335.2950849998742 1335.5178630000446 1335.584433000069 1335.8803310000803 1336.5233970000409 1339.0172120002098 1339.8599050000776 1340.7701829997823 1341.1917329998687 1343.1972660000902 1343.5183520000428 1346.0427660001442 1346.4727380000986 1348.2047530000564 1348.5523279998451 1349.6789550001267 1353.046672000084 1353.1265870002098 1356.5601810000371 1356.959146999754 1357.0501719999593 1358.5532639999874 1358.9936939999461 1359.6824960000813 1359.9295250000432 1359.9311929999385 1360.6386319999583 1361.404908000026 1361.9348150000442 1361.9348150000442 1365.2011319999583 1365.6563320001587 1366.546956999693 1368.215618000133 1368.6474210000597 1372.1415610001422 1373.539550999878 1375.0559499999508 1375.0559499999508 1375.5510670000222 1379.0312910000794 1379.5419519999996 1381.4168710000813 1381.4548349999823 1381.4548349999823 1382.8475349999499 1384.071493000025 1389.7658290001564 1394.4158129999414 1396.400839000009 1400.148559999885 1400.674519999884 1407.6017670000438 1408.9394129998982 1412.2943939999677 1416.676433000015 1418.9824629998766 1419.334472999908 1428.4961349999066 1429.5178640000522 1433.775146999862 1434.8193369999062 1435.1633709999733 1441.152059999993 1449.5724289999343 1458.1044519999996 1484.7241219999269 1502.924682999961 1517.9611420000438
Open search router TTI (CPU) Baseline
Mean: 151.328 %
Stdev: 4.676 % (3.1%)
Runs: 139.7923282518882 144.38170371135314 144.93031913970617 145.4079201816928 145.49217427371408 145.55001866663287 145.64756681088537 146.21047920899952 146.30862262857434 146.97273016066904 147.04158014601757 147.3899994613881 147.7202048136793 148.4246867913007 148.44642743791513 148.4847717188295 148.54482646002523 148.5475295331568 148.60939634469915 148.71267075828965 149.2877648675514 149.29042035843747 149.42664189155002 149.4326934095038 149.6591163783286 150.00866675414443 150.1983132886015 150.2344424597144 150.4562748387236 150.83443084980772 151.36453943097465 151.563674345785 151.59141545200515 151.63649281308756 151.77350445154497 152.11394920433503 152.14487416373152 152.2996841660896 152.38423032209684 152.39220993705507 152.725675111123 152.88205329440146 153.71717352845354 154.07156806216517 154.27471180370307 154.2825281600126 154.51775912082445 155.42910925299475 155.75156853364118 156.38761069321882 156.4186504639529 156.73401235844634 156.95354312434625 157.2704860712559 158.9983508888429 160.03013114568446 161.48437529463283 162.78311636655897 162.93326349803678

Current
Mean: 152.867 %
Stdev: 4.831 % (3.2%)
Runs: 143.88996859131947 144.85202857635176 145.24035956378765 145.71407947556904 145.83943069085484 146.50897651928176 146.82836524411996 147.35477738427522 147.3923320325717 147.40625254804945 147.42999914148967 147.91908394061412 147.92984255385255 147.98921038946406 147.98990655567223 148.21304570937767 149.0536015575736 149.27013322588112 149.2873834216598 149.42783096782273 149.7363450707056 150.7214411447373 151.7394557645669 151.98867228490502 152.14685472736033 152.89645344927672 153.0630843005272 153.17713063094308 153.26976663338402 153.3100338035438 153.3618235569149 153.51342358770032 153.61603199101913 153.67643204223518 153.68464091612861 154.17452679753637 154.29691352949447 154.451844964937 154.56865087261554 155.07099116278545 155.36434178489046 155.38645674963567 155.53399541044487 155.6712486445005 156.08920030457537 156.36609384153346 156.43965496485777 156.48534254437988 156.60243406787228 156.70116537352368 156.99042233403503 157.68638286292105 158.72976795023638 160.18233882136784 160.7289874081186 161.31289336924203 161.40686824142193 161.85454901061848 162.04172295514033 162.47154874289635
Open search router TTI (FPS) Baseline
Mean: 60.000 FPS
Stdev: 0.000 FPS (0.0%)
Runs: 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60

Current
Mean: 60.000 FPS
Stdev: 0.000 FPS (0.0%)
Runs: 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60
Open search router TTI (RAM) Baseline
Mean: 392.729 MB
Stdev: 4.003 MB (1.0%)
Runs: 385.86328125 386.06484375 386.15859375 386.559375 386.6046875 386.6953125 387.0375 387.90625 388.1998697916667 388.2141927083333 389.2578125 389.284375 389.42890625 389.471875 389.8296875 389.9837239583333 390.590625 390.7298177083333 391.2890625 391.559375 391.6265625 391.6484375 391.8678385416667 391.8951822916667 391.9772135416667 392.1673177083333 392.17109375 392.2703125 392.521484375 392.5729166666667 392.60859375 392.6484375 392.6640625 392.78515625 392.8109375 392.82109375 393.8307291666667 394.1484375 394.396875 394.5735677083333 394.6080729166667 394.7005208333333 395.0221354166667 395.34375 395.59453125 395.9921875 396.2640625 396.3333333333333 396.3391927083333 397.0794270833333 397.0865885416667 398.671875 398.7740885416667 398.8125 398.890625 399.1484375 400.7252604166667 404.18671875

Current
Mean: 392.600 MB
Stdev: 4.240 MB (1.1%)
Runs: 382.82109375 383.5421875 383.9859375 385.678125 386.8875 386.94921875 387.5109375 387.86015625 387.9265625 388.05546875 388.325 388.425 388.53671875 389.25625 389.3515625 389.671875 389.80703125 390.2994791666667 391.072265625 391.2708333333333 391.33515625 391.66484375 391.8421875 391.91953125 392.1803385416667 392.40859375 392.4368489583333 392.5208333333333 392.771484375 392.9 393.03359375 393.4203125 393.9427083333333 394.0651041666667 394.3229166666667 394.66640625 394.6998697916667 394.818359375 394.8372395833333 395.00703125 395.01796875 395.03515625 395.2453125 395.4283854166667 395.47109375 395.73046875 395.91953125 395.96015625 396.0924479166667 396.5123697916667 396.5162760416667 397.16015625 398.5833333333333 398.701171875 398.8587239583333 399.8326822916667 399.994140625 402.697265625

Copy link
Contributor

Performance Comparison Report 📊 (6/6)

Meaningless Changes To Duration (5/5)

Show entries
Name Duration
App start time nativeLaunchEnd_To_appCreationStart 82.683 ms → 88.800 ms (+6.117 ms, +7.4%)
App start time nativeLaunch 27.317 ms → 26.610 ms (-0.706 ms, -2.6%)
App start time appCreation 76.283 ms → 74.241 ms (-2.042 ms, -2.7%)
App start time appCreationEnd_To_contentAppeared 541.508 ms → 543.050 ms (+1.542 ms, ±0.0%)
App start time runJsBundle 340.268 ms → 343.424 ms (+3.156 ms, +0.9%)
App start time regularAppStart 0.022 ms → 0.023 ms (+0.000 ms, +0.9%)
App start time (CPU) 156.545 % → 152.455 % (-4.090 %, -2.6%)
App start time (FPS) 60.000 FPS → 60.000 FPS
App start time (RAM) 361.306 MB → 361.893 MB (+0.587 MB, ±0.0%)
App start time (CPU/JS) 0.000 % → 0.000 %
App start time (CPU/UI) 30.658 % → 30.486 % (-0.172 %, -0.6%)
Open search router TTI Load Search Options 150.939 ms → 149.692 ms (-1.248 ms, -0.8%)
Open search router TTI Open Search Router TTI 1262.849 ms → 1254.611 ms (-8.238 ms, -0.7%)
Open search router TTI (CPU) 151.328 % → 152.867 % (+1.539 %, +1.0%)
Open search router TTI (FPS) 60.000 FPS → 60.000 FPS
Open search router TTI (RAM) 392.729 MB → 392.600 MB (-0.130 MB, ±0.0%)
Open search router TTI (CPU/JS) 0.000 % → 0.000 %
Open search router TTI (CPU/UI) 25.990 % → 26.317 % (+0.327 %, +1.3%)
Chat opening Chat TTI 806.966 ms → 804.540 ms (-2.427 ms, ±0.0%)
Chat opening (CPU) 162.370 % → 162.319 % (-0.051 %, ±0.0%)
Chat opening (FPS) 60.000 FPS → 60.000 FPS
Chat opening (RAM) 391.297 MB → 391.543 MB (+0.246 MB, ±0.0%)
Chat opening (CPU/JS) 0.000 % → 0.000 %
Chat opening (CPU/UI) 31.861 % → 32.005 % (+0.144 %, ±0.0%)
Show details
Name Duration
Open search router TTI (CPU/JS) Baseline
Mean: 0.000 %
Stdev: 0.000 % (NaN%)
Runs: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Current
Mean: 0.000 %
Stdev: 0.000 % (NaN%)
Runs: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Open search router TTI (CPU/UI) Baseline
Mean: 25.990 %
Stdev: 1.195 % (4.6%)
Runs: 22.9 23.2 24.5 24.6 24.6 24.7 24.8 24.8 24.8 24.8 24.8 24.9 25 25.1 25.2 25.2 25.2 25.3 25.4 25.4 25.5 25.5 25.6 25.6 25.6 25.6 25.7 25.8 25.8 25.8 25.9 25.9 26 26.1 26.1 26.2 26.3 26.3 26.5 26.5 26.6 26.6 26.7 26.8 26.8 26.9 27 27.1 27.2 27.3 27.3 27.3 27.4 27.5 27.7 28 28.2 28.3 29.2

Current
Mean: 26.317 %
Stdev: 1.404 % (5.3%)
Runs: 23.2 24 24 24.3 24.3 24.5 24.6 24.6 24.7 24.8 24.8 24.9 25 25.2 25.2 25.4 25.6 25.8 25.9 25.9 25.9 25.9 25.9 25.9 25.9 26.2 26.2 26.2 26.3 26.3 26.3 26.3 26.3 26.4 26.4 26.4 26.4 26.6 26.6 26.8 26.9 27 27.1 27.2 27.3 27.3 27.5 27.6 27.6 27.6 27.7 27.9 27.9 28.9 28.9 29 29 29.1 29.3
Chat opening Chat TTI Baseline
Mean: 806.966 ms
Stdev: 42.099 ms (5.2%)
Runs: 720.0502939997241 724.4667969997972 736.4136970001273 737.6590990000404 749.1460369997658 749.2156989998184 772.3628739998676 772.7913409997709 773.8472090000287 776.606485999655 777.9581300001591 778.4773770002648 779.0313719999976 780.6063230000436 783.250652000308 783.7260329998098 785.6546629997902 787.706462000031 792.347534999717 798.9925949997269 799.0714920000173 799.1866859998554 801.1604419997893 802.8255210001953 803.7510990002193 805.0973720001057 805.2903649997897 807.7304279999807 818.7075609997846 821.1333009996451 823.9836019999348 825.9665529998019 829.5504560000263 834.6203620000742 837.2922370000742 839.7174080000259 845.5236410000362 851.6052650003694 851.7504879999906 856.8293059999123 864.0261639999226 867.4166260003112 868.6313080000691 870.2532150000334 871.5578209999949 874.2108160001226 890.216878999956

Current
Mean: 804.540 ms
Stdev: 36.955 ms (4.6%)
Runs: 714.9112959997728 738.9624429997057 753.9375819996931 758.1778979999945 760.0774739999324 761.4466969999485 763.0674230000004 764.7729090000503 765.0462239999324 765.7237960002385 766.856811999809 769.3236499996856 780.0066729998216 780.3391109998338 780.8615729999729 780.9774989997968 784.3819179995917 789.3045249995776 796.4945469996892 797.629192000255 797.9633790003136 798.5681159999222 801.9230959997512 803.2691660001874 803.8590090000071 804.9805100001395 805.6274410001934 809.05102599971 809.2478439998813 810.8339439998381 816.8133139996789 828.2106119999662 828.7423509997316 829.1222330001183 833.038290000055 834.6888839998282 841.8977870000526 841.996662999969 842.444010999985 844.0367030003108 844.6173099996522 848.0450440002605 850.140625 854.8913579997607 858.8835450001061 864.4889739998616 867.7216810001992 870.5065520000644
Chat opening (CPU) Baseline
Mean: 162.370 %
Stdev: 4.933 % (3.0%)
Runs: 151.08051392225926 153.6575424313883 154.5534587414311 155.27760416342431 155.58308783021943 155.59446732422734 156.61983162910465 156.72833809050533 156.73604218502606 157.17776210995027 157.40264094153252 157.52983093795174 157.5930794409825 158.04138284090723 158.2197544700259 158.5358641701309 158.606350137777 159.1011094805247 159.19806910487745 159.2787817875383 159.4786871482203 159.7909954110677 160.04376555332323 160.34816602391427 161.01649351431772 161.2144115663701 161.33660515897822 162.28810193511458 162.34243125862164 162.77392029754947 162.84261223150565 163.0543423408068 163.13199980662174 163.18414856164398 163.21591964278008 163.7910856792492 164.27832604378565 164.34313705015674 164.78414736000173 165.00415667305063 165.1107180013114 165.59674717783756 165.6904794239847 165.82048992310487 165.91644782585206 166.21096064258867 166.54583956635943 166.57989902649035 166.62940311254832 167.060741687132 167.49642039801748 168.31471123190423 168.39970417730285 168.41850319068408 168.8950317797951 169.52188646114683 169.71177644710582 169.9254855320774 170.5139135139159 175.04178530913913

Current
Mean: 162.319 %
Stdev: 5.342 % (3.3%)
Runs: 153.37582819385446 153.59313296536362 153.92253733819413 154.2506030859114 154.36085788946292 155.46822093091856 155.5536355686242 155.5637723096923 156.1219693748348 156.5175743821691 156.6065129925506 156.685841010333 157.30577384784195 157.4031827731202 157.60737252536947 158.07979308421218 158.26966687561847 158.36083798518467 158.50453979467375 159.48465701972586 159.52189373498928 159.94067818778365 160.27901496447316 160.3494616356593 160.4651580187188 160.87953813488562 160.97553900426624 161.19259926365734 161.5966383645659 161.895447883441 161.98499495299876 162.12001508560422 163.07057082644573 163.2143666527936 163.73705179282865 163.87958303878835 164.14384432241295 164.24515005372564 164.56254126739034 164.5653874702975 165.08565220095133 165.41205402897796 165.51272393786937 165.6813161883163 166.82435073032647 167.09109775858664 167.26345003516704 167.37795658164043 167.90644164504553 167.97279718549785 168.02645970756186 168.40518413989847 169.1635275273315 169.54019188276408 169.7481513310718 169.80387050930514 170.00476334643307 171.23934511892537 171.26823247273197 176.14207839301486
Chat opening (FPS) Baseline
Mean: 60.000 FPS
Stdev: 0.000 FPS (0.0%)
Runs: 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60

Current
Mean: 60.000 FPS
Stdev: 0.000 FPS (0.0%)
Runs: 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60
Chat opening (RAM) Baseline
Mean: 391.297 MB
Stdev: 5.470 MB (1.4%)
Runs: 377.87890625 380.08671875 380.61640625 381.640625 383.5380859375 384.49140625 384.6337890625 384.7265625 385.2197265625 385.834375 386.205078125 386.53359375 386.6904296875 386.87421875 387.04375 387.2724609375 387.48359375 387.92421875 388.2359375 388.42734375 388.67890625 389.053125 389.0578125 389.2373046875 390.240234375 391.2607421875 391.31171875 392.0828125 392.11796875 392.12109375 392.4015625 392.66015625 392.734375 392.75703125 392.83828125 393 393.5609375 393.72578125 393.81484375 394.0953125 394.38515625 394.66171875 395.443359375 395.540625 395.634765625 395.74375 396.2625 396.346875 396.3502604166667 396.4234375 397.46796875 397.6109375 397.68203125 397.75 398.4828125 399.1171875 400.9479166666667 400.97890625 401.5729166666667

Current
Mean: 391.543 MB
Stdev: 5.413 MB (1.4%)
Runs: 379.14453125 380.49296875 380.6953125 381.5615234375 381.6025390625 382.73515625 383.1025390625 383.171875 383.8603515625 384.78671875 386.6142578125 386.94921875 386.955078125 388.0068359375 388.41015625 388.565625 389.30703125 389.31484375 389.31953125 389.36328125 390.91875 391.696875 391.8296875 391.99453125 392.03046875 392.04921875 392.28671875 392.37421875 392.7796875 392.8015625 393.12421875 393.38046875 393.63359375 393.95625 393.96015625 393.978125 394.18203125 394.19921875 394.26484375 394.78984375 394.98359375 395.1046875 395.25546875 395.27734375 395.340625 395.525 395.7703125 395.8 396.015625 396.10625 397.18359375 397.290625 397.5859375 397.7395833333333 399.0403645833333 399.17734375 399.212890625 402.9016927083333
Chat opening (CPU/JS) Baseline
Mean: 0.000 %
Stdev: 0.000 % (NaN%)
Runs: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Current
Mean: 0.000 %
Stdev: 0.000 % (NaN%)
Runs: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Chat opening (CPU/UI) Baseline
Mean: 31.861 %
Stdev: 1.949 % (6.1%)
Runs: 27.8 27.9 28.3 28.5 29 29 29.3 29.3 29.4 29.6 29.7 29.9 30.2 30.3 30.3 30.4 30.5 30.7 30.9 31 31.1 31.1 31.3 31.4 31.5 31.5 31.6 31.8 32.2 32.3 32.3 32.3 32.4 32.6 32.8 32.8 32.8 32.9 33 33 33 33.2 33.3 33.3 33.3 33.5 33.6 33.6 33.6 33.9 33.9 33.9 34 34.2 34.3 34.3 34.7 35.2 36.3

Current
Mean: 32.005 %
Stdev: 1.856 % (5.8%)
Runs: 27.5 28 28.4 28.5 29.4 29.5 29.6 29.9 30 30.1 30.3 30.4 30.4 30.4 30.7 31 31.1 31.2 31.4 31.5 31.5 31.6 31.7 31.8 31.9 31.9 31.9 32 32.2 32.2 32.4 32.7 32.7 32.7 32.9 33 33.1 33.2 33.2 33.2 33.2 33.2 33.3 33.3 33.3 33.4 33.5 33.5 33.5 33.6 33.8 33.9 34.1 34.4 35.1 35.6 36.5

Copy link
Contributor

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

Copy link
Contributor

🚀 Deployed to staging by https://github.com/roryabraham in version: 9.1.33-0 🚀

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

Copy link
Contributor

🚀 Deployed to staging by https://github.com/roryabraham in version: 9.1.35-1 🚀

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

Copy link
Contributor

🚀 Deployed to staging by https://github.com/roryabraham in version: 9.1.36-3 🚀

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

Copy link
Contributor

🚀 Deployed to staging by https://github.com/roryabraham in version: 9.1.37-1 🚀

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

Copy link
Contributor

🚀 Deployed to production by https://github.com/thienlnam in version: 9.1.37-3 🚀

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

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