[pull] main from MetaMask:main#405
Merged
Merged
Conversation
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** After a thorough profiling investigation, one of the issues I found is that we are making O(n) API calls to the `bulk-scan` endpoint when NFT auto-detection was being triggered, I have modified the code so that we make 1 single API call per 250 urls. <img width="993" height="924" alt="image" src="https://github.com/user-attachments/assets/c6fccc10-9571-4436-af9a-1e9425c0054e" /> Core changes: MetaMask/core#7411 <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Changelog** <!-- If this PR is not End-User-Facing and should not show up in the CHANGELOG, you can choose to either: 1. Write `CHANGELOG entry: null` 2. Label with `no-changelog` If this PR is End-User-Facing, please write a short User-Facing description in the past tense like: `CHANGELOG entry: Added a new tab for users to see their NFTs` `CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker` (This helps the Release Engineer do their job more quickly and accurately) --> CHANGELOG entry: reduced number of calls to bulk-scan for NFT detection ## **Related issues** Fixes: https://consensyssoftware.atlassian.net/browse/ASSETS-2068 ## **Manual testing steps** ```gherkin Feature: my feature name Scenario: user [verb for user action] Given [describe expected initial app state] When user [verb for user action] Then [describe expected outcome] ``` ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** https://github.com/user-attachments/assets/d0232dec-b144-4f27-b085-0de417a9af20 <img width="734" height="797" alt="image" src="https://github.com/user-attachments/assets/c6fccc10-9571-4436-af9a-1e9425c0054e" /> <!-- [screenshots/recordings] --> ### **After** https://github.com/user-attachments/assets/053bca9b-9ee8-439b-bec7-4381fc6bc0b3 <img width="734" height="797" alt="image" src="https://github.com/user-attachments/assets/40bc3d12-71d1-4c52-96e7-5502459b279c" /> <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Switch NFT detection controller init from `addNft` to bulk `addNfts` and upgrade `@metamask/assets-controllers` to ^94.0.0. > > - **Engine**: > - Update `app/core/Engine/controllers/nft-detection-controller-init.ts` to bind `addNfts` instead of `addNft` when constructing `NftDetectionController`. > - Adjust tests in `app/core/Engine/controllers/nft-detection-controller-init.test.ts` to expect `addNfts`. > - **Dependencies**: > - Bump `@metamask/assets-controllers` to `^94.0.0` (with corresponding lockfile updates). > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 8f4a004. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->
## **Description**
The DeFi detail page (DeFiProtocolPositionDetails) was transitioning
into the viewport like a bottom sheet (sliding up from bottom) due to
the parent Stack.Navigator using mode={'modal'}.
This PR changes the transition to slide in from right to left (standard
push navigation) by adding a custom cardStyleInterpolator with
horizontal translation, matching the pattern used by other screens like
TrendingTokensFullView, ExploreSearchScreen, and PerpsScreenStack.
## **Changelog**
<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`
If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`
(This helps the Release Engineer do their job more quickly and
accurately)
-->
CHANGELOG entry: Changed DeFi protocol detail page to slide in from
right instead of from bottom
## **Related issues**
Fixes: https://consensyssoftware.atlassian.net/browse/MDP-263
## **Manual testing steps**
```gherkin
Feature: DeFi Protocol Position Details Navigation
Scenario: user opens DeFi protocol position details
Given user is on the Wallet view with DeFi positions visible
When user taps on a DeFi protocol position
Then the DeFi Protocol Position Details screen slides in from right to left
And user can swipe from left edge to go back (gesture navigation)
```
## **Screenshots/Recordings**
<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->
### **Before**
https://github.com/user-attachments/assets/f1437617-fac2-4fbb-aa97-6c9a18a03272
<!-- [screenshots/recordings] -->
### **After**
https://github.com/user-attachments/assets/2521f279-8fd3-4bd1-a49a-c3270e511a70
<!-- [screenshots/recordings] -->
## **Pre-merge author checklist**
- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.
## **Pre-merge reviewer checklist**
- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> Switches `DeFiProtocolPositionDetails` to a right-to-left slide
transition via custom `cardStyleInterpolator`, updating snapshots
accordingly.
>
> - **Navigation**
> - `app/components/Nav/Main/MainNavigator.js`
> - `DeFiProtocolPositionDetails`: enable `animationEnabled` and add
horizontal `cardStyleInterpolator` (slides in from right), with
`headerShown: true`.
> - **Tests**
> - `app/components/Nav/Main/__snapshots__/MainNavigator.test.tsx.snap`:
update snapshot to include new screen options.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
5a7a46f. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->
## **Description**
The NFT details pages (NftDetails and NftDetailsFullImage) were
transitioning into the viewport like a bottom sheet (sliding up from
bottom) due to the parent Stack.Navigator using mode={'modal'}.
This PR changes the transition to slide in from right to left (standard
push navigation) by adding a custom cardStyleInterpolator with
horizontal translation, matching the pattern used by other screens like
TrendingTokensFullView, ExploreSearchScreen, and PerpsScreenStack.
## **Changelog**
<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`
If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`
(This helps the Release Engineer do their job more quickly and
accurately)
-->
CHANGELOG entry: Updated NFT details pages to slide in from right
instead of from bottom
## **Related issues**
Fixes: https://consensyssoftware.atlassian.net/browse/MDP-271
## **Manual testing steps**
```gherkin
Feature: NFT Details Navigation
Scenario: user opens NFT details
Given user is on the Wallet view with NFTs visible
When user taps on an NFT
Then the NFT Details screen slides in from right to left
And user can swipe from left edge to go back (gesture navigation)
Scenario: user opens NFT full image
Given user is viewing NFT details
When user taps on the NFT image to view full screen
Then the NFT Full Image screen slides in from right to left
And user can swipe from left edge to go back (gesture navigation)
```
## **Screenshots/Recordings**
<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->
### **Before**
https://github.com/user-attachments/assets/80629490-2cff-4080-8feb-35d2929dfafa
### **After**
https://github.com/user-attachments/assets/8a635fac-4e98-42fe-b251-5b2880072c6b
## **Pre-merge author checklist**
- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.
## **Pre-merge reviewer checklist**
- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> Switch NFT details screens to a right-to-left push animation with a
custom cardStyleInterpolator.
>
> - **Navigation (MainNavigator.js)**:
> - Add `options` to `NftDetails` and `NftDetailsFullImage` to enable
horizontal slide transition (`animationEnabled: true` + custom
`cardStyleInterpolator`).
> - **Tests**:
> - Update snapshot to reflect new `options` on `NftDetails` and
`NftDetailsFullImage`.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
d47ecf9. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** When selecting "Deposit" from the Trade Menu, the Deposit page was sliding in from the bottom (default modal behavior). Per design requirements, it should slide in from the right, consistent with other navigation flows. Applied the same cardStyleInterpolator pattern already used by: - Settings (Routes.SETTINGS_VIEW) - TrendingTokensFullView - ExploreSearchScreen - SitesFullView - Perps ## **Changelog** <!-- If this PR is not End-User-Facing and should not show up in the CHANGELOG, you can choose to either: 1. Write `CHANGELOG entry: null` 2. Label with `no-changelog` If this PR is End-User-Facing, please write a short User-Facing description in the past tense like: `CHANGELOG entry: Added a new tab for users to see their NFTs` `CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker` (This helps the Release Engineer do their job more quickly and accurately) --> CHANGELOG entry: Updated Deposit page transition to slide in from the right instead of bottom ## **Related issues** Fixes: https://consensyssoftware.atlassian.net/browse/MDP-235 ## **Manual testing steps** ```gherkin Feature: Deposit page navigation transition Scenario: user opens Deposit page from Trade Menu Given the user is on the Wallet home screen And the user has Deposit enabled When user taps on the Trade/Fund action button And user selects "Deposit" from the menu Then the Deposit page slides in from the right side of the screen And user can swipe from left edge to go back ``` ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** https://github.com/user-attachments/assets/fba1e102-92cc-4cf5-8bb5-d94bedbb48a4 <!-- [screenshots/recordings] --> ### **After** https://github.com/user-attachments/assets/d18e1e5b-5b89-451d-87d5-b18446180cc9 <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Configures `StakeScreens` to hide the header and use a right-to-left slide transition; updates snapshot accordingly. > > - **Navigation**: > - **`MainNavigator.js`**: Add custom options to `Stack.Screen` for `StakeScreens`: > - `headerShown: false` > - Enable right-to-left slide via `animationEnabled: true` and custom `cardStyleInterpolator`. > - **Tests**: > - Update snapshot `MainNavigator.test.tsx.snap` to reflect new `StakeScreens` options. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit f185550. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->
## **Description**
Fix perps performance e2e tests. Tasks done:
- Updated tests according UI changes
- Remove dead code
- Unified numeric keyboard component for different flows
- Added a patch in appwright to set geoLocation in BrowserStack and
avoid perps blocks -> from main finally
<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->
## **Changelog**
<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`
If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`
(This helps the Release Engineer do their job more quickly and
accurately)
-->
CHANGELOG entry:
## **Related issues**
Fixes:
## **Manual testing steps**
```gherkin
Feature: my feature name
Scenario: user [verb for user action]
Given [describe expected initial app state]
When user [verb for user action]
Then [describe expected outcome]
```
## **Screenshots/Recordings**
<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->
### **Before**
<!-- [screenshots/recordings] -->
### **After**
<!-- [screenshots/recordings] -->
## **Pre-merge author checklist**
- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.
## **Pre-merge reviewer checklist**
- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> Updates perps performance tests to new UI, adds open/close position
flow, refactors numeric input via shared AmountScreen, and sets
BrowserStack geoLocation to FR.
>
> - **Tests (performance)**:
> - Add `appwright/tests/performance/login/perps-add-funds.spec.js` (add
funds flow + quote timings).
> - Add
`appwright/tests/performance/login/perps-position-management.spec.js`
(select market, set leverage, place order, close position with retry,
per-device account selection).
> - Remove outdated `perps-onboarding.spec.js`.
> - **Screen Objects (Perps)**:
> - New: `PerpsMarketDetailsView`, `PerpsOrderView` (leverage, keypad,
place order), `PerpsPositionDetailsView` (close with retry, state
check), `PerpsPositionsView`, `PerpsClosePositionView`.
> - Update `PerpsDepositScreen`: new getters (`backButton`,
`addFundsButton`, `totalText`), visibility checks, `tapBackButton`,
`isAddFundsVisible`, `isTotalVisible`.
> - Update `PerpsMarketListView`: header expect, `selectMarket(symbol)`.
> - Update `PerpsTabView`: new tab id, add `startTrading` action, expect
usage.
> - **Utilities/Infra**:
> - Add `selectAccountDevice` in `Flows.js` (map device to account);
adjust flows usage.
> - Remove `TimerHelper.withTimer` helper.
> - Set BrowserStack `geoLocation: 'FR'`.
> - `BridgeScreen.enterSourceTokenAmount` now delegates to
`AmountScreen`.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
eb2abeb. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…B) (#23869) ## **Description** This PR optimizes Android E2E builds to prevent "Gradle Daemon disappeared unexpectedly" crashes on the LG runner (16 vCPUs, 48GB RAM). ### Root Cause Analysis The "Daemon disappeared" symptom is consistent with **process termination under memory pressure** (e.g., OS OOM kill). On **lg (48GB)**, the previous GitHub Actions Gradle config (`-Xmx16g`, `workers.max=6`, `daemon=true`) could overlap with Node/Metro memory usage and native compilation spikes. ### Solution: Optimized Gradle Memory Settings Following [Gradle 8.10.2 Performance Best Practices](https://docs.gradle.org/8.10.2/userguide/performance.html), we tuned `gradle.properties.github` for the 48GB runner. #### Improved Gradle Logging for E2E - E2E builds now run Gradle with **`--stacktrace --info`** via `scripts/build.sh` to provide more actionable logs when the build fails. - Android CI uses **JDK 17** via `setup-e2e-env` defaults: [setup-e2e-env action](https://github.com/MetaMask/github-tools/blob/v1/.github/actions/setup-e2e-env/action.yml) #### JVM Memory Changes | Setting | Before | After | Reason | |---------|--------|-------|--------| | **Heap (`-Xmx`)** | 16GB | **12GB** | Leave room for Node.js/Metro | | **Initial Heap (`-Xms`)** | (none) | **4GB** | Set JVM initial heap to reduce early heap resizing: [Java launcher docs](https://docs.oracle.com/en/java/javase/17/docs/specs/man/java.html) | | **MaxGCPauseMillis** | (none) | **500ms** | Tune G1 pause-time goal for CI throughput: [G1 GC tuning guide](https://docs.oracle.com/en/java/javase/17/gctuning/garbage-first-g1-garbage-collector1.html) | | **ExitOnOutOfMemoryError** | (none) | **enabled** | Fail fast on JVM OOM: [Java launcher docs](https://docs.oracle.com/en/java/javase/17/docs/specs/man/java.html) | | **file.encoding** | (none) | **UTF-8** | Pin JVM default charset (JDK 17 default can depend on OS/locale): [Charset.defaultCharset()](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/charset/Charset.html#defaultCharset()) | | **OptimizeStringConcat** | enabled | **removed** | Remove non-standard `-XX` tuning flag from baseline config (prefer defaults): [Java launcher docs](https://docs.oracle.com/en/java/javase/17/docs/specs/man/java.html) | #### Gradle Settings Changes | Setting | Before | After | Reason | |---------|--------|-------|--------| | **Workers** | 6 | **2** | Prevent memory contention | | **Daemon** | true | **false** | Disable persistent daemon between CI builds: [Gradle Daemon](https://docs.gradle.org/8.10.2/userguide/gradle_daemon.html#sec:disabling_the_daemon) | | **configureondemand** | true | **removed** | Not recommended for modern Gradle + Android builds: [Gradle performance guide](https://docs.gradle.org/8.10.2/userguide/performance.html); [Android/AGP compatibility](https://stackoverflow.com/questions/49990933/configuration-on-demand-is-not-supported-by-the-current-version-of-the-android-g) | #### Unchanged Settings (kept as-is) | Setting | Value | Why Kept | |---------|-------|----------| | `parallel` | true | [Recommended for multi-project builds](https://docs.gradle.org/8.10.2/userguide/performance.html#parallel_execution) | | `caching` | true | [Recommended build cache usage](https://docs.gradle.org/8.10.2/userguide/build_cache.html) | | `vfs.watch` | false | Already disabled in baseline config; we keep it disabled for CI | | `MaxMetaspaceSize` | 1g | Kept from baseline config | | `UseG1GC` | enabled | Kept from baseline config | | `G1HeapRegionSize` | 16m | Kept from baseline config | | `UseStringDeduplication` | enabled | Kept from baseline config | ### Memory Budget (48GB Runner) > Note: rough budgeting (actual usage varies by task and input changes) ``` ┌─────────────────────────────────────────────────────────┐ │ Component │ Allocation │ ├─────────────────────────┼───────────────────────────────┤ │ Gradle Heap │ 12GB │ │ Gradle Metaspace │ 1GB │ │ Node.js (Metro) │ 8GB (--max-old-space-size) │ │ OS + System + native │ remainder │ └─────────────────────────┴───────────────────────────────┘ ``` ### Additional Optimizations - **Skip AAB bundle for E2E** - E2E tests only use APK files. - **Removed AAB references** from the E2E build workflow. - **Runner moved from xl → lg** for this workflow after tuning: lg (48GB) is sufficient. ### Documentation References **Gradle 8.10.2:** - [Performance Guide](https://docs.gradle.org/8.10.2/userguide/performance.html) - [Gradle Daemon](https://docs.gradle.org/8.10.2/userguide/gradle_daemon.html) - [Build Cache](https://docs.gradle.org/8.10.2/userguide/build_cache.html) **Java 17:** - [Java launcher docs (heap, -X/-XX, OOM behavior)](https://docs.oracle.com/en/java/javase/17/docs/specs/man/java.html) - [Charset.defaultCharset()](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/charset/Charset.html#defaultCharset()) - [G1 GC tuning guide](https://docs.oracle.com/en/java/javase/17/gctuning/garbage-first-g1-garbage-collector1.html) ### Official Runner Specs ([source](https://cirrus-runners.app/setup/#__tabbed_3_2)) | Runner | vCPUs | RAM | Disk | |--------|-------|-----|------| | **lg** | 16 | 48 GB | 200 GB | | xl | 32 | 96 GB | 400 GB | ## **Changelog** CHANGELOG entry: null ## **Related issues** Fixes: [INFRA-3174](https://consensyssoftware.atlassian.net/browse/INFRA-3174) ## **Manual testing steps** ```gherkin Feature: Android E2E Build Optimization Scenario: Build completes without daemon disappearance Given the PR uses tuned Gradle memory settings And Gradle runs with --stacktrace --info for E2E When the Android E2E build workflow runs Then the build completes without the "Daemon disappeared" failure And APK artifacts are uploaded successfully ``` ## **Screenshots/Recordings** ### **Before** Build failing with: ``` Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed) ``` ### **After** Build results will be visible in PR checks after workflow runs. ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I've included tests if applicable - [x] I've documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I've applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [INFRA-3174]: https://consensyssoftware.atlassian.net/browse/INFRA-3174?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )