Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
132 commits
Select commit Hold shift + click to select a range
a765361
Configure EAS updates
weitingsun Jul 21, 2025
43b89ee
add channel name to app.config
weitingsun Jul 21, 2025
0a54c92
updating android config
weitingsun Jul 21, 2025
5b4b0d0
enable hermes
weitingsun Jul 22, 2025
c23c413
update podfile.lock
weitingsun Jul 22, 2025
0cf4a4b
attempt to fix iOS updates
weitingsun Jul 22, 2025
19ccd6a
fix iOS build error
weitingsun Jul 23, 2025
7426647
add EXUpdatesChannel
weitingsun Jul 23, 2025
3326e4b
add EAS config
weitingsun Jul 24, 2025
7d025ff
add iOS bundle ID
weitingsun Jul 24, 2025
df0ffcc
test ios
weitingsun Jul 24, 2025
28df656
test iOS
weitingsun Jul 24, 2025
8caa3a9
test iOS by adding expo.plist
weitingsun Jul 24, 2025
a222639
add bottomsheet as eas update modal
weitingsun Oct 16, 2025
26ac1b0
revert wallet view
weitingsun Oct 16, 2025
f06ad0c
change version for rebuild
weitingsun Oct 16, 2025
5bbffbd
[skip ci] Bump version number to 2735
metamaskbot Oct 16, 2025
d91051e
fix typo
weitingsun Oct 16, 2025
0c473d1
use appVersion
weitingsun Oct 16, 2025
6391288
[skip ci] Bump version number to 2736
metamaskbot Oct 16, 2025
e2e0c50
update runtimeVersion to 7.58.99
weitingsun Oct 17, 2025
2cfd651
[skip ci] Bump version number to 2738
metamaskbot Oct 17, 2025
cb9f683
set runtimeVersion to 7.58.99
weitingsun Oct 17, 2025
0d87aea
[skip ci] Bump version number to 2748
metamaskbot Oct 17, 2025
cfb9d3d
[skip ci] Bump version number to 2750
metamaskbot Oct 17, 2025
b70dc70
revert runtimeVersion to appVersion
weitingsun Oct 17, 2025
3f80aa9
[skip ci] Bump version number to 2754
metamaskbot Oct 18, 2025
cd98589
override non production env to preview channel
weitingsun Oct 21, 2025
56ca842
[skip ci] Bump version number to 2767
metamaskbot Oct 21, 2025
53b0ec5
[skip ci] Bump version number to 2776
metamaskbot Oct 21, 2025
454dc40
[skip ci] Bump version number to 2777
metamaskbot Oct 21, 2025
8eaafbc
change runtimeversion to 7.58.99
weitingsun Oct 21, 2025
51df113
log active channel
weitingsun Oct 21, 2025
dd285c4
[skip ci] Bump version number to 2778
metamaskbot Oct 21, 2025
2ffc0bc
create a build script to update the eas update channel based on env
weitingsun Oct 21, 2025
8383714
[skip ci] Bump version number to 2780
metamaskbot Oct 21, 2025
074a550
use build script to inject runtimeversion and channel
weitingsun Oct 22, 2025
5ad344d
[skip ci] Bump version number to 2788
metamaskbot Oct 22, 2025
5c653d9
[skip ci] Bump version number to 2790
metamaskbot Oct 22, 2025
cc352d7
Merge branch 'main' into wsun/eas-updates
weitingsun Oct 23, 2025
7e726c4
remove bottomsheet
weitingsun Oct 23, 2025
dd5fb48
Reset SampleFeature README files to match main
weitingsun Oct 23, 2025
cad3b35
[skip ci] Bump version number to 2792
metamaskbot Oct 23, 2025
e85e13a
update version to 7.59.99
weitingsun Oct 23, 2025
19ad940
[skip ci] Bump version number to 2793
metamaskbot Oct 23, 2025
93c6eb9
replace updateRuntimeVersion with runtimeVersion
weitingsun Oct 23, 2025
f315f65
[skip ci] Bump version number to 2794
metamaskbot Oct 23, 2025
b166ed2
delay checking eas updates to avoid race condition
weitingsun Oct 23, 2025
ec319a1
[skip ci] Bump version number to 2807
metamaskbot Oct 23, 2025
d15dfd6
fix: revert formatting changes in Xcode project, keep only EAS update…
weitingsun Oct 23, 2025
e91ad31
add launch wait time in info.plist
weitingsun Oct 23, 2025
4987594
[skip ci] Bump version number to 2808
metamaskbot Oct 23, 2025
047355c
add fallback for accountsByChainId
weitingsun Oct 23, 2025
28f11ce
[skip ci] Bump version number to 2809
metamaskbot Oct 23, 2025
9387e5d
increase wait time to 10 seconds
weitingsun Oct 23, 2025
e284cea
[skip ci] Bump version number to 2811
metamaskbot Oct 23, 2025
a00a2ef
[skip ci] Bump version number to 2812
metamaskbot Oct 23, 2025
8df76d4
attempt to fix animation issue
weitingsun Oct 23, 2025
b32be84
[skip ci] Bump version number to 2813
metamaskbot Oct 23, 2025
366cc67
not checking eas updates
weitingsun Oct 23, 2025
d1275e2
[skip ci] Bump version number to 2814
metamaskbot Oct 23, 2025
35658ab
disable eas updates for now
weitingsun Oct 24, 2025
9e0ddef
[skip ci] Bump version number to 2815
metamaskbot Oct 24, 2025
fbfcd55
inject update enabled flag based on env
weitingsun Oct 24, 2025
5d0a8a3
[skip ci] Bump version number to 2827
metamaskbot Oct 24, 2025
39e643b
fix onboardingAnimation
weitingsun Oct 24, 2025
1fad168
[skip ci] Bump version number to 2831
metamaskbot Oct 24, 2025
091f170
remove extra configs from info.plist
weitingsun Oct 24, 2025
df692c7
remove extra configs from AndroidManifest.xml
weitingsun Oct 24, 2025
a58388e
[skip ci] Bump version number to 2832
metamaskbot Oct 24, 2025
2e40981
[skip ci] Bump version number to 2834
metamaskbot Oct 24, 2025
cebdf7e
fix accountsController bug
weitingsun Oct 24, 2025
0f0ad57
fix expo disabled flag on Android
weitingsun Oct 24, 2025
4efd021
[skip ci] Bump version number to 2835
metamaskbot Oct 24, 2025
6c75b48
[skip ci] Bump version number to 2836
metamaskbot Oct 24, 2025
9050bfb
attempt to fix animation
weitingsun Oct 24, 2025
9e93add
[skip ci] Bump version number to 2837
metamaskbot Oct 24, 2025
4ee40e1
another attempt to fix onboarding animation
weitingsun Oct 25, 2025
f541180
[skip ci] Bump version number to 2838
metamaskbot Oct 25, 2025
53e864f
add expo-asset
weitingsun Oct 25, 2025
b1a1ed6
[skip ci] Bump version number to 2840
metamaskbot Oct 25, 2025
e2b550e
[skip ci] Bump version number to 2841
metamaskbot Oct 25, 2025
7984a85
remove expo asset
weitingsun Oct 25, 2025
c30e93f
[skip ci] Bump version number to 2842
metamaskbot Oct 25, 2025
bcdf9a7
delay animation
weitingsun Oct 25, 2025
82c03c6
[skip ci] Bump version number to 2844
metamaskbot Oct 25, 2025
a4c0431
switch to require
weitingsun Oct 25, 2025
77e60d5
[skip ci] Bump version number to 2845
metamaskbot Oct 25, 2025
c669ce8
revert OnboardingAnimation and refactor update-expo-channel
weitingsun Oct 27, 2025
5a2f1a5
Merge branch 'main' into wsun/eas-updates
weitingsun Oct 27, 2025
731a6f0
revert merge changes
weitingsun Oct 27, 2025
c6e4b41
revert formatting
weitingsun Oct 27, 2025
fa64cd0
revert AppDelegate.m
weitingsun Oct 27, 2025
f7e6553
add expo-asset
weitingsun Oct 27, 2025
d3c0a89
fix unit tests
weitingsun Oct 28, 2025
f311c91
fix snapshot
weitingsun Oct 28, 2025
5703711
disable eas updates
weitingsun Oct 28, 2025
07c2df5
address PR comments
weitingsun Oct 28, 2025
2fa8010
update version number for building
weitingsun Oct 28, 2025
19bf8d5
Merge remote-tracking branch 'origin/main' into wsun/eas-updates
weitingsun Oct 28, 2025
6dbcf52
[skip ci] Bump version number to 2866
metamaskbot Oct 28, 2025
5a10668
[skip ci] Bump version number to 2867
metamaskbot Oct 28, 2025
8e7933b
fix tests
weitingsun Oct 28, 2025
d282fb5
Merge branch 'wsun/eas-updates' of github.com:MetaMask/metamask-mobil…
weitingsun Oct 28, 2025
7b45e32
revert build number
weitingsun Oct 28, 2025
91661b3
Merge branch 'main' into wsun/eas-updates
weitingsun Oct 29, 2025
0108ed1
Merge branch 'main' into wsun/eas-updates
weitingsun Oct 29, 2025
3fee800
remove inserting info.plist
weitingsun Oct 29, 2025
28f28ca
remove info.plist reference in update-expo-channel build script
weitingsun Oct 29, 2025
0132b53
remove .eslintcache
weitingsun Oct 29, 2025
ce91fea
remove eas.json
weitingsun Oct 30, 2025
01ba64c
Merge branch 'main' into wsun/eas-updates
weitingsun Nov 1, 2025
769bab4
remove EAS updates production configuration
weitingsun Nov 1, 2025
84d72f6
move constants to ota.config.js
weitingsun Nov 4, 2025
146403b
fix lint
weitingsun Nov 4, 2025
4458df7
[skip ci] Bump version number to 2938
metamaskbot Nov 4, 2025
37894ba
refactor update-expo-channel.js
weitingsun Nov 4, 2025
cfd084b
Merge branch 'wsun/eas-updates' of github.com:MetaMask/metamask-mobil…
weitingsun Nov 4, 2025
3c7fbf8
Merge branch 'main' into wsun/eas-updates
weitingsun Nov 4, 2025
9481e50
[skip ci] Bump version number to 2942
metamaskbot Nov 4, 2025
0a065e2
revert build number
weitingsun Nov 4, 2025
73fd89f
move PROJECT_ID to .env
weitingsun Nov 4, 2025
258cb04
Merge branch 'main' into wsun/eas-updates
weitingsun Nov 5, 2025
fd434f5
Merge branch 'main' into wsun/eas-updates
weitingsun Nov 5, 2025
a5b4e41
Merge branch 'main' into wsun/eas-updates
weitingsun Nov 5, 2025
0f1a15e
skip dev
weitingsun Nov 11, 2025
730015f
Merge branch 'main' into wsun/eas-updates
weitingsun Nov 11, 2025
c684124
update version number
weitingsun Nov 11, 2025
4fa8c73
[skip ci] Bump version number to 2996
metamaskbot Nov 11, 2025
4a3ec0c
[skip ci] Bump version number to 2997
metamaskbot Nov 11, 2025
a95eeae
Merge branch 'main' into wsun/eas-updates
weitingsun Nov 11, 2025
93910c6
Merge branch 'main' into wsun/eas-updates
weitingsun Nov 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ app/core/Engine/types.ts @MetaMask/mobile-pla
app/core/Engine/controllers/remote-feature-flag-controller/ @MetaMask/mobile-platform
app/core/DeeplinkManager @MetaMask/mobile-platform
scripts/build.sh @MetaMask/mobile-platform
scripts/update-expo-channel.js @MetaMask/mobile-admins

