Reverse-engineered from the page markup. This is a technical, developer-oriented walkthrough you can publish as documentation.
TL;DR
WhatsApp Web is a high-performance, PWA-style React/Comet app that:
- Boots from a lightweight splash screen while a tiered Bootloader streams code.
- Uses a manifest, multiple theme-color declarations, and dark/light CSS custom properties.
- Heavily preloads scripts/CSS and dynamically chunks features into tierOne/tierTwo/tierThree.
- Pushes heavy work into Web Workers and WASM (image/video codecs, search, audio).
- Localizes at scale via FBT/Intl and per-locale bundles.
- Measures every phase with QPL timings and Banzai/Falco logging.
Page Purpose & Entry Flow
- Root element:
<html id="whatsapp-web" lang="en" dir="ltr"> - Splash:
#wa_web_initial_startuprenders the wordmark, a progress<progress>bar, and the “End-to-end encrypted” badge. - Mount point:
#mount_0_0_7C— the React/Comet app hydrates here after the initial boot.
Head Essentials (PWA & SEO)
<link rel="manifest" href="/data/manifest.json" crossorigin="use-credentials">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=2,shrink-to-fit=no">
<meta name="theme-color" content="#12181c" media="(prefers-color-scheme: dark)">
<meta name="theme-color" content="#f7f5f3">
<link rel="apple-touch-icon" sizes="192x192" href=".../hUUuVTz6ZVi.png">
<link rel="shortcut icon" href=".../rYZqPCBaG70.png">
Notes
- Dual
theme-colorentries +prefers-color-schemesupport adaptive address-bar coloring. manifest.json+ icons + viewport settings align with installable PWA behavior.format-detection=telephone=noavoids iOS auto-linking of numbers.notranslateprevents automatic page translation (strings are localized internally).
Theming & CSS Variables
Inline styles define CSS custom properties for light and dark modes (e.g., --splashscreen-*). The app toggles via class switches and media queries, ensuring consistent look between splash and hydrated UI.
Bootloader & Tiered Delivery
You’ll see many data-btmanifest="..._main" and Bootloader.handlePayload blocks plus preload hints:
- Tiered code: htmlStart → tierOne → tierTwo → tierThree. Critical UI arrives first; long-tail/admin flows stream later.
- Comet/React runtime: The Meta Comet stack orchestrates chunk loading and hydration.
- Resource maps: Large
rsrcMapobjects enumerate hashed assets (JS/CSS) fetched fromhttps://static.whatsapp.net/.
Why it matters
- Faster Time to Interactive through a splash + incremental hydration pattern.
- Cache-friendly filenames (content-hashed) and route-scoped bundles.
Performance Telemetry
- QPL timings (
qplTimingsServerJS) annotate each phase:htmlStart,tierOne,tierTwo,tierThree, etc. - Banzai/Falco clients queue analytics events with backoff and batching.
- Navigation metrics and “payload bytes sent” are recorded to validate budgets.
Takeaway: bake perf markers into your boot sequence so you can correlate code-split tiers with real-user timing.
Internationalization & Locale Packs
- Primary locale is
en_GB, but the build includes per-language modules likeWAWebCountriesLocaleXXandWAWebMoment-xx. - FBT/Intl plumbing (
FbtLogging,IntlQtEventFalcoEvent) drives runtime string selection.
Pattern to emulate: ship thin default UI, lazy-load locale-specific assets when needed.
Workers, WASM & Media Pipeline
To keep the main thread free, the app offloads heavy work to Web Workers/WASM bundles, e.g.:
WAMediaWasmWorkerBundle— generic media transformsWAWebOpusRecorderWorkerBundle— voice capture/encodingWAWebRgbaToWebpWorkerBundle/WAWebWebpToRgbaWorkerBundle— sticker/image conversionWAWebWebpToAnimationFramesWorkerBundle— animated WebP handlingWAWebFtsWorkerBundle— client-side full-text search- Video playback config shows extensive low-latency streaming controls and ABR parameters
Result: smoother UI (scrolling, typing) while processing images, audio, and search in background threads.
Security, Privacy & UX Touches
- E2EE UX: The splash explicitly states “End-to-end encrypted.”
- CSRF/Session tokens (
LSD,DTSG) are provisioned and rotated. crossorigin="use-credentials"on the manifest implies credentialed fetch flows.notranslate+ controlled localization keeps strings consistent with cryptographic messages.
Progressive Enhancements
- Service-worker support check:
WAWebFeatureDetectionSwSupportsuggests SW-backed caching and offline resilience. - Graceful fallback: A minimal, styled splash remains functional if hydration is delayed.
Selected Markup Highlights
<!-- Splash container -->
<div id="wa_web_initial_startup" class="_apdl">
<div class="_apdm">[WhatsApp logo SVG]</div>
<div class="_apdr">WhatsApp</div>
<div class="_apdq"><progress value="0" max="100"></progress></div>
<div class="_apds">[lock icon] End-to-end encrypted</div>
</div>
<!-- React/Comet mount point -->
<div id="mount_0_0_7C"></div>
Architectural Takeaways for Developers
- Splash + Tiered Boot
Ship a tiny shell, then stream features in priority tiers. Keep a responsive splash to mask network variability. - Workers Everywhere
Move CPU-heavy work (codecs, search, image transforms) off the main thread with Web Workers & WASM. - Localized at Scale
Use a runtime i18n layer (FBT/Intl) and lazy-load locale and country packs. - Instrumentation First
Add QPL-style markers to every boot phase; measure both bytes and latency per tier. - PWA Polish
manifest.json, dualtheme-color, adaptive icons, andprefers-color-schememake the app feel native on desktop/mobile.
FAQ (for your readers)
Is this a traditional MPA?
No — it’s a React/Comet SPA with a server-rendered shell and dynamic chunks.
Why so many small script files?
They’re feature-scoped and hashed for cacheability, allowing precise, on-demand loading.
Where does offline support come from?
The manifest + service-worker feature detection imply caching strategies; exact behavior depends on the registered SW.
Appendix: Copy-Paste Snippets
Viewport & Theme
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=2,shrink-to-fit=no">
<meta name="theme-color" content="#12181c" media="(prefers-color-scheme: dark)">
<meta name="theme-color" content="#f7f5f3">
PWA Basics
<link rel="manifest" href="/data/manifest.json" crossorigin="use-credentials">
<link rel="apple-touch-icon" sizes="192x192" href="https://static.whatsapp.net/.../hUUuVTz6ZVi.png">
<link rel="shortcut icon" href="https://static.whatsapp.net/.../rYZqPCBaG70.png">
Credits
This analysis is based solely on the publicly delivered HTML/JS/CSS structure of the WhatsApp Web entry page. Names like Comet, QPL, and Banzai refer to Meta’s internal/OSS ecosystem commonly visible in production bundles.