Skip to content

feat: Homepage 2026 redesign#17261

Merged
pettinarip merged 36 commits into
devfrom
home-redesign
Feb 19, 2026
Merged

feat: Homepage 2026 redesign#17261
pettinarip merged 36 commits into
devfrom
home-redesign

Conversation

@pettinarip
Copy link
Copy Markdown
Member

@pettinarip pettinarip commented Feb 9, 2026

Summary

Complete redesign of the ethereum.org homepage with a modern, conversion-focused layout.

New Sections

  • HomeHero2026 - Updated hero section
  • KPISection - Animated counters showing ETH holders and daily transactions
  • SavingsCarousel - Swiper carousel comparing traditional finance vs Ethereum (DeFi, remittances, borrowing)
  • TrustLogos - Enterprise adoption logos (Visa, Mastercard, PayPal, BlackRock, etc.)
  • FeatureCards - Grid highlighting Ethereum's core value props (ownership, global access, public rules)
  • SimulatorSection - Interactive wallet simulator demo
  • GetStartedGrid - CTA cards for developers, enterprises, and learners

Data Layer

  • New fetchAccountHolders fetcher (placeholder for real API)

Performance

  • Dynamic imports with Suspense for heavy client components
  • Code splitting for KPISection, SavingsCarousel, SimulatorSection
  • SEO metadata with generateMetadata

Assets

  • New homepage images in public/images/homepage/
  • Enterprise logos, feature illustrations, savings carousel images

Preview

https://deploy-preview-17261.ethereum.it/

Test plan

  • Verify all sections render correctly at /en/home-2026
  • Test KPI counter animations on scroll
  • Test savings carousel navigation (desktop and mobile)
  • Verify trust logos display correctly
  • Test simulator interaction
  • Check responsive layout on mobile/tablet/desktop
  • Verify SEO metadata in page source

- Add generateMetadata for proper SEO with localized title/description
- Convert heavy client components (KPISection, SavingsCarousel,
  SimulatorSection) to dynamic imports for code splitting
- Wrap dynamic components in Suspense with skeleton fallbacks
@github-actions github-actions Bot added the tooling 🔧 Changes related to tooling of the project label Feb 9, 2026
@pettinarip pettinarip changed the title perf(homepage-2026): add SEO metadata and dynamic imports feat: Homepage 2026 redesign Feb 9, 2026
@netlify
Copy link
Copy Markdown

netlify Bot commented Feb 9, 2026

Deploy Preview for ethereumorg ready!

Name Link
🔨 Latest commit fc7b77d
🔍 Latest deploy log https://app.netlify.com/projects/ethereumorg/deploys/6996de9522893561c1529ec0
😎 Deploy Preview https://deploy-preview-17261.ethereum.it
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
7 paths audited
Performance: 65 (🟢 up 10 from production)
Accessibility: 94 (no change from production)
Best Practices: 100 (no change from production)
SEO: 99 (🔴 down 1 from production)
PWA: 59 (no change from production)
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

@pettinarip pettinarip marked this pull request as draft February 9, 2026 18:20
Comment thread src/components/Homepage/SavingsCarousel.tsx Outdated
@konopkja
Copy link
Copy Markdown
Contributor

A/B/C Test Readiness Review — HomepageRedesign2026

This PR is the implementation for a 3-way A/B/C test (Matomo Experiment ID: 11, currently in draft). Before the test can launch, the following items need to be addressed.

Matomo Setup (Done)

  • Experiment created — ID 11, HomepageRedesign2026, 3-way split: Original (34%), Redesign1CTA (33%), Redesign4CTA (33%)
  • Goal 8Homepage CTA Click (fires on event_action = "cta_click")
  • Goal 9Homepage Scroll 50 Percent (fires on event_action = "scroll_depth")
  • Success metrics: bounce_count + nb_conversions_goal_8
  • MDE: 5%, Confidence: 95%, Target: English homepage only

Blockers — Must Fix Before Test Launch

1. Event Tracking Missing on New Components

The redesigned homepage has almost no event tracking. Only PersonaModalCTA has events (from the previous test). The following components need trackCustomEvent calls added:

