Manifest position 200 · CrUX rank bucket 1000
https://www.snapchat.com
Coverage complete
Coverage-complete anonymous public-site audit across six representative templates plus a recovery route. Authenticated account, payment confirmation, messaging, and camera permission flows were not covered because no test credentials were supplied.
All 58 atomic check outcomes
| Principle / check | Status | Confidence | Evidence or reason |
|---|---|---|---|
respect-user-preferencesrespects-color-scheme | issues | high | The dark-emulated screenshot remains a white homepage, and computed styles report color-scheme: normal. F01 medium: The homepage ignores the user’s dark color-scheme preference. |
respect-user-preferencesrespects-reduced-motion | issues | high | The reduced-motion probe confirms the media query is active but reports html scroll-behavior: smooth. F02 medium: Smooth scrolling remains enabled under reduced-motion. |
respect-user-preferencesrespects-contrast | pass | high | Forced-colors/high-contrast screenshot preserves readable text, controls, borders, and navigation. |
implement-natural-interactionsview-transitions | issues | high | CSS inspection across six representative routes found no view-transition rules; navigation changes are full swaps. F03 low: Route and state changes do not use View Transitions. |
implement-natural-interactionsscroll-driven-animations | issues | medium | CSS probes across all sampled templates found no animation-timeline or scroll-timeline despite long feed and marketing surfaces. F04 low: Long scrolling/media surfaces do not use declarative scroll timelines. |
implement-natural-interactionsphysical-gestures | pass | high | Mobile Spotlight exposes platform-like vertical feed controls and a clear scroll-to-view-more affordance without observed custom pointer failure. |
provide-guided-navigationscroll-state-aware-chrome | issues | medium | The 4,955px Discover mobile page retains static navigation and has no scroll timeline/progress affordance in the screenshot or CSS probe. F05 low: Long feed chrome does not communicate scroll position or react to it. |
provide-guided-navigationanchored-positioning | not-applicable | high | No tooltip, popover, or anchored menu appeared on the sampled public routes, so there was no anchored overlay to judge. |
provide-guided-navigationdirects-attention | pass | high | Discover marks Stories active; Spotlight provides explicit up/down controls and a “Scroll to view more” cue. |
maximize-content-reduce-noiseno-intrusive-interruptions | pass | high | Load screenshots show content immediately with no modal, consent wall, or full-screen interstitial; the safety notice is a slim persistent bar. |
maximize-content-reduce-noisesemantic-dismissible-primitives | pass | high | DOM inspection found six native details disclosures and no ad-hoc modal/dialog overlay on sampled routes. |
maximize-content-reduce-noisereduced-chrome | pass | high | Screenshots devote the primary viewport to login, stories, video, lenses, or subscription content with compact global chrome. |
adapt-to-the-form-factorresponsive-no-horizontal-scroll | issues | high | Layout metrics at 360x800 report innerWidth/scrollWidth 1020px and 660px horizontal overflow; the video is visibly offset and clipped. F06 high: Spotlight forces a desktop-sized layout on a 360px viewport. |
adapt-to-the-form-factorcomponent-level-responsiveness | issues | high | All six CSS probes found no container queries; the Spotlight component expands to 1020px at a 360px viewport. F07 medium: Reusable surfaces do not use component-level responsiveness, and Spotlight breaks in its narrow container. |
adapt-to-the-form-factorinput-modality-aware | issues | high | The focus/target probe found 29–40px-high login controls and footer links, while the username/search inputs and several footer links computed outline: none after focus. F08 medium: Several visible controls are undersized or lose visible keyboard focus. |
support-core-task-successclear-purpose-and-primary-action | pass | high | Each sampled route has a clear title/purpose and prominent login, download, content, or subscribe action. |
support-core-task-successprimary-flow-completion | issues | high | Clicking the enabled Log in button with an empty, non-required username field leaves the URL unchanged, does not focus the field, and renders no error or live-region message. F09 high: The anonymous login flow accepts an empty submission but makes no progress and gives no guidance. |
support-core-task-successclear-system-state-and-recovery | issues | high | After empty submission, aria-invalid remains absent, validationMessage is empty, focus does not move, and no alert/live-region text appears. F10 high: The login flow has no visible or programmatic invalid state. |
be-fast-and-stablegood-core-web-vitals | issues | high | Lighthouse scored performance 0.44 with LCP 20.3s, TBT 750ms, FCP 3.2s and TTI 20.6s; a separate trace measured LCP 5.10s. F11 high: Homepage loading performance is poor under Lighthouse mobile conditions. |
be-fast-and-stablevisual-stability | pass | high | Mobile layout observers measured CLS from 0.0001 to 0.0158 across all six routes, within the good range. |
be-fast-and-stableefficient-main-thread | issues | high | Lighthouse measured 750ms TBT and 800ms max potential input delay; the independent trace recorded a 113ms long task. F12 high: Initial JavaScript blocks the main thread. |
be-fast-and-stableefficient-resource-delivery | issues | high | HAR/Lighthouse show 4.29MB transferred, 2.03s estimated render-blocking savings, an LCP poster without fetchpriority=high, and 1.51MB cache-lifetime savings. F13 high: Critical resources are late, render-blocking, and poorly cached. |
be-fast-and-stabletrim-unused-and-duplicate-code | issues | high | HAR records 2.21MB of JavaScript including a 2.07MB _app chunk; Lighthouse estimates 1.50MB unused JavaScript and 24KB unused CSS. F14 high: The homepage ships a very large mostly-unused application bundle. |
be-inclusivenames-roles-labels | issues | high | Lighthouse reports serious label-content-name-mismatch failures: visible “Lenses” and “Stories” links use aria-label values LENS_HOME_PAGE and DISCOVER_HOME_PAGE. F15 medium: Accessible names do not match visible mobile navigation labels. |
be-inclusivesufficient-contrast | pass | high | Lighthouse accessibility scored 0.98 without a color-contrast failure; forced-colors screenshot remains readable. |
be-inclusivestructure-and-focus | issues | high | Lighthouse flags H6 “Discover Snapchat” and H3 “Advertise” heading-order failures; focus probing found multiple controls with outline: none. F16 medium: Heading hierarchy and focus treatment are inconsistent. |
be-inclusivelegible-text | pass | high | Desktop/mobile screenshots show readable line lengths, unclipped headings, and clear text hierarchy outside the separately reported Spotlight overflow. |
be-inclusivezoom-reflow-targets-and-media | issues | high | Spotlight has 660px overflow at 360px, and the target probe reports several primary controls below 44px high. F17 medium: Reflow and target sizing fail on key surfaces. |
follow-best-practicesno-console-errors | issues | high | Lighthouse captured repeated React hydration errors 418/422/425 plus CORS/403 failures from growth-web-dev-tool.mesh.sc-corp.net. F18 high: The homepage logs production exceptions and failed internal-tool requests. |
follow-best-practicessound-document-and-assets | issues | high | Lighthouse found the Bitmoji image without explicit width/height; probes found no H1 on Snapchat+ and two H1s on Lenses. F19 medium: Image sizing and document heading structure have avoidable defects. |
follow-best-practicesbrowser-platform-hygiene | issues | high | Lighthouse reports the 2MB app chunk has no usable source map (403), along with cookie and CSP inspector issues. F20 low: Large production scripts expose broken source-map references and browser inspector issues. |
be-discoverabletitle-and-description | pass | high | All six route probes found unique descriptive titles and meta descriptions. |
be-discoverablecrawlable-and-mobile-friendly | pass | high | All sampled anchors had hrefs, viewport metadata is present, and robots allows normal public crawling outside named exclusions. |
be-discoverablecanonical-and-indexing-signals | pass | high | All six sampled pages returned content with canonical URLs; robots and sitemap were present and no accidental noindex was found. |
be-discoverablestructured-and-shareable-metadata | issues | high | Homepage and Snapchat+ expose Open Graph metadata but zero JSON-LD blocks; Snapchat+ represents a paid product/subscription and has no Product/Offer metadata. F21 high: Important entity pages omit structured data. |
be-private-and-securesecure-transport-and-headers | issues | high | HTTPS/HSTS/CSP are present, but CSP allows unsafe-inline styles; nosniff and Referrer-Policy are absent. All four first-party cookies use SameSite=None, including year-long cookies. F22 high: Security policy and cookies are weaker than necessary. |
be-private-and-securedata-minimisation-and-third-parties | issues | high | HAR shows requests to growth-web-dev-tool.mesh.sc-corp.net that redirect to Google OAuth, fail CORS/403, set third-party cookies, and add network/console noise. F23 medium: A public homepage contacts an internal growth tool and starts an unnecessary OAuth redirect chain. |
be-private-and-securein-context-permissions-and-modern-auth | issues | low | The anonymous login screenshot and DOM expose username/email and phone-number paths but no passkey/WebAuthn affordance; no permission prompts fired on load. F24 low: The visible sign-in entry offers only identifier-based login and no discoverable passkey option. |
be-private-and-securedefensive-browser-policies | issues | high | Headers evidence reports no Permissions-Policy or Referrer-Policy and no X-Content-Type-Options; CSP/frame protection and HSTS are present. F25 medium: Several browser-enforced defensive policies are missing. |
be-resilientprogressive-enhancement | issues | high | Discoverability measured only 2% raw/rendered content overlap, no raw H1, and isJsShell: true; the crawler screenshot shows only branding while the rendered page contains login and product content. F26 high: Homepage core content is effectively absent without JavaScript. |
be-resilientresilient-runtime-behaviour | pass | high | Representative routes loaded stable content and native details navigation; no clipped overlay or lost state was observed during the sampled interactions. |
be-resilientoffline-and-installable | not-applicable | high | The sampled core experiences are connected messaging/media services; an offline/installable public marketing shell is not necessary for task completion. |
be-resilientnetwork-and-http-failure-states | pass | high | An invalid route renders a clear “This content was not found” state with global navigation and recovery links. |
be-internationalisedlang-dir-and-logical-properties | pass | high | All routes declare lang=en-GB and dir=ltr; inspected footer CSS uses padding-inline/inset-inline and supports [dir=rtl]. |
be-internationalisedlocale-aware-data | not-applicable | high | No dates, numbers, currency amounts, durations, or calendar data were rendered on the representative anonymous routes. |
be-internationalisedtime-zone-correctness | not-applicable | high | No event scheduling or time-zone-sensitive data appeared in the representative anonymous routes. |
be-trustworthyno-dark-patterns | pass | high | No confirmshaming, disguised ads, preselected consent, or forced continuity appeared on sampled anonymous routes. |
be-trustworthyhumane-error-handling | issues | high | The identifier is not required and empty submission yields no message, focus, aria-invalid state, or recovery instruction. F27 medium: Login validation silently ignores an empty submission. |
be-trustworthytrustworthy-input-assistance | issues | high | DOM inspection shows the “Username or email address” input has autocomplete="" and no name, reducing password-manager and autofill support. F28 medium: The login identifier lacks an autocomplete token. |
be-trustworthysafe-commercial-and-account-flows | issues | high | Desktop and mobile screenshots show benefits, QR/Subscribe CTA, and no visible price, billing interval, renewal, or cancellation terms before commitment. F29 high: Snapchat+ asks users to subscribe without showing price or renewal terms. |
be-sustainableoptimised-assets | issues | high | Lighthouse estimates 1.34MB image savings across four video posters; individual PNGs waste 248–446KB and the Bitmoji image is oversized. F30 high: Homepage poster images are oversized legacy PNGs. |
be-sustainableno-wasteful-work | issues | high | The page loads 70 requests and contacts an internal growth endpoint that redirects through Google OAuth and fails; autoplay media and analytics also start immediately. F31 medium: Startup performs wasteful work unrelated to the user’s task. |
be-sustainablethird-party-and-media-budget | issues | high | HAR records 4.29MB transferred: 2.21MB scripts and 1.44MB images, while four autoplay loop videos are present and Lighthouse scores performance 0.44. F32 high: Media and script cost is disproportionate on the landing page. |
be-agent-readystructured-agent-capabilities | not-applicable | high | No declared agent-facing transactional surface was found; this emerging capability is optional for these public discovery/marketing routes. |
be-agent-readyon-device-inference | not-applicable | high | The sampled routes expose no summarisation, translation, or generative task where on-device inference is needed. |
be-memory-efficientno-leak-under-repeated-interaction | pass | high | After ten full-page scroll cycles, retained heap rose only 69,533 bytes (0.11%) and 966 heap nodes (0.14%), with no unbounded trend evident. |
be-memory-efficientbounded-footprint | pass | high | Heap summary was about 60.5MB on a media-heavy homepage and remained stable after repeated interaction. |
be-memory-efficientno-detached-dom-or-unbounded-listeners | pass | high | Before/after heap summaries contain no Detached* constructor population and remained nearly flat across ten scroll cycles. |
Provenance
Canonical report: results/atomic/reports/0200-www_snapchat_com.json
Report SHA-256: f1f7306ce86d3caab75fe389d2d98b33dbb0f063b4fa1afcdb814650d1401286
Local retained report: runs/2026-07-17T17-27-24-856Z/atomic-reports/www_snapchat_com/2026-07-19T03-17-27-244Z/report.json
Local evidence root: runs/2026-07-17T17-27-24-856Z/atomic-reports/www_snapchat_com/2026-07-19T03-17-27-244Z
Catalog SHA-256: sha256:78ccfdb2d483f4c57d9dafed80fd86c6265585a56457c8dcfddc254b80fb44d7
Raw screenshots, HARs, traces, heaps, and other browser artifacts are retained at the local evidence root and intentionally are not committed. Artifact paths in the canonical report are relative to that root.