Skip to content

Commit 6b704f8

Browse files
ci(release): publish latest release
1 parent 12e3725 commit 6b704f8

File tree

707 files changed

+5348
-9063
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

707 files changed

+5348
-9063
lines changed
-48 Bytes
Binary file not shown.

Diff for: CODEOWNERS

-1
This file was deleted.

Diff for: RELEASE

+7-60
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,10 @@
1-
IPFS hash of the deployment:
2-
- CIDv0: `QmSR8nYexuW3tYLMY62XR3PCG7tcT9QWpeVkHNX6wnZn3p`
3-
- CIDv1: `bafybeib4stith4o7l5dyd5uejt25qoxfndl57qj2gfc5sgpsmpe6lcb3y4`
1+
Excited to share some new updates! Here’s what’s new:
42

5-
The latest release is always mirrored at [app.uniswap.org](https://app.uniswap.org).
6-
7-
You can also access the Uniswap Interface from an IPFS gateway.
8-
**BEWARE**: The Uniswap interface uses [`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) to remember your settings, such as which tokens you have imported.
9-
**You should always use an IPFS gateway that enforces origin separation**, or our hosted deployment of the latest release at [app.uniswap.org](https://app.uniswap.org).
10-
Your Uniswap settings are never remembered across different URLs.
11-
12-
IPFS gateways:
13-
- https://bafybeib4stith4o7l5dyd5uejt25qoxfndl57qj2gfc5sgpsmpe6lcb3y4.ipfs.dweb.link/
14-
- https://bafybeib4stith4o7l5dyd5uejt25qoxfndl57qj2gfc5sgpsmpe6lcb3y4.ipfs.cf-ipfs.com/
15-
- [ipfs://QmSR8nYexuW3tYLMY62XR3PCG7tcT9QWpeVkHNX6wnZn3p/](ipfs://QmSR8nYexuW3tYLMY62XR3PCG7tcT9QWpeVkHNX6wnZn3p/)
16-
17-
## 5.29.0 (2024-05-22)
18-
19-
20-
### Features
21-
22-
* **web:** [multichain] show limits page in disabled state (#8164) df50ab0
23-
* **web:** add PDP rich link previews (#8003) 564b6e1
24-
* **web:** avoid fetching redundant on-chain receipts (#7508) 0cc8511
25-
* **web:** unicon v2 education label (#8339) 1487fbd
26-
* **web:** update wallet connect modal's color mode with app theme (#7993) 38a9308
27-
28-
29-
### Bug Fixes
30-
31-
* **web:** add null check to OSCollectionsFetcher (#8188) e5077c0
32-
* **web:** Allow viewing pool mgmt pages when disconnected (#8239) 0ac09da
33-
* **web:** change gap on landing page (#8175) f98a7e8
34-
* **web:** change You pay and You receive to Buy and Sell (#8198) 601d1d9
35-
* **web:** chart dot grid size (#8085) cf94701
36-
* **web:** check client chain for undefined (#8215) 03697e7
37-
* **web:** check for supported network on pools page (#8224) 5c7d58d
38-
* **web:** filtering out spam on send (#8386) (#8405) 2775043
39-
* **web:** fix limits price parsing bug in different locales (#8199) b9613d9
40-
* **web:** fix SEO metatags (#8286) c294e33
41-
* **web:** hotfixing mouseover bug (#8402) 8c5cf28
42-
* **web:** lowercase unicon flag 02dcbf7
43-
* **web:** prevent connection from hanging when iframed - staging (#8394) 80ed62c
44-
* **web:** set initial user state in cypress tests using localStorage (#8189) 941d8fe
45-
* **web:** Show unsupported network in navbar (#8181) 7746ac4
46-
* **web:** support multichain input params (#8250) 110976e
47-
* **web:** window.ethereum fallback on mobile [prod] (#8261) 8b791cc
48-
49-
50-
### Tests
51-
52-
* **web:** remove explicit blocknumbers (#8162) 4a83a6f
53-
54-
55-
### Code Refactoring
56-
57-
* **web:** refactor NFT sell flow to use wagmi (#7636) 2ebaf2c
58-
* **web:** screen size hooks (#8100) 9593763
59-
* **web:** Use wagmi for add/remove liquidity and collecting fees (#7641) 6448ae2
60-
* **web:** use wagmi for NFT Buys (#7633) f472ce0
61-
* **web:** Use wagmi for Swap and Limit Order flow (#7779) 832d7ff
3+
Transfer from Centralized Exchange — Coinbase and Robinhood users can now transfer their crypto assets directly to the Uniswap Wallet!
624

5+
Expanded Assets on Fiat On-ramp — Users can now on-ramp to assets on other networks (e.g. ETH and USDC on Base).
636

7+
Other changes:
8+
- Better NFT visibility
9+
- Home screen improvements for new users
10+
- Various bug fixes and performance improvements

Diff for: VERSION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
web/5.29.0
1+
mobile/1.27

Diff for: apps/mobile/android/app/build.gradle

+3-3
Original file line numberDiff line numberDiff line change
@@ -131,17 +131,17 @@ android {
131131
dev {
132132
isDefault(true)
133133
applicationIdSuffix ".dev"
134-
versionName "1.28"
134+
versionName "1.27"
135135
dimension "variant"
136136
}
137137
beta {
138138
applicationIdSuffix ".beta"
139-
versionName "1.28"
139+
versionName "1.27"
140140
dimension "variant"
141141
}
142142
prod {
143143
dimension "variant"
144-
versionName "1.28"
144+
versionName "1.27"
145145
}
146146
}
147147

Diff for: apps/mobile/e2e/usecases/CreateNewWallet.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { by, element, expect } from 'detox'
22
import { TestWallet } from 'e2e/utils/fixtures'
3-
import { ElementName } from 'uniswap/src/features/telemetry/constants'
3+
import { ElementName } from 'wallet/src/telemetry/constants'
44

55
export function CreateNewWallet(): void {
66
it('creates a new wallet', async () => {

Diff for: apps/mobile/e2e/usecases/onboarding/CreateNewWallet.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { by, element, expect } from 'detox'
22
import { TestWallet } from 'e2e/utils/fixtures'
3-
import { ElementName } from 'uniswap/src/features/telemetry/constants'
3+
import { ElementName } from 'wallet/src/telemetry/constants'
44

55
export async function CreateNewWallet(): Promise<void> {
66
// Selects "Create a new wallet" option on the landing screen

Diff for: apps/mobile/e2e/usecases/onboarding/ImportWallet.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { by, element, expect } from 'detox'
22
import { TestWallet } from 'e2e/utils/fixtures'
3-
import { ElementName } from 'uniswap/src/features/telemetry/constants'
3+
import { ElementName } from 'wallet/src/telemetry/constants'
44

55
export async function ImportWallet(): Promise<void> {
66
// Selects "Add an existing wallet" option on the landing screen

Diff for: apps/mobile/e2e/usecases/onboarding/WatchWallet.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { by, element, expect } from 'detox'
22
import { TestWatchedWallet } from 'e2e/utils/fixtures'
3-
import { ElementName } from 'uniswap/src/features/telemetry/constants'
3+
import { ElementName } from 'wallet/src/telemetry/constants'
44

55
export async function WatchWallet(): Promise<void> {
66
// Selects "Add an existing wallet" option on the landing screen

Diff for: apps/mobile/e2e/usecases/swap/SwapBasicInteractions.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { by, element, expect } from 'detox'
22
import { TestWatchedWallet } from 'e2e/utils/fixtures'
3-
import { ElementName } from 'uniswap/src/features/telemetry/constants'
3+
import { ElementName } from 'wallet/src/telemetry/constants'
44

55
export async function SwapBasicInteractions(): Promise<void> {
66
// Navigate to swap screen

Diff for: apps/mobile/ios/Uniswap.xcodeproj/project.pbxproj

+16-16
Original file line numberDiff line numberDiff line change
@@ -2488,7 +2488,7 @@
24882488
"@executable_path/Frameworks",
24892489
"@executable_path/../../Frameworks",
24902490
);
2491-
MARKETING_VERSION = 1.28;
2491+
MARKETING_VERSION = 1.27;
24922492
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
24932493
MTL_FAST_MATH = YES;
24942494
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
@@ -2534,7 +2534,7 @@
25342534
"@executable_path/Frameworks",
25352535
"@executable_path/../../Frameworks",
25362536
);
2537-
MARKETING_VERSION = 1.28;
2537+
MARKETING_VERSION = 1.27;
25382538
MTL_FAST_MATH = YES;
25392539
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
25402540
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.widgets;
@@ -2580,7 +2580,7 @@
25802580
"@executable_path/Frameworks",
25812581
"@executable_path/../../Frameworks",
25822582
);
2583-
MARKETING_VERSION = 1.28;
2583+
MARKETING_VERSION = 1.27;
25842584
MTL_FAST_MATH = YES;
25852585
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
25862586
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.dev.widgets;
@@ -2626,7 +2626,7 @@
26262626
"@executable_path/Frameworks",
26272627
"@executable_path/../../Frameworks",
26282628
);
2629-
MARKETING_VERSION = 1.28;
2629+
MARKETING_VERSION = 1.27;
26302630
MTL_FAST_MATH = YES;
26312631
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
26322632
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.beta.widgets;
@@ -2668,7 +2668,7 @@
26682668
"@executable_path/Frameworks",
26692669
"@executable_path/../../Frameworks",
26702670
);
2671-
MARKETING_VERSION = 1.28;
2671+
MARKETING_VERSION = 1.27;
26722672
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
26732673
MTL_FAST_MATH = YES;
26742674
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
@@ -2711,7 +2711,7 @@
27112711
"@executable_path/Frameworks",
27122712
"@executable_path/../../Frameworks",
27132713
);
2714-
MARKETING_VERSION = 1.28;
2714+
MARKETING_VERSION = 1.27;
27152715
MTL_FAST_MATH = YES;
27162716
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
27172717
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.WidgetIntentExtension;
@@ -2754,7 +2754,7 @@
27542754
"@executable_path/Frameworks",
27552755
"@executable_path/../../Frameworks",
27562756
);
2757-
MARKETING_VERSION = 1.28;
2757+
MARKETING_VERSION = 1.27;
27582758
MTL_FAST_MATH = YES;
27592759
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
27602760
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.dev.WidgetIntentExtension;
@@ -2797,7 +2797,7 @@
27972797
"@executable_path/Frameworks",
27982798
"@executable_path/../../Frameworks",
27992799
);
2800-
MARKETING_VERSION = 1.28;
2800+
MARKETING_VERSION = 1.27;
28012801
MTL_FAST_MATH = YES;
28022802
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
28032803
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.beta.WidgetIntentExtension;
@@ -2833,7 +2833,7 @@
28332833
"$(inherited)",
28342834
"@executable_path/Frameworks",
28352835
);
2836-
MARKETING_VERSION = 1.28;
2836+
MARKETING_VERSION = 1.27;
28372837
OTHER_LDFLAGS = (
28382838
"$(inherited)",
28392839
"-ObjC",
@@ -2871,7 +2871,7 @@
28712871
"$(inherited)",
28722872
"@executable_path/Frameworks",
28732873
);
2874-
MARKETING_VERSION = 1.28;
2874+
MARKETING_VERSION = 1.27;
28752875
OTHER_LDFLAGS = (
28762876
"$(inherited)",
28772877
"-ObjC",
@@ -3055,7 +3055,7 @@
30553055
"@executable_path/Frameworks",
30563056
"@executable_path/../../Frameworks",
30573057
);
3058-
MARKETING_VERSION = 1.28;
3058+
MARKETING_VERSION = 1.27;
30593059
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
30603060
MTL_FAST_MATH = YES;
30613061
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
@@ -3099,7 +3099,7 @@
30993099
"@executable_path/Frameworks",
31003100
"@executable_path/../../Frameworks",
31013101
);
3102-
MARKETING_VERSION = 1.28;
3102+
MARKETING_VERSION = 1.27;
31033103
MTL_FAST_MATH = YES;
31043104
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
31053105
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.OneSignalNotificationServiceExtension;
@@ -3202,7 +3202,7 @@
32023202
"$(inherited)",
32033203
"@executable_path/Frameworks",
32043204
);
3205-
MARKETING_VERSION = 1.28;
3205+
MARKETING_VERSION = 1.27;
32063206
OTHER_LDFLAGS = (
32073207
"$(inherited)",
32083208
"-ObjC",
@@ -3273,7 +3273,7 @@
32733273
"@executable_path/Frameworks",
32743274
"@executable_path/../../Frameworks",
32753275
);
3276-
MARKETING_VERSION = 1.28;
3276+
MARKETING_VERSION = 1.27;
32773277
MTL_FAST_MATH = YES;
32783278
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
32793279
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.beta.OneSignalNotificationServiceExtension;
@@ -3376,7 +3376,7 @@
33763376
"$(inherited)",
33773377
"@executable_path/Frameworks",
33783378
);
3379-
MARKETING_VERSION = 1.28;
3379+
MARKETING_VERSION = 1.27;
33803380
OTHER_LDFLAGS = (
33813381
"$(inherited)",
33823382
"-ObjC",
@@ -3447,7 +3447,7 @@
34473447
"@executable_path/Frameworks",
34483448
"@executable_path/../../Frameworks",
34493449
);
3450-
MARKETING_VERSION = 1.28;
3450+
MARKETING_VERSION = 1.27;
34513451
MTL_FAST_MATH = YES;
34523452
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
34533453
PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.dev.OneSignalNotificationServiceExtension;

Diff for: apps/mobile/package.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"link:assets": "react-native-asset",
3434
"graphql:generate:swift": "cd ios && ./Pods/Apollo/apollo-ios-cli generate",
3535
"hardhat": "hardhat node",
36-
"check:circular": "../../scripts/check-circular-imports.sh ./src/app/App.tsx 7",
36+
"check:circular": "../../scripts/check-circular-imports.sh ./src/app/App.tsx 8",
3737
"ios": "yarn ios:prebuild && SKIP_BUNDLING=1 react-native run-ios",
3838
"ios:prebuild": "yarn graphql:generate:swift && cd ios/WidgetsCore/MobileSchema && rm -rf !(README.md) && cd ../../.. && yarn graphql:generate:swift && yarn env:local:copy:swift",
3939
"ios:smol": "SKIP_BUNDLING=1 react-native run-ios --simulator=\"iPhone SE (3rd generation)\"",
@@ -131,6 +131,7 @@
131131
"react-native-pager-view": "6.0.1",
132132
"react-native-permissions": "3.6.0",
133133
"react-native-reanimated": "3.8.1",
134+
"react-native-restart": "0.0.27",
134135
"react-native-safe-area-context": "4.9.0",
135136
"react-native-screens": "3.30.1",
136137
"react-native-splash-screen": "3.3.0",
@@ -183,10 +184,12 @@
183184
"postinstall-postinstall": "2.1.0",
184185
"react-devtools": "4.28.0",
185186
"react-dom": "18.2.0",
187+
"react-native-apollo-devtools-client": "1.0.4",
186188
"react-native-asset": "2.1.1",
187189
"react-native-clean-project": "4.0.1",
188190
"react-native-dotenv": "3.2.0",
189191
"react-native-flipper": "0.212.0",
192+
"react-native-mmkv-flipper-plugin": "1.0.0",
190193
"react-native-monorepo-tools": "1.2.1",
191194
"react-native-svg-transformer": "1.3.0",
192195
"react-test-renderer": "18.2.0",

Diff for: apps/mobile/src/app/App.tsx

+8-18
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,37 @@ import { ApolloProvider } from '@apollo/client'
22
import { BottomSheetModalProvider } from '@gorhom/bottom-sheet'
33
import * as Sentry from '@sentry/react-native'
44
import { PerformanceProfiler, RenderPassReport } from '@shopify/react-native-performance'
5-
import { MMKVWrapper } from 'apollo3-cache-persist'
65
import { PropsWithChildren, default as React, StrictMode, useCallback, useEffect } from 'react'
76
import { I18nextProvider } from 'react-i18next'
87
import { LogBox, NativeModules, StatusBar } from 'react-native'
98
import appsFlyer from 'react-native-appsflyer'
109
import { getUniqueId } from 'react-native-device-info'
1110
import { GestureHandlerRootView } from 'react-native-gesture-handler'
12-
import { MMKV } from 'react-native-mmkv'
1311
import { SafeAreaProvider } from 'react-native-safe-area-context'
1412
import { enableFreeze } from 'react-native-screens'
1513
import { PersistGate } from 'redux-persist/integration/react'
14+
import { ErrorBoundary } from 'src/app/ErrorBoundary'
1615
import { MobileWalletNavigationProvider } from 'src/app/MobileWalletNavigationProvider'
1716
import { useAppDispatch, useAppSelector } from 'src/app/hooks'
1817
import { AppModals } from 'src/app/modals/AppModals'
1918
import { NavigationContainer } from 'src/app/navigation/NavigationContainer'
2019
import { useIsPartOfNavigationTree } from 'src/app/navigation/hooks'
2120
import { AppStackNavigator } from 'src/app/navigation/navigation'
2221
import { persistor, store } from 'src/app/store'
22+
import Trace from 'src/components/Trace/Trace'
2323
import { TraceUserProperties } from 'src/components/Trace/TraceUserProperties'
2424
import { OfflineBanner } from 'src/components/banners/OfflineBanner'
25+
// eslint-disable-next-line no-restricted-imports
26+
import { usePersistedApolloClient } from 'src/data/usePersistedApolloClient'
2527
import { initAppsFlyer } from 'src/features/analytics/appsflyer'
2628
import { LockScreenContextProvider } from 'src/features/authentication/lockScreenContext'
2729
import { BiometricContextProvider } from 'src/features/biometrics/context'
2830
import { NotificationToastWrapper } from 'src/features/notifications/NotificationToastWrapper'
2931
import { initOneSignal } from 'src/features/notifications/Onesignal'
32+
import { sendMobileAnalyticsEvent } from 'src/features/telemetry'
33+
import { MobileEventName } from 'src/features/telemetry/constants'
3034
import { shouldLogScreen } from 'src/features/telemetry/directLogScreens'
3135
import { selectAllowAnalytics } from 'src/features/telemetry/selectors'
32-
import { selectCustomEndpoint } from 'src/features/tweaks/selectors'
3336
import {
3437
processWidgetEvents,
3538
setAccountAddressesUserDefaults,
@@ -50,9 +53,6 @@ import { WALLET_EXPERIMENTS } from 'uniswap/src/features/gating/experiments'
5053
import { WALLET_FEATURE_FLAG_NAMES } from 'uniswap/src/features/gating/flags'
5154
import { loadStatsigOverrides } from 'uniswap/src/features/gating/overrides/customPersistedOverrides'
5255
import { Statsig, StatsigProvider } from 'uniswap/src/features/gating/sdk/statsig'
53-
import Trace from 'uniswap/src/features/telemetry/Trace'
54-
import { MobileEventName } from 'uniswap/src/features/telemetry/constants'
55-
import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send'
5656
import { UnitagUpdaterContextProvider } from 'uniswap/src/features/unitags/context'
5757
import i18n from 'uniswap/src/i18n/i18n'
5858
import { CurrencyId } from 'uniswap/src/types/currency'
@@ -61,9 +61,6 @@ import { registerConsoleOverrides } from 'utilities/src/logger/console'
6161
import { logger } from 'utilities/src/logger/logger'
6262
import { useAsyncData } from 'utilities/src/react/hooks'
6363
import { AnalyticsNavigationContextProvider } from 'utilities/src/telemetry/trace/AnalyticsNavigationContext'
64-
import { ErrorBoundary } from 'wallet/src/components/ErrorBoundary/ErrorBoundary'
65-
// eslint-disable-next-line no-restricted-imports
66-
import { usePersistedApolloClient } from 'wallet/src/data/apollo/usePersistedApolloClient'
6764
import { initFirebaseAppCheck } from 'wallet/src/features/appCheck'
6865
import { useCurrentAppearanceSetting } from 'wallet/src/features/appearance/hooks'
6966
import { selectFavoriteTokens } from 'wallet/src/features/favorites/selectors'
@@ -188,19 +185,12 @@ function SentryTags({ children }: PropsWithChildren): JSX.Element {
188185
return <>{children}</>
189186
}
190187

191-
const MAX_CACHE_SIZE_IN_BYTES = 1024 * 1024 * 25 // 25 MB
192-
193188
// Ensures redux state is available inside usePersistedApolloClient for the custom endpoint
194189
function AppOuter(): JSX.Element | null {
195-
const customEndpoint = useAppSelector(selectCustomEndpoint)
196-
const client = usePersistedApolloClient({
197-
storageWrapper: new MMKVWrapper(new MMKV()),
198-
maxCacheSizeInBytes: MAX_CACHE_SIZE_IN_BYTES,
199-
customEndpoint,
200-
})
190+
const client = usePersistedApolloClient()
201191

202192
const onReportPrepared = useCallback((report: RenderPassReport) => {
203-
sendAnalyticsEvent(MobileEventName.PerformanceReport, report)
193+
sendMobileAnalyticsEvent(MobileEventName.PerformanceReport, report)
204194
}, [])
205195

206196
if (!client) {

0 commit comments

Comments
 (0)