GetStartedGrid (src/components/Homepage/GetStartedGrid.tsx)

  • 3 CTA cards (Learn, Developers, Enterprise) have NO tracking
  • Each card click must fire: { eventCategory: "Homepage - en", eventAction: "cta_click", eventName: "learn_ethereum" | "start_building" | "explore_enterprise" }
  • This is critical — Goal 8 (cta_click) is a primary success metric. Without this, the test cannot measure CTA engagement.

FeatureCards (src/components/Homepage/FeatureCards.tsx)

  • "Learn more" ButtonLink has no customEventOptions
  • Should fire: { eventCategory: "Homepage - en", eventAction: "section_click", eventName: "learn_more_features" }

SavingsCarousel (src/components/Homepage/SavingsCarousel.tsx)

  • No slide navigation tracking (compare: original homepage tracks mobile use cases swipes)
  • No CTA link click tracking for /defi/, /stablecoins/, /apps/categories/defi/
  • Should fire on slide change: { eventCategory: "Homepage - en", eventAction: "carousel_swipe", eventName: "{slide.id}" }
  • Should fire on CTA click: { eventCategory: "Homepage - en", eventAction: "section_click", eventName: "{slide.id}" }

2. Scroll Depth Tracking

No scroll depth tracking exists in the redesign. Need an IntersectionObserver-based component that fires once per session at each threshold:

// Fire these events as user scrolls
{ eventCategory: "Homepage - en", eventAction: "scroll_depth", eventName: "25" }
{ eventCategory: "Homepage - en", eventAction: "scroll_depth", eventName: "50" }  // Triggers Goal 9
{ eventCategory: "Homepage - en", eventAction: "scroll_depth", eventName: "75" }
{ eventCategory: "Homepage - en", eventAction: "scroll_depth", eventName: "100" }

3. Section Visibility Tracking

To measure which sections users actually see (not just click), add IntersectionObserver tracking for each section:

{ eventCategory: "Homepage - en", eventAction: "section_view", eventName: "hero" | "kpi" | "savings_carousel" | "trust_logos" | "feature_cards" | "simulator" | "get_started" }

Fire once per section per session when the section is visible for >1 second.

4. Fix eventCategory Inconsistency

PersonaModalCTA receives eventCategory="Homepage" from HomeHero2026, but the original homepage uses "Homepage - en" (with locale suffix). This will make cross-variation analysis difficult.

Fix in HomeHero2026/index.tsx:

- <PersonaModalCTA eventCategory="Homepage" />
+ <PersonaModalCTA eventCategory="Homepage - en" />

Or better: pass the locale dynamically.

5. Modal Close Tracking

PersonaModalCTA tracks modal_open (via "start here" event) and modal_select (via per-option events), but does NOT track modal_close — when a user closes without selecting. This is needed to measure the funnel drop-off rate (was 22.7% in the previous test).

Add to handleOpenChange when open === false and no selection was made:

{ eventCategory: "Homepage - en", eventAction: "modal_close", eventName: "persona_modal" }

6. Variation C (4-CTA) Does Not Exist Yet

This PR only implements the 1-CTA modal version (Variation B). The 4-CTA version (Variation C) — with Learn Ethereum, Get ETH, Try Apps, Start Building as direct buttons — still needs to be built. This is the version that swaps the first CTA from "Find Wallet" to "Learn Ethereum" based on the previous test's finding that /what-is-ethereum/ had +122% demand.

Each button must fire: { eventCategory: "Homepage - en", eventAction: "cta_click", eventName: "learn_ethereum" | "get_eth" | "try_apps" | "start_building" }

7. Dynamic Rendering for A/B Testing

The previous A/B test was broken for 2 days because the homepage was statically generated (SSG) and ABTestWrapper calls headers() which requires dynamic rendering. The error was silently caught, causing all users to see the Original.

When integrating this with ABTestWrapper, either:

  • Option A (recommended): Use Edge Middleware to compute variant and pass via header — page stays ISR-cacheable
  • Option B (quick): Add export const dynamic = "force-dynamic" to the page — kills all caching for the test duration