# Platform & Snaps Code Fencing File
metro.transform.js @MetaMask/mobile-platform @MetaMask/core-platform
Expand Down
3 changes: 3 additions & 0 deletions .js.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ export WALLET_CONNECT_PROJECT_ID=""
# Default PORT for metro
export WATCHER_PORT=8081

# Expo Project ID for OTA updates
export EXPO_PROJECT_ID=""

# Environment: "production", "pre-release" or "dev"
export METAMASK_ENVIRONMENT="dev"

Expand Down
4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -187,8 +187,8 @@ android {
applicationId "io.metamask"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionName "7.60.0"
versionCode 2993
versionName "7.60.99"
versionCode 2997
testBuildType System.getProperty('testBuildType', 'debug')
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
manifestPlaceholders.MM_BRANCH_KEY_TEST = "$System.env.MM_BRANCH_KEY_TEST"
Expand Down
29 changes: 28 additions & 1 deletion app.config.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
const { RUNTIME_VERSION, PROJECT_ID, UPDATE_URL } = require('./ota.config.js');

module.exports = {
name: 'MetaMask',
displayName: 'MetaMask',
Expand All @@ -15,7 +17,9 @@ module.exports = {
'../../node_modules/@notifee/react-native/android/libs',
],
},
ios: {},
ios: {
jsEngine: 'hermes',
},
},
],
[
Expand All @@ -36,5 +40,28 @@ module.exports = {
ios: {
bundleIdentifier: 'io.metamask.MetaMask',
usesAppleSignIn: true,
jsEngine: 'hermes',
},
expo: {
owner: 'metamask-test',
runtimeVersion: RUNTIME_VERSION,
updates: {
url: UPDATE_URL,
// Channel is set by requestHeaders, will be overridden with build script
requestHeaders: {
'expo-channel-name': 'preview',
},
},
extra: {
eas: {
projectId: PROJECT_ID,
},
},
android: {
package: 'io.metamask',
},
ios: {
bundleIdentifier: 'io.metamask.MetaMask',
},
},
};
36 changes: 36 additions & 0 deletions app/__mocks__/expo-updates.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
// Mock for expo-updates module
export const channel = 'test-channel';
export const runtimeVersion = '1.0.0';
export const isEmbeddedLaunch = true;
export const isEnabled = true;
export const updateId = 'mock-update-id';

export const checkForUpdateAsync = jest.fn();
export const fetchUpdateAsync = jest.fn();
export const reloadAsync = jest.fn();
export const useUpdates = jest.fn();

export const UpdateEventType = {
ERROR: 'error',
NO_UPDATE_AVAILABLE: 'noUpdateAvailable',
UPDATE_AVAILABLE: 'updateAvailable',
};

export const UpdateCheckResult = {
isAvailable: false,
manifest: null,
};

export default {
channel,
runtimeVersion,
isEmbeddedLaunch,
isEnabled,
updateId,
checkForUpdateAsync,
fetchUpdateAsync,
reloadAsync,
useUpdates,
UpdateEventType,
UpdateCheckResult,
};
44 changes: 40 additions & 4 deletions app/components/Views/Settings/AppInformation/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,14 @@ import {
getVersion,
getBuildNumber,
} from 'react-native-device-info';
import {
channel,
runtimeVersion,
isEmbeddedLaunch,
isEnabled as isOTAUpdatesEnabled,
updateId,
} from 'expo-updates';
import { PROJECT_ID, getFullVersion } from '../../../../constants/ota';
import { fontStyles } from '../../../../styles/common';
import PropTypes from 'prop-types';
import { strings } from '../../../../../locales/i18n';
Expand Down Expand Up @@ -184,6 +192,11 @@ export default class AppInformation extends PureComponent {
const colors = this.context.colors || mockTheme.colors;
const styles = createStyles(colors);

const otaUpdateMessage =
__DEV__ || isEmbeddedLaunch
? 'This app is running from built-in code or in development mode'
: 'This app is running an update';

return (
<SafeAreaView
style={styles.wrapper}
Expand All @@ -202,27 +215,50 @@ export default class AppInformation extends PureComponent {
resizeMethod={'auto'}
/>
</TouchableOpacity>
<Text style={styles.versionInfo}>{this.state.appInfo}</Text>
<Text style={styles.versionInfo}>
{getFullVersion(this.state.appInfo)}
</Text>
{isQa ? (
<Text style={styles.branchInfo}>
{`Branch: ${process.env['GIT_BRANCH']}`}
</Text>
) : null}

{this.state.showEnvironmentInfo ? (
{this.state.showEnvironmentInfo && (
<>
<Text style={styles.branchInfo}>
{`Environment: ${process.env.METAMASK_ENVIRONMENT}`}
</Text>

<Text style={styles.branchInfo}>
{`Remote Feature Flag Env: ${getFeatureFlagAppEnvironment()}`}
</Text>
<Text style={styles.branchInfo}>
{`Remote Feature Flag Distribution: ${getFeatureFlagAppDistribution()}`}
</Text>
<Text style={styles.branchInfo}>
{`OTA Updates enabled: ${String(isOTAUpdatesEnabled)}`}
</Text>
{isOTAUpdatesEnabled && (
<>
<Text style={styles.branchInfo}>
{`Expo Project ID: ${PROJECT_ID}`}
</Text>
<Text style={styles.branchInfo}>
{`Update ID: ${updateId || 'N/A'}`}
</Text>
<Text style={styles.branchInfo}>
{`OTA Update Channel: ${channel}`}
</Text>
<Text style={styles.branchInfo}>
{`OTA Update runtime version: ${runtimeVersion}`}
</Text>
<Text style={styles.branchInfo}>
{`OTA Update status: ${otaUpdateMessage}`}
</Text>
</>
)}
</>
) : null}
)}
</View>
<Text style={styles.title}>{strings('app_information.links')}</Text>
<View style={styles.links}>
Expand Down
22 changes: 22 additions & 0 deletions app/constants/ota.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/**
* OTA (Over-The-Air) Update Version Tracking
*
* Re-exports from the root ota.config.js file (single source of truth).
* To update versions, edit ota.config.js at the project root.
*/

import otaConfig from '../../ota.config.js';

export const OTA_VERSION = otaConfig.OTA_VERSION;
export const RUNTIME_VERSION = otaConfig.RUNTIME_VERSION;
export const PROJECT_ID = otaConfig.PROJECT_ID;

/**
* Gets the full version string including OTA version
* @param appVersion - The app version from package.json/device info
* @returns Full version string (e.g., "7.58.0 OTA Version: v3")
*/
export const getFullVersion = (appVersion: string): string =>
process.env.METAMASK_ENVIRONMENT !== 'production' && OTA_VERSION !== 'v0'
? `${appVersion} OTA: ${OTA_VERSION}`
: `${appVersion}`;
8 changes: 4 additions & 4 deletions bitrise.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3574,16 +3574,16 @@ app:
PROJECT_LOCATION_IOS: ios
- opts:
is_expand: false
VERSION_NAME: 7.60.0
VERSION_NAME: 7.60.99
- opts:
is_expand: false
VERSION_NUMBER: 2993
VERSION_NUMBER: 2997
- opts:
is_expand: false
FLASK_VERSION_NAME: 7.60.0
FLASK_VERSION_NAME: 7.60.99
- opts:
is_expand: false
FLASK_VERSION_NUMBER: 2993
FLASK_VERSION_NUMBER: 2997
- opts:
is_expand: false
ANDROID_APK_LINK: ''
Expand Down
3 changes: 3 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ import 'react-native-gesture-handler';
// why-did-you-render must run as early as possible (after gesture-handler) in dev
import './wdyr';

// Required for EAS Updates to resolve assets (.riv, .png, etc.) from OTA bundles
import 'expo-asset';

import * as Sentry from '@sentry/react-native'; // eslint-disable-line import/no-namespace
import { setupSentry } from './app/util/sentry/utils';
import { AppRegistry, LogBox } from 'react-native';
Expand Down
7 changes: 7 additions & 0 deletions ios/Expo.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- EAS Update configuration is injected by scripts/update-expo-channel.js during build -->
</dict>
</plist>
Loading
Loading