Repository navigation
🚀 New Features
- Scale ERC-8056 token amounts by the token's UI multiplier by @tom2drum in #3700
- Add OP Stack transaction type labels by @nonsense in #3659
- Add PostHog as an optional product analytics provider by @tom2drum in #3755
🐛 Bug Fixes
- Show the transaction not-found screen on every tab, not only Details by @tom2drum in #3709
- Fix the home page RPC fallback not starting when only one widget loses its API data by @tom2drum in #3713
- Fix address highlight getting stuck after a brief first hover by @tom2drum in #3714
- Fix the white flash on reload for explorers with a default dark theme by @tom2drum in #3717
- Prefer the configured default color theme over the OS preference on a first visit by @tom2drum in #3741
- Fix React bugs surfaced by the React Doctor backlog scan by @tom2drum in #3716
- Allow Google Ad Manager hosts for Sevio ad zones in the CSP by @tom2drum in #3725
- Stop the server-side pageview ping from logging unhandled rejections when it fails by @tom2drum in #3718
- Open external marketplace dapps directly instead of embedding them by @tom2drum in #3729
- Fix withdrawals counter showing the sum in wei instead of the native coin by @tom2drum in #3762
- Fix the white flash on reload in Firefox for explorers with a dark theme by @tom2drum in #3763
- Fix code editor crash when contract sources repeat a file path by @tom2drum in #3765
- Fix search on the bridged tokens tab when cross-chain txs are enabled by @tom2drum in #3769
⚡ Performance Improvements
- Make the URL the single source of truth for paginated lists and stop redundant requests on navigation by @tom2drum in #3698
📦 Dependencies Updates
- Upgrade Node.js to v24, pnpm to v12 and Vitest to v5 by @tom2drum in #3721
- Bump Next.js to v16.3.5 by @tom2drum in #3739
🛠️ DX & Tooling
- Unify text truncation behind a single Truncate primitive by @tom2drum in #3660
- Reserve the .tsx extension for files that contain JSX by @tom2drum in #3676
- Rewrite the tools/ scripts in TypeScript so they are type-checked, tested and gated by @tom2drum in #3694
- Add a cognitive-complexity and CRAP-score CI gate by @tom2drum in #3670
- Restructure the code-complexity tool into pipeline stages by @tom2drum in #3677
- Measure test assertion strength with mutation testing by @tom2drum in #3678
- Enforce the app-config convention with ESLint rules by @tom2drum in #3699
- Select Playwright component tests with Playwright's --only-changed and rebalance the CI matrix by @tom2drum in #3707
- Add a React Doctor check that blocks pull requests on new React bugs ESLint misses by @tom2drum in #3715
- Make flaky Playwright component tests deterministic by @tom2drum in #3742
- Add a Slack reply watcher to the product-task workflow by @tom2drum in #3662
- Rework the review skills: explicit inputs, a task-folder output mode, and a restyled PR review by @tom2drum in #3690
- Pilot a typed-judgment screen as a fourth subagent in the agent code review by @tom2drum in #3726
- Replace the per-axis word cap in the agent code review with a per-finding cap by @tom2drum in #3727
- Collect Slack message conventions in an on-demand agent doc by @tom2drum in #3730
🎨 Design Updates
- Neutral default colors for selected elements, navigation and top bar by @tom2drum in #3736
- Replace mobile list views with table views across the app by @tom2drum in #3723
- Update styles for "In/Out/Self" badges by @tom2drum in #3672
- UI: Display of statistics tiles on mobile by @tom2drum in #3735
- Allow choosing full or icon view per multichain portfolio provider and drop the promo flag by @tom2drum in #3734
- Make the app action button a header element on token, NFT and transaction pages by @tom2drum in #3738
✨ Other Changes
- Scope every interchain request to the deployment's slice of the shared indexer by @tom2drum in #3679
- Support the xDai bridge and native tokens in cross-chain transactions by @tom2drum in #3744
- Take cross-chain list totals and the 24h widget from the stats service instead of the interchain indexer by @tom2drum in #3703
- Migrate Swap to the official LI.FI widget by @maxaleks in #3710
- Surface batch-transaction recipients in the tx details To & Value fields by @tom2drum in #3664
- Add token-transfer tooltips to advanced filter from/to addresses by @Sophran-fbj in #3701
- Main page stats failover improvements by @tom2drum in #3673
- Track header banner link clicks in Mixpanel by @ulyanas in #3719
🚨 Changes in ENV variables
- #3679
- Added
NEXT_PUBLIC_CROSS_CHAIN_TXS_BRIDGE_IDSto state which bridges' messages and transfers a deployment is allowed to show (its slice of the shared interchain indexer). Required when the cross-chain transactions feature is enabled; an instance with the feature on and no bridge ids fails startup validation. - Added
NEXT_PUBLIC_CROSS_CHAIN_TXS_INCLUDE_UNINDEXED_CHAINSto also show rows whose counterparty chain is not indexed by any configured bridge. Optional, defaults tofalse. NEXT_PUBLIC_INTERCHAIN_INDEXER_API_HOSTmust be repointed at the shared interchain indexer instance of the environment.
- Added
- #3710
- The
swapentry ofNEXT_PUBLIC_MARKETPLACE_ESSENTIAL_DAPPS_CONFIGnow useschains,feeandintegratorproperties. The legacyurlproperty is still accepted but ignored: Swap now always uses the official LI.FI hosted widget, so custom Swap iframe URLs no longer take effect.
- The
- #3734
- Extended items of
NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIGwith an optionalview: 'full' | 'icon'property to choose the full or icon-only button view per provider (defaultfull). - Removed the
promoproperty fromNEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIGitems. Configs still carrying it keep validating, the flag is ignored.
- Extended items of
- #3738
- Removed
NEXT_PUBLIC_TOKEN_ACTION_BUTTON_CONFIG(added in #3692). The token action button is now driven by the metadata service (appActionButton*fields of a protocol tag). An instance still setting the variable fails startup validation.
- Removed
- #3744
- No variables added or changed. Instances that should show the xDai bridge need its bridge id added to
NEXT_PUBLIC_CROSS_CHAIN_TXS_BRIDGE_IDS.
- No variables added or changed. Instances that should show the xDai bridge need its bridge id added to
- #3755
- Added
NEXT_PUBLIC_POSTHOG_API_KEY: a PostHog project API key. Setting it enables PostHog as an analytics provider. - Added
NEXT_PUBLIC_POSTHOG_CONFIG_OVERRIDES: JSON merged over the default PostHog SDK config. It is only allowed when the API key is set.
- Added
Full list of the ENV variables: v2.12.0
💑 Compatibility
This release raises the minimum required version of the following API services:
| Service | Version |
|---|---|
| Blockscout API | v12.0.0 |
| Stats microservice API | v2.19.1 |
| Interchain indexer microservice API | v1.11.0 |
🦄 New Contributors
- @Sophran-fbj made their first contribution in #3701
- @ulyanas made their first contribution in #3719
- @nonsense made their first contribution in #3659
Full Changelog: v2.11.5...v2.12.0