'use client' import { AnimatedCounter } from '../AnimatedCounter' import { AnimatedGridBackground } from '../AnimatedGridBackground' type HeroStat = { headline: string number: number increment: number intervalMs: number } const heroStats: HeroStat[] = [ { headline: 'More databases created in 2025 than in all previous years combined', number: 15_106_212, increment: 1, intervalMs: 1000, }, { headline: 'Projects created', number: 11_808_815, increment: 1, intervalMs: 500, }, { headline: 'Realtime messages delivered', number: 280_355_288_012, increment: 1931, intervalMs: 200, }, ] type GridStat = { headline: string number: number increment: number suffix?: string prefix?: string } const gridStats: GridStat[] = [ { headline: 'Peak concurrent Realtime connections', number: 193_942, increment: 0, }, { headline: 'Edge Functions invoked', number: 49_632_206_530, increment: 1_709, }, { headline: 'Images transformed via Storage', number: 64_454_990, increment: 2, }, { headline: 'Petabytes stored', number: 64.5, increment: 0, suffix: 'PB', }, { headline: 'Petabytes served', number: 19.3, increment: 0, suffix: 'PB', }, { headline: 'One of the top 100 repos on Github', number: 94_500, increment: 0, suffix: 'stars', }, { headline: 'paid to fund open source', number: 662_357.71, increment: 0, prefix: '$', suffix: 'USD', }, { headline: 'Commits to our repos by community members', number: 1_421, increment: 0, }, ] export const Devs = () => { return ( <>
{/* Grid background */} {/* Content */}

Devs love Supabase

In 2025, developers around the world shipped faster, scaled further, and built things we never imagined. Here is what you accomplished on Supabase.

{/* Hero stats */} {heroStats.map((stat) => (

{stat.headline}

))} {/* Stats grid */}
{(() => { const cols = 4 const remainder = gridStats.length % cols const emptyCells = remainder === 0 ? 0 : cols - remainder return ( <> {gridStats.map((stat) => (

0 ? 'text-primary' : 'text-foreground'}`} > {stat.suffix ? ( <> {stat.prefix} {new Intl.NumberFormat('en-US', { notation: 'compact', maximumFractionDigits: stat.number % 1 !== 0 ? 2 : 0, minimumFractionDigits: stat.number % 1 !== 0 ? 1 : 0, }) .format(stat.number) .toLowerCase()} {stat.suffix} ) : ( )}

{stat.headline}

))} {Array.from({ length: emptyCells }).map((_, i) => (
))} ) })()}
) }