Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
f7fff39
disabled sheet overlay for performance improvements
pettinarip Aug 19, 2025
baa3078
calc filtered locales outside of the component
pettinarip Aug 19, 2025
bfc7d85
disable dialog overlay for performance improvements
pettinarip Aug 20, 2025
b965e5d
reorder nav to enable server rendering
pettinarip Aug 20, 2025
9f13310
refactor mobile menu to implement rsc as much as possible
pettinarip Aug 20, 2025
9a753de
refactor MenuFooter to be server rendered
pettinarip Aug 20, 2025
38c1c6d
refactor the LanguagePicker to precompute the languages list on the s…
pettinarip Aug 21, 2025
a0151bf
add navigation links lib
pettinarip Aug 22, 2025
aecae90
moblie menu
pettinarip Aug 22, 2025
74e00e1
remove back button
pettinarip Aug 22, 2025
7c0d78e
cleanup
pettinarip Aug 22, 2025
24db038
refactor mobile nav
pettinarip Aug 25, 2025
5bb9623
compute progress on the server
pettinarip Aug 25, 2025
6d6fb13
seo: external links are broken (semrush)
corwintines Aug 25, 2025
65ae384
use collapsible instead of accordion
pettinarip Aug 28, 2025
5aaaa6d
active link styles
pettinarip Aug 28, 2025
849c001
track matomo events
pettinarip Aug 28, 2025
56e96bd
nav: lazy render & loading skeletons
pettinarip Aug 28, 2025
2049df8
hide sheet overlay only for the mobile menu
pettinarip Aug 28, 2025
6b75608
implement SheetDismiss to close menu when a link is clicked
pettinarip Aug 28, 2025
00db348
Merge branch 'staging' into optimize-nav
pettinarip Aug 28, 2025
19f73bd
cleanup duplicated code
pettinarip Aug 28, 2025
f0638e5
create a new sheet component to close on navigation
pettinarip Aug 28, 2025
fa9099e
refactor lang picker to share code between desktop and mobile versions
pettinarip Aug 29, 2025
4fd1b18
remove code duplication for the nav links
pettinarip Aug 29, 2025
2699afd
use intl navigation hooks
pettinarip Aug 29, 2025
59b9d46
fix intl in sc
pettinarip Aug 29, 2025
d007c11
remove unnecessary p tags
pettinarip Aug 29, 2025
0b94574
fix rtl support in mobile menu tab content
pettinarip Aug 29, 2025
ba34098
fix hydration issue with media queries
pettinarip Aug 30, 2025
75d3c7e
update openLanguagePickerMobile function with correct test id
pettinarip Sep 1, 2025
afec995
move localeToDisplayInfo function to lib
pettinarip Sep 1, 2025
7fd2a85
cleanup redundant code component
pettinarip Sep 1, 2025
f8f3f5e
reorg menu footer buttons and replace the serach with menu button
pettinarip Sep 1, 2025
3575feb
change locale prefix to as-needed
pettinarip Aug 11, 2025
9abbf1e
normalize matomo tracking paths for analytics consistency
pettinarip Aug 11, 2025
25a7b20
simplify pathname normalization
pettinarip Sep 1, 2025
dfe2637
update sitemap and metadata to new url structure
pettinarip Sep 2, 2025
4a26a35
Merge pull request #16129 from ethereum/seoWarningsExternalLinksAreBr…
corwintines Sep 3, 2025
b022ce6
Merge pull request #16050 from ethereum/remove-fixed-locale
wackerow Sep 3, 2025
92ffc7f
highlight selected footer button in menu
pettinarip Sep 3, 2025
f085e00
Merge pull request #16111 from ethereum/optimize-nav
pettinarip Sep 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,8 @@ import DappWorldImage from "@/public/images/dev-tools/dapp-world.png"
import EthDotBuildImage from "@/public/images/dev-tools/eth-dot-build.png"
import LearnWeb3Image from "@/public/images/dev-tools/learnweb3.png"
import MetaschoolImage from "@/public/images/dev-tools/metaschool.png"
import NFTSchoolImage from "@/public/images/dev-tools/nftschool.png"
import NodeGuardiansImage from "@/public/images/dev-tools/node-guardians.jpg"
import EthernautImage from "@/public/images/dev-tools/oz.png"
import PlatziImage from "@/public/images/dev-tools/platzi.png"
import QuestbookImage from "@/public/images/dev-tools/questbook.png"
import RemixImage from "@/public/images/dev-tools/remix.png"
import ReplitImage from "@/public/images/dev-tools/replit.png"
Expand Down Expand Up @@ -317,33 +315,6 @@ const LearningToolsPage = () => {
background: "#f6f7f9",
subjects: ["Solidity", "web3"],
},
{
name: "NFT School",
description: t(
"page-developers-learning-tools:page-learning-tools-nftschool-description"
),
url: "https://nftschool.dev/",
image: NFTSchoolImage,
alt: t(
"page-developers-learning-tools:page-learning-tools-nftschool-logo-alt"
),
background: "#111f29",
subjects: ["Solidity", "web3"],
},
{
name: "Platzi",
description: t(
"page-developers-learning-tools:page-learning-tools-platzi-description"
),
url: "https://platzi.com/escuela/escuela-blockchain/",
image: PlatziImage,
alt: t(
"page-developers-learning-tools:page-learning-tools-platzi-logo-alt"
),
background: "#121f3d",
subjects: ["Solidity", "web3"],
locales: ["es"],
},
{
name: "Speed Run Ethereum",
description: t(
Expand Down
2 changes: 1 addition & 1 deletion app/[locale]/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ export default async function LocaleLayout({
// Enable static rendering
setRequestLocale(locale)

const allMessages = await getMessages({ locale })
const allMessages = await getMessages()
const messages = pick(allMessages, "common")

const lastDeployDate = getLastDeployDate()
Expand Down
1 change: 1 addition & 0 deletions app/[locale]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ const Page = async ({ params }: { params: Promise<{ locale: Lang }> }) => {
if (!LOCALES_CODES.includes(locale)) return notFound()

setRequestLocale(locale)

const t = await getTranslations({ locale, namespace: "page-index" })
const tCommon = await getTranslations({ locale, namespace: "common" })
const { direction: dir, isRtl } = getDirection(locale)
Expand Down
11 changes: 0 additions & 11 deletions app/[locale]/resources/utils.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -548,17 +548,6 @@ export const getResources = async ({
},
],
},
{
title: t("page-resources-mempool-title"),
items: [
{
title: "Ethereum Mempool Dashboard",
description: t("page-resources-mempool-mempool-description"),
href: "https://mempool.pics",
imgSrc: IconEthGlyphBlueCircle,
},
],
},
]

const resources = [
Expand Down
18 changes: 16 additions & 2 deletions next-sitemap.config.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,30 @@
const i18nConfig = require("./i18n.config.json")
const locales = i18nConfig.map(({ code }) => code)

const defaultLocale = "en"

/** @type {import('next-sitemap').IConfig} */
module.exports = {
siteUrl: process.env.SITE_URL || "https://ethereum.org",
generateRobotsTxt: true,
transform: async (_, path) => {
const rootPath = path.split("/")[1]
if (path.endsWith("/404")) return null
const isDefaultLocale = !locales.includes(rootPath) || rootPath === "en"
const isDefaultLocale =
!locales.includes(rootPath) || rootPath === defaultLocale

// Strip default-locale (en) prefix from paths; drop the `/en` root entry
let loc = path
if (rootPath === defaultLocale) {
// Drop the `/en` root entry to avoid duplicating `/`
if (path === `/${defaultLocale}` || path === `/${defaultLocale}/`)
return null
const defaultLocalePrefix = new RegExp(`^/${defaultLocale}(/|$)`)
loc = path.replace(defaultLocalePrefix, "/")
}

return {
loc: path,
loc,
changefreq: isDefaultLocale ? "weekly" : "monthly",
priority: isDefaultLocale ? 0.7 : 0.5,
}
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
"@radix-ui/react-accordion": "^1.2.0",
"@radix-ui/react-avatar": "^1.1.2",
"@radix-ui/react-checkbox": "^1.1.1",
"@radix-ui/react-collapsible": "^1.1.12",
"@radix-ui/react-compose-refs": "^1.1.0",
"@radix-ui/react-dialog": "^1.1.1",
"@radix-ui/react-dropdown-menu": "^2.1.1",
Expand Down
60 changes: 60 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions public/content/bridges/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ Many bridging solutions adopt models between these two extremes with varying deg

Using bridges allows you to move your assets across different blockchains. Here are some resources that can help you find and use bridges:

- **[L2BEAT Bridges Summary](https://l2beat.com/bridges/summary) & [L2BEAT Bridges Risk Analysis](https://l2beat.com/bridges/risk)**: A comprehensive summary of various bridges, including details on market share, bridge type, and destination chains. L2BEAT also has a risk analysis for bridges, helping users make informed decisions when selecting a bridge.
- **[L2BEAT Bridges Summary](https://l2beat.com/bridges/summary) & [L2BEAT Bridges Risk Analysis](https://l2beat.com/bridges/summary)**: A comprehensive summary of various bridges, including details on market share, bridge type, and destination chains. L2BEAT also has a risk analysis for bridges, helping users make informed decisions when selecting a bridge.
- **[DefiLlama Bridge Summary](https://defillama.com/bridges/Ethereum)**: A summary of bridge volumes across Ethereum networks.

<Divider />
Expand Down Expand Up @@ -134,6 +134,6 @@ Bridges are crucial to onboarding users onto Ethereum L2s, and even for users wh
- [EIP-5164: Cross-Chain Execution](https://ethereum-magicians.org/t/eip-5164-cross-chain-execution/9658) - _June 18, 2022 - Brendan Asselstine_
- [L2Bridge Risk Framework](https://gov.l2beat.com/t/l2bridge-risk-framework/31) - _July 5, 2022 - Bartek Kiepuszewski_
- ["Why the future will be multi-chain, but it will not be cross-chain."](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/) - _January 8, 2022 - Vitalik Buterin_
- [Harnessing Shared Security For Secure Cross-Chain Interoperability: Lagrange State Committees And Beyond](https://research.2077.xyz/harnessing-shared-security-for-secure-blockchain-interoperability) - _June 12, 2024 - Emmanuel Awosika_
- [The State Of Rollup Interoperability Solutions](https://research.2077.xyz/the-state-of-rollup-interoperability) - _June 20, 2024 - Alex Hook_
- [Harnessing Shared Security For Secure Cross-Chain Interoperability: Lagrange State Committees And Beyond](https://web.archive.org/web/20250125035123/https://research.2077.xyz/harnessing-shared-security-for-secure-blockchain-interoperability) - _June 12, 2024 - Emmanuel Awosika_
- [The State Of Rollup Interoperability Solutions](https://web.archive.org/web/20250428015516/https://research.2077.xyz/the-state-of-rollup-interoperability) - _June 20, 2024 - Alex Hook_

2 changes: 0 additions & 2 deletions public/content/community/get-involved/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,6 @@ The Ethereum ecosystem is on a mission to fund public goods and impactful projec
- [Web3 Army](https://web3army.xyz/)
- [Crypto Valley Jobs](https://cryptovalley.jobs/)
- [Ethereum Jobs](https://startup.jobs/ethereum-jobs)
- [CryptoJobster](https://cryptojobster.com/tag/ethereum/)

## Join a DAO {#decentralized-autonomous-organizations-daos}

Expand All @@ -126,7 +125,6 @@ The Ethereum ecosystem is on a mission to fund public goods and impactful projec
- [dOrg](https://dOrg.tech) [@dOrg_tech](https://twitter.com/dOrg_tech) - _Freelancer Web3 development collective working as a DAO_
- [HausDAO](https://daohaus.club) [@nowdaoit](https://twitter.com/nowdaoit) - _Community governance of DAOhaus_
- [LexDAO](https://lexdao.org) [@lex_DAO](https://twitter.com/lex_DAO) - _Legal engineering_
- [Machi X](https://machix.com) [@MachiXOfficial](https://twitter.com/MachiXOfficial) - _Art community_
- [MetaCartel Ventures](https://metacartel.xyz) [@VENTURE_DAO](https://twitter.com/VENTURE_DAO) - _Venture for pre-seed crypto projects_
- [MetaGame](https://metagame.wtf) [@MetaFam](https://twitter.com/MetaFam) - _MMORPG Game Mechanics for Real Life_
- [MetaFactory](https://metafactory.ai) [@TheMetaFactory](https://twitter.com/TheMetaFactory) - _Digiphysical Apparel Brands_
Expand Down
4 changes: 2 additions & 2 deletions public/content/community/research/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ Economics research in Ethereum broadly follows two approaches: validate the secu

#### Background reading {#background-reading-9}

- [Robust Incentives Group](https://ethereum.github.io/rig/)
- [Robust Incentives Group](https://rig.ethereum.org/)
- [ETHconomics workshop at Devconnect](https://www.youtube.com/playlist?list=PLTLjFJ0OQOj5PHRvA2snoOKt2udVsyXEm)

#### Recent research {#recent-research-9}
Expand Down Expand Up @@ -307,7 +307,7 @@ There is a need for more data analysis tools and dashboards that give detailed i

#### Recent research {#recent-research-14}

- [Robust Incentives Group Data Analysis](https://ethereum.github.io/rig/)
- [Robust Incentives Group Data Analysis](https://rig.ethereum.org/)

## Apps and tooling {#apps-and-tooling}

Expand Down
1 change: 0 additions & 1 deletion public/content/community/support/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@ Building can be hard. Here are some development focused spaces with experienced
- [Alchemy University](https://university.alchemy.com/#starter_code)
- [CryptoDevs discord](https://discord.com/invite/5W5tVb3)
- [Ethereum StackExchange](https://ethereum.stackexchange.com/)
- [StackOverflow](https://stackoverflow.com/questions/tagged/web3)
- [Web3 University](https://www.web3.university/)
- [LearnWeb3](https://discord.com/invite/learnweb3)

Expand Down
2 changes: 1 addition & 1 deletion public/content/contributing/design-principles/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,6 @@ You can see our design principles in action [across our site](/).

**Share your feedback on this document!** One of our proposed principles is “**Collaborative Improvement**” which means that we want the website to be the product of many contributors. So in the spirit of that principle, we want to share these design principles with the Ethereum community.

While these principles are focused on the ethereum.org website, we hope that many of them are representative of the values of the Ethereum ecosystem overall (e.g. you can see influence from the [principles of the Ethereum Whitepaper](https://github.com/ethereum/wiki/wiki/White-Paper#philosophy)). Maybe you even want to incorporate some of them into your own project!
While these principles are focused on the ethereum.org website, we hope that many of them are representative of the values of the Ethereum ecosystem overall. Maybe you even want to incorporate some of them into your own project!

Let us know your thoughts on [Discord server](https://discord.gg/ethereum-org) or by [creating an issue](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=).
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@ You can find some useful guides and tools for ethereum.org translators, as well

## Tools {#tools}

- [Microsoft Language Portal](https://www.microsoft.com/en-us/language)
_– useful for finding and checking the standard translations of technical terms_
- [Linguee](https://www.linguee.com/)
_– search engine for translations and dictionary that enables searching by word or phrase_
- [Proz term search](https://www.proz.com/search/)
Expand Down
1 change: 0 additions & 1 deletion public/content/desci/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,6 @@ Explore projects and join the DeSci community.
- [Molecule: Fund and get funded for your research projects](https://www.molecule.xyz/)
- [VitaDAO: receive funding through sponsored research agreements for longevity research](https://www.vitadao.com/)
- [ResearchHub: post a scientific result and engage in a conversation with peers](https://www.researchhub.com/)
- [LabDAO: fold a protein in-silico](https://alphafodl.vercel.app/)
- [dClimate API: query climate data collected by a decentralized community](https://www.dclimate.net/)
- [DeSci Foundation: DeSci publishing tool builder](https://descifoundation.org/)
- [DeSci.World: one-stop shop for users to view, engage with decentralized science](https://desci.world)
Expand Down
4 changes: 0 additions & 4 deletions public/content/developers/docs/apis/javascript/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -261,10 +261,6 @@ ethers.utils.formatEther(balance)

- [GitHub](https://github.com/openethereum/js-libs/tree/master/packages/light.js)

**Web3-wrapper -** **_Typescript alternative to Web3.js._**

- [Documentation](https://0x.org/docs/web3-wrapper#introduction)
- [GitHub](https://github.com/0xProject/0x-monorepo/tree/development/packages/web3-wrapper)

**Alchemyweb3 -** **_Wrapper around Web3.js with automatic retries and enhanced apis._**

Expand Down
4 changes: 2 additions & 2 deletions public/content/developers/docs/bridges/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,8 @@ To monitor contract activity across chains, developers can use subgraphs and dev
- [The Interoperability Trilemma](https://blog.connext.network/the-interoperability-trilemma-657c2cf69f17) - Oct 1, 2021 – Arjun Bhuptani
- [Clusters: How Trusted & Trust-Minimized Bridges Shape the Multi-Chain Landscape](https://blog.celestia.org/clusters/) - Oct 4, 2021 – Mustafa Al-Bassam
- [LI.FI: With Bridges, Trust is a Spectrum](https://blog.li.fi/li-fi-with-bridges-trust-is-a-spectrum-354cd5a1a6d8) - Apr 28, 2022 – Arjun Chand
- [The State Of Rollup Interoperability Solutions](https://research.2077.xyz/the-state-of-rollup-interoperability) - June 20, 2024 – Alex Hook
- [Harnessing Shared Security For Secure Cross-Chain Interoperability: Lagrange State Committees And Beyond](https://research.2077.xyz/harnessing-shared-security-for-secure-blockchain-interoperability) - June 12, 2024 – Emmanuel Awosika
- [The State Of Rollup Interoperability Solutions](https://web.archive.org/web/20250428015516/https://research.2077.xyz/the-state-of-rollup-interoperability) - June 20, 2024 – Alex Hook
- [Harnessing Shared Security For Secure Cross-Chain Interoperability: Lagrange State Committees And Beyond](https://web.archive.org/web/20250125035123/https://research.2077.xyz/harnessing-shared-security-for-secure-blockchain-interoperability) - June 12, 2024 – Emmanuel Awosika

Additionally, here are some insightful presentations by [James Prestwich](https://twitter.com/_prestwich) that can help develop a deeper understanding of bridges:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,5 +96,5 @@ Each branch is separated by a `/` so `m/2` means start with the master key and f

- [Ethereum Foundation blog post by Carl Beekhuizen](https://blog.ethereum.org/2020/05/21/keys/)
- [EIP-2333 BLS12-381 key generation](https://eips.ethereum.org/EIPS/eip-2333)
- [EIP-7002: Execution Layer Triggered Exits](https://research.2077.xyz/eip-7002-unpacking-improvements-to-staking-ux-post-merge)
- [EIP-7002: Execution Layer Triggered Exits](https://web.archive.org/web/20250125035123/https://research.2077.xyz/eip-7002-unpacking-improvements-to-staking-ux-post-merge)
- [Key management at scale](https://docs.ethstaker.cc/ethstaker-knowledge-base/scaled-node-operators/key-management-at-scale)
Loading
Loading