Skip to content

Commit 0b9f771

Browse files
ci(release): publish latest release
1 parent b0f334f commit 0b9f771

44 files changed

Lines changed: 242 additions & 121 deletions

Some content is hidden

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

RELEASE

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
IPFS hash of the deployment:
2-
- CIDv0: `QmWC1YfS71qk5GNiRpuTpRLhuFhExHbp2NwvmY3v1qpS8C`
3-
- CIDv1: `bafybeiduu3kcz453gevvdoogt6cl4d2hjzr2jpgxiolhoo6mmwjzhmlvxu`
2+
- CIDv0: `QmbnHL5TQqNFjVrQtUdXNUci2KGYPBypTjbTEm8PQJjBSX`
3+
- CIDv1: `bafybeighxdnvvampcjgznnlroji2h4t4fes5acglqdugvuezoob3hvkmga`
44

55
The latest release is always mirrored at [app.uniswap.org](https://app.uniswap.org).
66

@@ -10,9 +10,14 @@ You can also access the Uniswap Interface from an IPFS gateway.
1010
Your Uniswap settings are never remembered across different URLs.
1111

1212
IPFS gateways:
13-
- https://bafybeiduu3kcz453gevvdoogt6cl4d2hjzr2jpgxiolhoo6mmwjzhmlvxu.ipfs.dweb.link/
14-
- [ipfs://QmWC1YfS71qk5GNiRpuTpRLhuFhExHbp2NwvmY3v1qpS8C/](ipfs://QmWC1YfS71qk5GNiRpuTpRLhuFhExHbp2NwvmY3v1qpS8C/)
13+
- https://bafybeighxdnvvampcjgznnlroji2h4t4fes5acglqdugvuezoob3hvkmga.ipfs.dweb.link/
14+
- [ipfs://QmbnHL5TQqNFjVrQtUdXNUci2KGYPBypTjbTEm8PQJjBSX/](ipfs://QmbnHL5TQqNFjVrQtUdXNUci2KGYPBypTjbTEm8PQJjBSX/)
1515

16-
### 5.99.2 (2025-06-17)
16+
### 5.99.3 (2025-06-18)
17+
18+
19+
### Bug Fixes
20+
21+
* **web:** dynamic fee hotfix prod (#21010) 6fb9aea
1722

1823

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
web/5.99.2
1+
web/5.99.3

apps/web/src/appGraphql/data/pools/usePoolData.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import ms from 'ms'
2+
import { FeeData } from 'pages/Pool/Positions/create/types'
23
import { useMemo } from 'react'
3-
import { V2_DEFAULT_FEE_TIER } from 'uniswap/src/constants/pools'
4+
import { DEFAULT_TICK_SPACING, V2_DEFAULT_FEE_TIER } from 'uniswap/src/constants/pools'
45
import {
56
ProtocolVersion,
67
Token,
@@ -24,7 +25,7 @@ interface RewardsCampaign {
2425
export interface PoolData {
2526
// basic pool info
2627
idOrAddress: string
27-
feeTier?: number
28+
feeTier?: FeeData
2829
txCount?: number
2930
protocolVersion?: ProtocolVersion
3031
hookAddress?: string
@@ -123,7 +124,11 @@ export function usePoolData(
123124
const anyLoading = Boolean(loadingV4 || loadingV3 || loadingV2)
124125

125126
const pool = dataV4?.v4Pool ?? dataV3?.v3Pool ?? dataV2?.v2Pair ?? undefined
126-
const feeTier = dataV4?.v4Pool?.feeTier ?? dataV3?.v3Pool?.feeTier ?? V2_DEFAULT_FEE_TIER
127+
const feeTier: FeeData = {
128+
feeAmount: dataV4?.v4Pool?.feeTier ?? dataV3?.v3Pool?.feeTier ?? V2_DEFAULT_FEE_TIER,
129+
tickSpacing: DEFAULT_TICK_SPACING,
130+
isDynamic: dataV4?.v4Pool?.isDynamicFee ?? false,
131+
}
127132
const poolId = dataV4?.v4Pool?.poolId ?? dataV3?.v3Pool?.address ?? dataV2?.v2Pair?.address ?? poolIdOrAddress
128133

129134
return {

apps/web/src/appGraphql/data/pools/usePoolsFromTokenAddress.ts

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
sortPools,
77
} from 'appGraphql/data/pools/useTopPools'
88
import { useCallback, useMemo, useRef } from 'react'
9-
import { V2_DEFAULT_FEE_TIER } from 'uniswap/src/constants/pools'
9+
import { DEFAULT_TICK_SPACING, V2_DEFAULT_FEE_TIER } from 'uniswap/src/constants/pools'
1010
import {
1111
useTopV2PairsQuery,
1212
useTopV3PoolsQuery,
@@ -42,6 +42,7 @@ export function usePoolsFromTokenAddress({
4242
chain,
4343
},
4444
})
45+
4546
const {
4647
loading: loadingV3,
4748
error: errorV3,
@@ -160,7 +161,13 @@ export function usePoolsFromTokenAddress({
160161
tvl: pool.totalLiquidity?.value,
161162
feeTier: pool.feeTier,
162163
}),
163-
feeTier: pool.feeTier,
164+
feeTier: pool.feeTier
165+
? {
166+
feeAmount: pool.feeTier,
167+
tickSpacing: DEFAULT_TICK_SPACING,
168+
isDynamic: pool.isDynamicFee ?? false,
169+
}
170+
: undefined,
164171
protocolVersion: pool.protocolVersion,
165172
hookAddress: pool.hook?.address,
166173
} as TablePool
@@ -181,7 +188,13 @@ export function usePoolsFromTokenAddress({
181188
tvl: pool.totalLiquidity?.value,
182189
feeTier: pool.feeTier,
183190
}),
184-
feeTier: pool.feeTier,
191+
feeTier: pool.feeTier
192+
? {
193+
feeAmount: pool.feeTier,
194+
tickSpacing: DEFAULT_TICK_SPACING,
195+
isDynamic: false,
196+
}
197+
: undefined,
185198
protocolVersion: pool.protocolVersion,
186199
} as TablePool
187200
}) ?? []
@@ -200,7 +213,11 @@ export function usePoolsFromTokenAddress({
200213
tvl: pool.totalLiquidity?.value,
201214
feeTier: V2_DEFAULT_FEE_TIER,
202215
}),
203-
feeTier: V2_DEFAULT_FEE_TIER,
216+
feeTier: {
217+
feeAmount: V2_DEFAULT_FEE_TIER,
218+
tickSpacing: DEFAULT_TICK_SPACING,
219+
isDynamic: false,
220+
},
204221
protocolVersion: pool.protocolVersion,
205222
} as TablePool
206223
}) ?? []

apps/web/src/appGraphql/data/pools/useTopPools.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Percent } from '@uniswap/sdk-core'
22
import { OrderDirection } from 'appGraphql/data/util'
3+
import { FeeData } from 'pages/Pool/Positions/create/types'
34
import { BIPS_BASE } from 'uniswap/src/constants/misc'
45
import { ProtocolVersion, Token } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks'
56

@@ -67,7 +68,7 @@ export interface TablePool {
6768
volume30d: number
6869
apr: Percent
6970
volOverTvl: number
70-
feeTier: number
71+
feeTier: FeeData
7172
protocolVersion: ProtocolVersion
7273
hookAddress?: string
7374
boostedApr?: number

apps/web/src/components/IncreaseLiquidity/IncreaseLiquidityReview.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ export function IncreaseLiquidityReview({ onClose }: { onClose: () => void }) {
142142
analytics: {
143143
...getLPBaseAnalyticsProperties({
144144
trace,
145-
fee: feeTier,
145+
fee: feeTier?.feeAmount,
146146
tickSpacing,
147147
tickLower,
148148
tickUpper,

apps/web/src/components/IncreaseLiquidity/IncreaseLiquidityTxContext.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ export function IncreaseLiquidityTxContextProvider({ children }: PropsWithChildr
176176
pool: {
177177
token0: token0.isNative ? ZERO_ADDRESS : token0.address,
178178
token1: token1.isNative ? ZERO_ADDRESS : token1.address,
179-
fee: positionInfo.feeTier ? Number(positionInfo.feeTier) : undefined,
179+
fee: positionInfo.feeTier?.feeAmount,
180180
tickSpacing: positionInfo.tickSpacing ? Number(positionInfo.tickSpacing) : undefined,
181181
hooks: positionInfo.v4hook,
182182
},

apps/web/src/components/Liquidity/FeeTierSearchModal.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,7 @@ export function FeeTierSearchModal() {
290290
setPositionState((prevState) => ({
291291
...prevState,
292292
fee: {
293+
isDynamic: false,
293294
feeAmount: feeHundredthsOfBips,
294295
tickSpacing: calculateTickSpacingFromFeeAmount(feeHundredthsOfBips),
295296
},
@@ -390,6 +391,7 @@ export function FeeTierSearchModal() {
390391
setPositionState((prevState) => ({
391392
...prevState,
392393
fee: {
394+
isDynamic: pool.fee.isDynamic,
393395
feeAmount: pool.fee.feeAmount,
394396
tickSpacing: pool.fee.tickSpacing,
395397
},

apps/web/src/components/Liquidity/LiquidityPositionInfoBadges.test.tsx

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,38 @@
11
import { LiquidityPositionInfoBadges } from 'components/Liquidity/LiquidityPositionInfoBadges'
22
import { render } from 'test-utils/render'
3+
import { DEFAULT_TICK_SPACING } from 'uniswap/src/constants/pools'
34

45
describe('LiquidityPositionInfoBadges', () => {
56
it('should render with default size', () => {
6-
const { getByText } = render(<LiquidityPositionInfoBadges versionLabel="2" feeTier="100" size="default" />)
7+
const { getByText } = render(
8+
<LiquidityPositionInfoBadges
9+
versionLabel="2"
10+
feeTier={{ feeAmount: 100, tickSpacing: DEFAULT_TICK_SPACING, isDynamic: false }}
11+
size="default"
12+
/>,
13+
)
714
expect(getByText('2')).toBeInTheDocument()
815
})
916

1017
it('should render with small size', () => {
11-
const { getByText } = render(<LiquidityPositionInfoBadges versionLabel="2" feeTier="100" size="small" />)
18+
const { getByText } = render(
19+
<LiquidityPositionInfoBadges
20+
versionLabel="2"
21+
feeTier={{ feeAmount: 100, tickSpacing: DEFAULT_TICK_SPACING, isDynamic: false }}
22+
size="small"
23+
/>,
24+
)
1225
expect(getByText('2')).toBeInTheDocument()
1326
})
1427

1528
it('should render with multiple badges', () => {
16-
const { getByText } = render(<LiquidityPositionInfoBadges versionLabel="2" feeTier="100" size="default" />)
29+
const { getByText } = render(
30+
<LiquidityPositionInfoBadges
31+
versionLabel="2"
32+
feeTier={{ feeAmount: 100, tickSpacing: DEFAULT_TICK_SPACING, isDynamic: false }}
33+
size="default"
34+
/>,
35+
)
1736
expect(getByText('2')).toBeInTheDocument()
1837
expect(getByText('0.01%')).toBeInTheDocument()
1938
})

apps/web/src/components/Liquidity/LiquidityPositionInfoBadges.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { FeeAmount } from '@uniswap/v3-sdk'
2-
import { isDynamicFeeTierAmount } from 'components/Liquidity/utils'
1+
import { isDynamicFeeTier } from 'components/Liquidity/utils'
32
import { ZERO_ADDRESS } from 'constants/misc'
3+
import { FeeData } from 'pages/Pool/Positions/create/types'
44
import { useMemo } from 'react'
55
import { useTranslation } from 'react-i18next'
66
import { CopyHelper } from 'theme/components/CopyHelper'
@@ -62,7 +62,7 @@ export function LiquidityPositionInfoBadges({
6262
}: {
6363
versionLabel?: string
6464
v4hook?: string
65-
feeTier?: string | FeeAmount
65+
feeTier?: FeeData
6666
size: 'small' | 'default'
6767
}): JSX.Element {
6868
const { t } = useTranslation()
@@ -73,10 +73,10 @@ export function LiquidityPositionInfoBadges({
7373
v4hook && v4hook !== ZERO_ADDRESS
7474
? { label: v4hook, copyable: true, icon: <DocumentList color="$neutral2" size={16} /> }
7575
: undefined,
76-
feeTier !== undefined && feeTier !== '' && (typeof feeTier === 'number' || !isNaN(Number(feeTier)))
77-
? isDynamicFeeTierAmount(feeTier)
76+
feeTier
77+
? isDynamicFeeTier(feeTier)
7878
? { label: t('common.dynamic') }
79-
: { label: `${Number(feeTier) / 10000}%` }
79+
: { label: `${feeTier.feeAmount / 10000}%` }
8080
: undefined,
8181
].filter(Boolean) as BadgeData[]
8282
}, [versionLabel, v4hook, feeTier, t])

0 commit comments

Comments
 (0)