Skip to content

Commit 914fc4c

Browse files
ci(release): publish latest release
1 parent e40445e commit 914fc4c

File tree

497 files changed

+9643
-26803
lines changed

Some content is hidden

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

497 files changed

+9643
-26803
lines changed

CODEOWNERS

Lines changed: 0 additions & 1 deletion
This file was deleted.

RELEASE

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,12 @@
1-
IPFS hash of the deployment:
2-
- CIDv0: `QmeVXtPfnqJ2PeigSXgwizJDYf2EmwfVrCE4Qi3dXhAbdL`
3-
- CIDv1: `bafybeihqagapczekcmizn4zden7rrz6h4mfhtnd3dc3wa3wnatqc4eu6vm`
1+
We are back with some new updates! Here’s the latest:
42

5-
The latest release is always mirrored at [app.uniswap.org](https://app.uniswap.org).
3+
Integrated Flashbots Protect: This is a private RPC provider that protects users from getting sandwiched on Mainnet.
64

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://bafybeihqagapczekcmizn4zden7rrz6h4mfhtnd3dc3wa3wnatqc4eu6vm.ipfs.dweb.link/
14-
- https://bafybeihqagapczekcmizn4zden7rrz6h4mfhtnd3dc3wa3wnatqc4eu6vm.ipfs.cf-ipfs.com/
15-
- [ipfs://QmeVXtPfnqJ2PeigSXgwizJDYf2EmwfVrCE4Qi3dXhAbdL/](ipfs://QmeVXtPfnqJ2PeigSXgwizJDYf2EmwfVrCE4Qi3dXhAbdL/)
16-
17-
### 5.67.4 (2025-01-23)
18-
19-
20-
### Bug Fixes
21-
22-
* **web:** Phil/lp polling prod (#15462) 7533563
5+
Max Balance Education: Introduces copy to educate users on why the Max button is disabled when they don't have enough of the network token to cover gas costs.
236

7+
Other changes:
248

9+
- Improved readability and color extraction of NFT Detail pages
10+
- Improved fee detection of fee-on-transfer tokens
11+
- More concise context menu on token detail pages
12+
- Various bug fixes and performance improvements

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
web/5.67.4
1+
mobile/1.43.1

apps/extension/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,6 @@ dist-ssr
2525
*.sw?
2626

2727
.tamagui
28+
29+
# Sentry Config File
30+
.env.sentry-build-plugin

apps/extension/package.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,17 @@
99
"@ethersproject/providers": "5.7.2",
1010
"@metamask/rpc-errors": "6.2.1",
1111
"@reduxjs/toolkit": "1.9.3",
12+
"@sentry/browser": "7.80.0",
13+
"@sentry/react": "7.80.0",
14+
"@sentry/webpack-plugin": "2.10.3",
1215
"@svgr/webpack": "8.0.1",
1316
"@tamagui/core": "1.114.4",
1417
"@types/uuid": "9.0.1",
1518
"@uniswap/analytics-events": "2.40.0",
1619
"@uniswap/uniswapx-sdk": "3.0.0-beta.1",
17-
"@uniswap/universal-router-sdk": "4.10.0",
18-
"@uniswap/v3-sdk": "3.21.0",
19-
"@uniswap/v4-sdk": "1.15.0",
20+
"@uniswap/universal-router-sdk": "4.7.0",
21+
"@uniswap/v3-sdk": "3.19.0",
22+
"@uniswap/v4-sdk": "1.12.0",
2023
"dotenv-webpack": "8.0.1",
2124
"ethers": "5.7.2",
2225
"eventemitter3": "5.0.1",

apps/extension/src/app/Global.css

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ body,
22
html {
33
height: 100%;
44
max-width: 100vw;
5-
font-feature-settings: 'liga' 0;
6-
font-variant-ligatures: no-contextual;
75
}
86

97
#root {

apps/extension/src/app/OnboardingApp.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,11 @@ import 'symbol-observable' // Needed by `reduxed-chrome-storage` as polyfill, or
44

55
import { useEffect } from 'react'
66
import { I18nextProvider } from 'react-i18next'
7-
import { RouteObject, RouterProvider, createHashRouter } from 'react-router-dom'
7+
import { RouteObject, RouterProvider } from 'react-router-dom'
88
import { PersistGate } from 'redux-persist/integration/react'
99
import { ExtensionStatsigProvider } from 'src/app/StatsigProvider'
1010
import { GraphqlProvider } from 'src/app/apollo'
1111
import { ErrorElement } from 'src/app/components/ErrorElement'
12-
import { DatadogAppNameTag } from 'src/app/datadog'
1312
import { ClaimUnitagScreen } from 'src/app/features/onboarding/ClaimUnitagScreen'
1413
import { Complete } from 'src/app/features/onboarding/Complete'
1514
import {
@@ -35,6 +34,7 @@ import { ScanToOnboard } from 'src/app/features/onboarding/scan/ScanToOnboard'
3534
import { ScantasticContextProvider } from 'src/app/features/onboarding/scan/ScantasticContextProvider'
3635
import { OnboardingRoutes, TopLevelRoutes } from 'src/app/navigation/constants'
3736
import { setRouter, setRouterState } from 'src/app/navigation/state'
37+
import { SentryAppNameTag, sentryCreateHashRouter } from 'src/app/sentry'
3838
import { initExtensionAnalytics } from 'src/app/utils/analytics'
3939
import { checksIfSupportsSidePanel } from 'src/app/utils/chrome'
4040
import { PrimaryAppInstanceDebuggerLazy } from 'src/store/PrimaryAppInstanceDebuggerLazy'
@@ -135,7 +135,7 @@ const allRoutes = [
135135
},
136136
]
137137

138-
const router = createHashRouter([
138+
const router = sentryCreateHashRouter([
139139
{
140140
path: `/${TopLevelRoutes.Onboarding}`,
141141
element: <OnboardingWrapper />,
@@ -188,7 +188,7 @@ export default function OnboardingApp(): JSX.Element {
188188
return (
189189
<Trace>
190190
<PersistGate persistor={getReduxPersistor()}>
191-
<ExtensionStatsigProvider appName={DatadogAppNameTag.Onboarding}>
191+
<ExtensionStatsigProvider appName={SentryAppNameTag.Onboarding}>
192192
<I18nextProvider i18n={i18n}>
193193
<SharedWalletProvider reduxStore={getReduxStore()}>
194194
<ErrorBoundary>

apps/extension/src/app/PopupApp.tsx

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ import 'src/app/Global.css'
44
import { useEffect } from 'react'
55
import { I18nextProvider, useTranslation } from 'react-i18next'
66
import { useDispatch } from 'react-redux'
7-
import { RouterProvider, createHashRouter } from 'react-router-dom'
7+
import { RouterProvider } from 'react-router-dom'
88
import { PersistGate } from 'redux-persist/integration/react'
99
import { ExtensionStatsigProvider } from 'src/app/StatsigProvider'
1010
import { GraphqlProvider } from 'src/app/apollo'
1111
import { ErrorElement } from 'src/app/components/ErrorElement'
1212
import { TraceUserProperties } from 'src/app/components/Trace/TraceUserProperties'
13-
import { DatadogAppNameTag } from 'src/app/datadog'
1413
import { DappContextProvider } from 'src/app/features/dapp/DappContext'
14+
import { SentryAppNameTag, initializeSentry, sentryCreateHashRouter } from 'src/app/sentry'
1515
import { initExtensionAnalytics } from 'src/app/utils/analytics'
1616
import { getReduxPersistor, getReduxStore } from 'src/store/store'
1717
import { DeprecatedButton, Flex, Image, Text } from 'ui/src'
@@ -25,11 +25,23 @@ import { ElementName } from 'uniswap/src/features/telemetry/constants'
2525
import { UnitagUpdaterContextProvider } from 'uniswap/src/features/unitags/context'
2626
import i18n from 'uniswap/src/i18n'
2727
import { ExtensionScreens } from 'uniswap/src/types/screens/extension'
28+
import { getUniqueId } from 'utilities/src/device/getUniqueId'
29+
import { logger } from 'utilities/src/logger/logger'
2830
import { ErrorBoundary } from 'wallet/src/components/ErrorBoundary/ErrorBoundary'
2931
import { useTestnetModeForLoggingAndAnalytics } from 'wallet/src/features/testnetMode/hooks'
3032
import { SharedWalletProvider } from 'wallet/src/providers/SharedWalletProvider'
3133

32-
const router = createHashRouter([
34+
getUniqueId()
35+
.then((userId) => {
36+
initializeSentry(SentryAppNameTag.Popup, userId)
37+
})
38+
.catch((error) => {
39+
logger.error(error, {
40+
tags: { file: 'PopupApp.tsx', function: 'getUniqueId' },
41+
})
42+
})
43+
44+
const router = sentryCreateHashRouter([
3345
{
3446
path: '',
3547
element: <PopupContent />,
@@ -116,7 +128,7 @@ export default function PopupApp(): JSX.Element {
116128
return (
117129
<Trace>
118130
<PersistGate persistor={getReduxPersistor()}>
119-
<ExtensionStatsigProvider appName={DatadogAppNameTag.Popup}>
131+
<ExtensionStatsigProvider appName={SentryAppNameTag.Popup}>
120132
<I18nextProvider i18n={i18n}>
121133
<SharedWalletProvider reduxStore={getReduxStore()}>
122134
<ErrorBoundary>

apps/extension/src/app/SidebarApp.tsx

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@ import 'src/app/Global.css'
44
import { useEffect, useRef, useState } from 'react'
55
import { I18nextProvider } from 'react-i18next'
66
import { useDispatch } from 'react-redux'
7-
import { RouterProvider, createHashRouter } from 'react-router-dom'
7+
import { RouterProvider } from 'react-router-dom'
88
import { PersistGate } from 'redux-persist/integration/react'
99
import { ExtensionStatsigProvider } from 'src/app/StatsigProvider'
1010
import { GraphqlProvider } from 'src/app/apollo'
1111
import { ErrorElement } from 'src/app/components/ErrorElement'
1212
import { TraceUserProperties } from 'src/app/components/Trace/TraceUserProperties'
13-
import { DatadogAppNameTag } from 'src/app/datadog'
1413
import { AccountSwitcherScreen } from 'src/app/features/accounts/AccountSwitcherScreen'
1514
import { DappContextProvider } from 'src/app/features/dapp/DappContext'
1615
import { addRequest } from 'src/app/features/dappRequests/saga'
@@ -30,6 +29,7 @@ import { useIsWalletUnlocked } from 'src/app/hooks/useIsWalletUnlocked'
3029
import { AppRoutes, RemoveRecoveryPhraseRoutes, SettingsRoutes } from 'src/app/navigation/constants'
3130
import { MainContent, WebNavigation } from 'src/app/navigation/navigation'
3231
import { setRouter, setRouterState } from 'src/app/navigation/state'
32+
import { SentryAppNameTag, initializeSentry, sentryCreateHashRouter } from 'src/app/sentry'
3333
import { initExtensionAnalytics } from 'src/app/utils/analytics'
3434
import {
3535
DappBackgroundPortChannel,
@@ -47,6 +47,7 @@ import { ExtensionEventName } from 'uniswap/src/features/telemetry/constants'
4747
import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send'
4848
import { UnitagUpdaterContextProvider, useUnitagUpdater } from 'uniswap/src/features/unitags/context'
4949
import i18n from 'uniswap/src/i18n'
50+
import { getUniqueId } from 'utilities/src/device/getUniqueId'
5051
import { isDevEnv } from 'utilities/src/environment/env'
5152
import { logger } from 'utilities/src/logger/logger'
5253
import { ONE_SECOND_MS } from 'utilities/src/time/time'
@@ -55,7 +56,17 @@ import { ErrorBoundary } from 'wallet/src/components/ErrorBoundary/ErrorBoundary
5556
import { useTestnetModeForLoggingAndAnalytics } from 'wallet/src/features/testnetMode/hooks'
5657
import { SharedWalletProvider } from 'wallet/src/providers/SharedWalletProvider'
5758

58-
const router = createHashRouter([
59+
getUniqueId()
60+
.then((userId) => {
61+
initializeSentry(SentryAppNameTag.Sidebar, userId)
62+
})
63+
.catch((error) => {
64+
logger.error(error, {
65+
tags: { file: 'SidebarApp.tsx', function: 'getUniqueId' },
66+
})
67+
})
68+
69+
const router = sentryCreateHashRouter([
5970
{
6071
path: '',
6172
element: <SidebarWrapper />,
@@ -247,7 +258,7 @@ export default function SidebarApp(): JSX.Element {
247258
return (
248259
<Trace>
249260
<PersistGate persistor={getReduxPersistor()}>
250-
<ExtensionStatsigProvider appName={DatadogAppNameTag.Sidebar}>
261+
<ExtensionStatsigProvider appName={SentryAppNameTag.Sidebar}>
251262
<I18nextProvider i18n={i18n}>
252263
<SharedWalletProvider reduxStore={getReduxStore()}>
253264
<ErrorBoundary>

apps/extension/src/app/UnitagClaimApp.tsx

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@ import 'src/app/Global.css'
33

44
import { PropsWithChildren, useEffect } from 'react'
55
import { I18nextProvider } from 'react-i18next'
6-
import { Outlet, RouterProvider, createHashRouter, useSearchParams } from 'react-router-dom'
6+
import { Outlet, RouterProvider, useSearchParams } from 'react-router-dom'
77
import { PersistGate } from 'redux-persist/integration/react'
88
import { ExtensionStatsigProvider } from 'src/app/StatsigProvider'
99
import { GraphqlProvider } from 'src/app/apollo'
1010
import { ErrorElement } from 'src/app/components/ErrorElement'
1111
import { TraceUserProperties } from 'src/app/components/Trace/TraceUserProperties'
12-
import { DatadogAppNameTag } from 'src/app/datadog'
1312
import {
1413
ClaimUnitagSteps,
1514
OnboardingStepsProvider,
@@ -24,6 +23,7 @@ import { UnitagCreateUsernameScreen } from 'src/app/features/unitags/UnitagCreat
2423
import { UnitagIntroScreen } from 'src/app/features/unitags/UnitagIntroScreen'
2524
import { UnitagClaimRoutes } from 'src/app/navigation/constants'
2625
import { setRouter, setRouterState } from 'src/app/navigation/state'
26+
import { SentryAppNameTag, initializeSentry, sentryCreateHashRouter } from 'src/app/sentry'
2727
import { initExtensionAnalytics } from 'src/app/utils/analytics'
2828
import { getReduxPersistor, getReduxStore } from 'src/store/store'
2929
import { Flex } from 'ui/src'
@@ -32,14 +32,25 @@ import { LocalizationContextProvider } from 'uniswap/src/features/language/Local
3232
import Trace from 'uniswap/src/features/telemetry/Trace'
3333
import { UnitagUpdaterContextProvider } from 'uniswap/src/features/unitags/context'
3434
import i18n from 'uniswap/src/i18n'
35+
import { getUniqueId } from 'utilities/src/device/getUniqueId'
3536
import { logger } from 'utilities/src/logger/logger'
3637
import { usePrevious } from 'utilities/src/react/hooks'
3738
import { ErrorBoundary } from 'wallet/src/components/ErrorBoundary/ErrorBoundary'
3839
import { useTestnetModeForLoggingAndAnalytics } from 'wallet/src/features/testnetMode/hooks'
3940
import { useAccountAddressFromUrlWithThrow } from 'wallet/src/features/wallet/hooks'
4041
import { SharedWalletProvider } from 'wallet/src/providers/SharedWalletProvider'
4142

42-
const router = createHashRouter([
43+
getUniqueId()
44+
.then((userId) => {
45+
initializeSentry(SentryAppNameTag.UnitagClaim, userId)
46+
})
47+
.catch((error) => {
48+
logger.error(error, {
49+
tags: { file: 'UnitagClaimApp.tsx', function: 'getUniqueId' },
50+
})
51+
})
52+
53+
const router = sentryCreateHashRouter([
4354
{
4455
path: '',
4556
element: <UnitagAppInner />,
@@ -151,7 +162,7 @@ export default function UnitagClaimApp(): JSX.Element {
151162
return (
152163
<Trace>
153164
<PersistGate persistor={getReduxPersistor()}>
154-
<ExtensionStatsigProvider appName={DatadogAppNameTag.UnitagClaim}>
165+
<ExtensionStatsigProvider appName={SentryAppNameTag.UnitagClaim}>
155166
<I18nextProvider i18n={i18n}>
156167
<SharedWalletProvider reduxStore={getReduxStore()}>
157168
<ErrorBoundary>

0 commit comments

Comments
 (0)