Reference PRs: #17192, #17194 (hotfixes for this exact issue)

Pre-Launch Checklist

Before activating the experiment (via Matomo UI or AbTesting.startExperiment):

  • All event tracking from above is implemented and verified in Real-Time Visitor Log
  • Variation C (4-CTA redesign) is built
  • ABTestWrapper integration with testKey="HomepageRedesign2026" renders all 3 variants
  • Dynamic rendering configured (Edge Middleware or force-dynamic)
  • Distribution validated — run 10K+ sample fingerprints through FNV-1a hash, verify 33/33/34 ±1%
  • 3 Matomo segments pre-saved and tested (Original, Redesign1CTA, Redesign4CTA)
  • Baseline metrics captured for the 2 weeks prior to launch
  • Guardrails agreed: kill if bounce >+3pts, /get-eth/ traffic >-50%, forward nav >-10%

Reference

@pettinarip pettinarip marked this pull request as ready for review February 13, 2026 14:48
Add bot detection to prevent search engine indexing fluctuation
and ensure consistent social media link previews during A/B tests.
Bots receive the original variant per Google's A/B testing guidelines.

Ref: https://developers.google.com/search/docs/advanced/guidelines/cloaking
Copy link
Copy Markdown
Member

@wackerow wackerow left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking good overall! Just left a few comments, but should be able to get this in very soon

Comment thread src/components/Homepage/SavingsCarousel.tsx Outdated
Comment thread src/components/Homepage/FeatureCards.tsx Outdated
</div>

<div className="mx-auto grid w-full max-w-[76rem] gap-8 md:grid-cols-2 lg:grid-cols-3">
{cards.map((card) => (
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Noticing a small (non-blocking) bug related to the LinkBox... can't select any text inside. Not necessarily an issue, but felt a little awkward. Out-of-scope for this PR though

Comment thread src/components/Homepage/GetStartedGrid.tsx Outdated
Comment on lines +109 to +114
<Image
src={freeAccessImage}
alt=""
sizes="(max-width: 768px) 50vw, (max-width: 1024px) 33vw, 300px"
className="absolute -bottom-6 -right-8 h-2/3 w-auto object-contain"
/>
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image

Just noting occasional overlap with image/text at some view points

Comment thread src/components/Homepage/TrustLogos.tsx Outdated
Comment thread src/components/Homepage/TrustLogos.tsx Outdated
Comment thread src/components/Homepage/KPISection.tsx Outdated
strokeWidth={1.5}
/>
<div className="flex flex-col gap-1">
<AnimatedNumber
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❤️

@pettinarip pettinarip merged commit a155de9 into dev Feb 19, 2026
6 checks passed
@pettinarip pettinarip deleted the home-redesign branch February 19, 2026 13:28
@pettinarip pettinarip mentioned this pull request Feb 19, 2026
@pettinarip pettinarip mentioned this pull request Feb 27, 2026
pettinarip added a commit that referenced this pull request Mar 9, 2026
The A/B test has concluded. This reverts the test infrastructure from
#17261 and #17294 while preserving the Homepage2026 component code.

Changes reverted:
- Remove ABTestWrapper, ScrollDepthTracker, TrackedSection wrappers
- Remove force-dynamic rendering and .catch() graceful degradation
- Restore original error handling (throw on missing data)
- Restore original event names and action labels
- Remove getAccountHolders fetch (only used by redesign variants)
pettinarip added a commit that referenced this pull request Apr 14, 2026
Replace the old homepage with the Homepage2026 component that won the
A/B/C test (PR #17261). The components were already in the codebase
from the test; this wires them up as the permanent homepage.

Key changes:
- page.tsx simplified to render Homepage2026 directly
- Hero heading updated to "The internet that belongs to you"
- Persona modal restructured: Beginners, Explorers, Builders (+ Enterprise on mobile)
- Privacy carousel slide replaces DeFi savings slide
- Trust section copy updated, logos removed per final Figma design
- Simulator section moved before Feature Cards per Figma order
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

tooling 🔧 Changes related to tooling of the project

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants