/* global React, Icons, Badge, Btn, Pill, Meter, Score, Stat, Eyebrow */ const { useState } = React; /* ========================================================================= PLATFORM STRATEGY — maintained database ========================================================================= */ // Numbers per Streams Charts Q1 2026 (hours-watched basis). The Q1 story // flipped the "Twitch in decline" narrative: Twitch +4.46% QoQ, TikTok Live // −11.92%. Shares normalised to 100; QoQ deltas explicit because the // trajectory matters more than the snapshot. const PLATFORMS = [ { id: 'tiktok', name: 'TikTok Live', color: '#FF2D6F', share: '42%', qoq: '−11.92%', qoqTone: 'warn', icon: Icons.tiktok, bitrate: 'App-controlled', vertical: 'Native', monetize: 'Gifts + Subs', payout: '50/50', rev: 'Mid', irl: 7.6, notes: 'Still largest by hours watched, but contracting QoQ. Best treated as a discovery surface — not the default platform.', eligibility: '1,000 followers', updated: 'May 12 ’26', badge: 'updated', }, { id: 'twitch', name: 'Twitch', color: '#9146FF', share: '32%', qoq: '+4.46%', qoqTone: 'good', icon: Icons.twitch, bitrate: '6 Mbps · 1080p60', vertical: 'Dual-format · 2026', monetize: 'Sub + Bits + Ads', payout: '50/50 → 70/30', rev: 'Mid–High', irl: 9.4, notes: 'Monetization-for-All (May ’26) + dual-format vertical + Rewind + March ’26 mobile disconnect buffer make Twitch the natural IRL default again.', eligibility: 'Affiliate at 50 followers / 8 hrs / 7 unique days', updated: 'May 14 ’26', }, { id: 'youtube', name: 'YouTube Live', color: '#FF0033', share: '17%', qoq: '+1.20%', qoqTone: 'good', icon: Icons.youtube, bitrate: '8 Mbps · 1080p60', vertical: 'Yes', monetize: 'Super Chat + Ads + Members', payout: '55/45', rev: 'High', irl: 8.6, notes: 'Best long-tail VOD retention and clip-to-Shorts flywheel. Stable creator economy.', eligibility: '500 subs / 3,000 watch hrs', updated: 'May 09 ’26', }, { id: 'kick', name: 'Kick', color: '#53FC18', share: '6%', qoq: '+9.10%', qoqTone: 'good', icon: Icons.kick, bitrate: '8 Mbps · 1080p60', vertical: 'Limited', monetize: 'Sub + Tip', payout: '95/5', rev: 'Mid', irl: 8.2, notes: '95/5 sub split, ~$4.40 net per $5 sub. Community guidelines rewrote 2026. Fastest-growing platform QoQ.', eligibility: 'Open', updated: 'May 06 ’26', }, { id: 'fb', name: 'Facebook Live', color: '#1877F2', share: '2%', qoq: '−2.40%', qoqTone: 'warn', icon: Icons.globe, bitrate: '4 Mbps · 1080p', vertical: 'Yes', monetize: 'Stars + Ads', payout: '55/45', rev: 'Low', irl: 6.0, notes: 'Marginal for IRL. Useful for cross-posting to older audiences.', eligibility: '60K min watch / 60 days', updated: 'May 04 ’26', }, { id: 'x', name: 'X Live', color: '#FFFFFF', share: '1%', qoq: '+0.10%', qoqTone: 'good', icon: Icons.globe, bitrate: 'Variable', vertical: 'Yes', monetize: 'Subscription · ads', payout: '—', rev: 'Low', irl: 5.4, notes: 'Experimental. Volatile policy. Payout rate variance $3–$12 per 1M impressions. Don’t depend on it.', eligibility: 'Premium account', updated: 'Apr 28 ’26', }, ]; const PlatformsPage = () => { const [active, setActive] = useState('twitch'); const a = PLATFORMS.find(p => p.id === active); return (
{/* HEADER */}
Live database · Q1 2026 · Streams Charts

Where you stream
changes everything.

Six platforms, side by side. We re-verify monetization splits, bitrate caps, and eligibility every month. Static tables on other sites are already wrong.

Independent Monthly verify
{/* MARKET SHARE STRIP */}
Q1 ’26 · Hours-watched share · QoQ trajectory matters more than the snapshot SOURCE · STREAMS CHARTS Q1 ’26
{PLATFORMS.map(p => { const pct = parseFloat(p.share); return ( ); })}
{PLATFORMS.map(p => ( {p.name} · {p.share} {p.qoq} QoQ ))}
{/* DETAIL */}
{/* sidebar */}
Pick a platform
{PLATFORMS.map(p => { const Icon = p.icon; return ( ); })}
{/* detail */}
{/* hero */}

{a.name}

Updated {a.updated} · {a.share} market share
{a.badge && {a.badge}} Live data

{a.notes}

{/* facts */}
{[ { l: 'Bitrate cap', v: a.bitrate }, { l: 'Vertical', v: a.vertical }, { l: 'Monetization', v: a.monetize }, { l: 'Payout split', v: a.payout }, ].map((f, i) => (
{f.l}
{f.v}
))}
{/* scoreboard */}
For IRL streamers
{[ ['Discovery — gets you seen', a.id === 'tiktok' ? 9.5 : a.id === 'youtube' ? 8.4 : 7.2], ['Monetization — pays you', a.id === 'youtube' ? 8.8 : a.id === 'twitch' ? 8.2 : 7.0], ['IRL community fit', a.irl], ['Stability — no surprise ToS', a.id === 'x' ? 4.0 : a.id === 'kick' ? 6.5 : 8.4], ].map(([k, v]) => (
{k} {v.toFixed(1)}
= 8 ? '' : v >= 6.5 ? 'warn' : 'bad'} />
))}
{/* eligibility */}
Eligibility · Monetization gate VERIFIED · {a.updated.toUpperCase()}
{a.eligibility}
{/* Eligibility tracker is in the Toolkit (Phase 3 calculator). */}
{/* COMPARE TABLE */}
All six · One table

The cheatsheet.

{/* CSV export lands in Phase 2 once data lives in /src/data. */}
{PLATFORMS.map(p => ( setActive(p.id)}> ))}
Platform Share Bitrate Vertical Monetization Split IRL score Updated
{p.name}
{p.share} {p.bitrate} {p.vertical} {p.monetize} {p.payout} {p.updated.toUpperCase()}
); }; window.PlatformsPage = PlatformsPage;