Report Prepared For
Snap Tech
Issued By
E-Commerce Department · Ajlan & Bros Holding
Subject Domain
ajstore.com
Audit Date
April 22, 2026
Audit Scope
Homepage — Desktop & Mobile
Technical Audit — April 22, 2026
Snap Tech · E-Commerce Department

AJStore.com — Performance Status: POOR

Core Web Vitals assessment fails across all measured metrics. Mobile Lighthouse performance score: 26/100. Desktop: 31/100. All three Core Web Vitals (LCP, INP, CLS) are in the "Poor" or "Needs Improvement" band for real-user data (CrUX P75). The site records 218 HTTP requests and transfers 38 MB of uncompressed payload on mobile.

Platform: Magento PWA Studio Stack: React · Apollo GraphQL · Node.js Payments: Tabby · Tamara · Braintree 218 HTTP Requests · 38 MB (Mobile, Uncompressed) Data: GTmetrix · PageSpeed · WebPageTest · BuiltWith
26
Mobile Score
Lighthouse · Apr 22, 2026
Mobile LCP — CrUX P75
4.9s
Good threshold: <2.5s
Mobile INP — CrUX P75
321ms
Good threshold: <200ms
Mobile CLS — CrUX P75
0.57
Good threshold: <0.1
Total Page Weight — Mobile
38 MB
Good threshold: <1.6 MB
Critical Performance Failures — Top 5 by Severity
1
Catastrophic Image Payload — 33 MB Measurable Waste on Mobile
Product images (1200×1200px source) are delivered to thumbnails displayed at 150–263px. Banner images (up to 3865×1907px) are delivered to 613px-wide containers. No WebP or AVIF conversion is applied. All product and banner images on backend.ajstore.com carry no Cache-Control headers. Single asset dsc_243.png is 3,646 KiB. PageSpeed reports 33,060 KiB in image-related savings for mobile.
33,060 KiB savings identified (PageSpeed)
Critical
Primary driver of LCP = 4.9s CrUX P75
2
Render-Blocking JS Bundles — 11.7s Blocked on Mobile
client.b3c2fc1.js (278.6 KiB) blocks render for 6,810ms. vendors.4fb37fd.js (104.6 KiB) blocks for 4,190ms. runtime.7e4cc5b.js adds 700ms. The Tamara widget (813 KiB) on cdn.tamara.co blocks render for 10,210ms as a synchronous resource. Aggregate first-party + Tamara render-blocking time reaches 21.9s on mobile and 1.72s on desktop.
11,700ms blocked — first-party JS alone (mobile)
Critical
FCP = 11.2s · LCP = 31.5s (Lighthouse mobile)
3
CLS Score 0.57 (Mobile CrUX P75) — Layout Instability at Scale
CrUX P75 CLS is 0.57 on mobile — 5.7× above the 0.1 threshold. Root cause: 15 banner and product images carry no explicit width/height attributes, triggering layout reflow on load. The footer element contributes a 0.096 individual shift score in the Lighthouse lab test. Viewport meta includes user-scalable=0 and maximum-scale=1.
CLS = 0.57 (CrUX P75) · 5.7× above threshold
Critical
Confirmed across mobile and desktop CrUX
4
Main Thread Overloaded — 8.4–11.2 Seconds Total Occupied Time
Total main-thread work: 8.4s (mobile), 11.2s (desktop). Script evaluation alone consumes 5.7s (mobile) and 7.8s (desktop). 20 long tasks are recorded; client.b3c2fc1.js produces tasks of 441ms, 355ms, and 286ms. Google reCAPTCHA (recaptcha__en.js) contributes 598–1,152ms of main-thread work. DOM element count: 4,751–5,459 elements at depth 22–26.
20 long tasks · 8.4s main-thread (mobile)
Critical
INP = 321ms mobile · TBT = 1,790ms mobile
5
No Cache Policy on Backend Images — 35 MB Uncached Per Visit
All product and banner images from backend.ajstore.com carry Cache-Control: None. PageSpeed identifies 34,999 KiB in cacheable resource savings on mobile and 13,145 KiB on desktop. Static site assets (logo, payment icons) carry only 37–55 minute TTLs. The Tamara widget (813 KiB) has a 30-minute cache lifetime. 68 resources are delivered without any CDN layer (GTmetrix).
35 MB with no cache headers (mobile)
High
Full payload re-downloaded on every session
Lighthouse Performance Scores — April 22, 2026
Mobile Performance26 / 100
Desktop Performance31 / 100
Accessibility66 / 100
Best Practices65 / 100
SEO92 / 100
GTmetrix Structure Score76 / 100
Source: Google PageSpeed Insights (Apr 22, 2026 · 08:30 GMT+3), GTmetrix (Apr 21, 2026 · Lighthouse 12.6.1 · Seattle node). Scores are reproducible lab measurements at time of audit.
CrUX Real-User Data — P75 · Mar 22–Apr 18, 2026
Source: Chrome User Experience Report (CrUX API). 28-day rolling window ending Apr 18, 2026. P75 = 75th percentile of real user sessions.
Performance Analysis
Data sources: Google PageSpeed Insights (Apr 22, 2026 · 08:30 GMT+3) · GTmetrix (Apr 21, 2026 · Lighthouse 12.6.1 · Seattle) · CrUX API (28-day P75 ending Apr 18, 2026) · WebPageTest
Core Web Vitals — CrUX P75 (Real Users) vs. Lighthouse Lab
Largest Contentful Paint (LCP)
📱 Mobile
4.9s
CrUX P75
🖥 Desktop
3.9s
CrUX P75
Good: <2.5s · Needs Improvement: 2.5–4s · Poor: >4s
FAIL Lighthouse lab: Mobile 31.5s / Desktop 4.6s
Interaction to Next Paint (INP)
📱 Mobile
321ms
CrUX P75
🖥 Desktop
151ms
CrUX P75
Good: <200ms · Needs Improvement: 200–500ms · Poor: >500ms
NEEDS IMPROVEMENT (Mobile)
Cumulative Layout Shift (CLS)
📱 Mobile
0.57
CrUX P75
🖥 Desktop
0.23
CrUX P75
Good: <0.1 · Needs Improvement: 0.1–0.25 · Poor: >0.25
FAIL — 5.7× ABOVE THRESHOLD (Mobile)
Mobile vs. Desktop — Lighthouse Metric Comparison
Main-Thread Work Breakdown — Mobile (8.4s Total)
Full Metric Detail — All Sources
Metric Mobile (CrUX P75) Desktop (CrUX P75) Mobile (Lighthouse Lab) Desktop (Lighthouse Lab) Good Threshold Status
LCP 4.9s 3.9s 31.5s 4.6s <2.5s FAIL
INP 321ms 151ms TBT proxy: 1.79s TBT proxy: 3.47s <200ms NEEDS IMPROVEMENT
CLS 0.57 0.23 0.096 0.047 <0.1 FAIL
FCP 2.8s 1.9s 11.2s 2.0s <1.8s NEEDS IMPROVEMENT
TTFB 721ms 600ms 443ms 443ms <800ms PASS
Speed Index CrUX N/A 11.4s 4.5s <3.4s FAIL
Time to Interactive CrUX N/A GTmetrix: 8.8s N/A <3.8s FAIL
Fully Loaded Time CrUX N/A GTmetrix: 15.9s <3s FAIL
Total Requests 218 requests <50 FAIL
Total Page Weight — Mobile 38,012 KiB uncompressed · 10.6 MB transferred (GTmetrix) <1.6 MB FAIL
LCP Element Breakdown — Mobile Lighthouse

The LCP element is a banner image: SnaptecBanner/banner_image_mobile177….jpg. The image itself downloads in 180ms once requested. The 2,050ms resource load delay is attributable entirely to render-blocking JavaScript in the critical path.

Time to First Byte
10ms
Target: <600ms
Resource Load Delay
2,050ms
Target: <200ms
Resource Load Duration
180ms
Target: <200ms
Element Render Delay
160ms
Target: <200ms
Root cause of 2,050ms load delay: render-blocking JavaScript (client.b3c2fc1.js, vendors.4fb37fd.js, Tamara widget) must complete execution before the browser can discover and request the LCP image. The image download itself (180ms) is not the bottleneck.
Technical Issues
All findings are directly supported by data from Google PageSpeed Insights, GTmetrix, WebPageTest, BuiltWith, and the CrUX API — collected April 21–22, 2026. Issues are categorised by domain; severity is assigned based on measurable performance impact.
Image Delivery Issues
!
Oversized Product Images — 1200×1200px Source Delivered to 150–263px Thumbnails
All product card images (1200×1200px source) are displayed at 150px (mobile) and 240px (desktop) in thumbnail contexts. PageSpeed identifies 30+ images wasting 200–3,600 KiB each. dsc_243.png is 3,646 KiB delivered to a 263×263px slot. Potential savings per image: up to 3,471 KiB. Total identified image waste on mobile: 33,060 KiB.
33,060 KiB identified waste (PageSpeed)
Critical
!
Banner Images Not Responsive — Source Dimensions Up to 3865×1907px
banner_image1733225176.jpg is 3865×1907px (642 KiB) delivered to a container displayed at 637×314px on desktop. Multiple SnaptecBanner images are 1918×971px served to 637px-wide containers. No responsive srcset breakpoints are implemented for banner images.
Up to 625 KiB wasted per banner asset
Critical
!
No WebP / AVIF Format Conversion — All Assets in Legacy JPEG/PNG
All product and banner images are delivered as JPEG or PNG. PageSpeed reports 5,690 KiB in potential savings from next-gen format conversion. The Magento backend includes ?auto=webp query parameters on image URLs, but output format is not being converted — assets are returned in original format regardless of this parameter.
5,690 KiB potential savings (PageSpeed)
Critical
!
No Cache Headers on backend.ajstore.com — All Images Uncached
Every product image and banner asset from backend.ajstore.com carries Cache-Control: None. This forces a full re-download on every page visit and browser session. PageSpeed reports 34,999 KiB in cacheable resource savings on mobile. Banner images, though static promotional assets, also carry no cache headers.
35 MB uncached per visit (PageSpeed)
Critical
!
15 Images Missing Explicit Width/Height Attributes — CLS Contributor
Banner images are rendered with classes="[object Object]" and no explicit width or height attributes. This prevents the browser from reserving layout space before images load, causing reflow and contributing to the 0.57 CLS on mobile. GTmetrix flags 15 affected images.
15 affected images (GTmetrix)
High
!
2.33 MB in Offscreen Images Not Deferred
GTmetrix reports 2.33 MB in potential savings from deferring offscreen images. Several below-fold product images are loaded at page initialisation. While some product images carry loading="lazy" attributes per PageSpeed HTML analysis, a subset of above-fold images are loading unnecessarily on page start.
2,330 KiB potential savings (GTmetrix)
Medium-High
JavaScript Execution & Bundle Issues
!
Tamara Widget Render-Blocks for 10,210ms on Mobile
cdn.tamara.co/widget/product-widget.min.js (813 KiB) is a synchronous render-blocking resource with a 10,210ms download time on mobile. The script contains 768 KiB (94.5%) of unused JavaScript. Main-thread execution time: 84ms (mobile), 98ms (desktop). Cache TTL on this asset is 30 minutes.
813 KiB · 10,210ms render block (mobile)
Critical
!
client.b3c2fc1.js — 2,776ms CPU Evaluation on Mobile · 20+ Long Tasks
The main application bundle (278.6 KiB transferred) consumes 2,776ms total CPU time — 2,435ms in script evaluation alone. It generates 20+ long tasks: a task at 32,980ms runtime offset runs for 441ms; another at 11,169ms offset runs for 355ms. This file is the primary contributor to Total Blocking Time. Unused JS savings identified: 116.5 KiB.
2,776ms CPU · 441ms worst single task
Critical
!
1,617–1,727 KiB Unused JavaScript Loaded at Page Initialisation
Total unused JS: 1,617 KiB (mobile) / 1,727 KiB (desktop). Key contributors: Tamara widget — 768 KiB unused of 811 KiB (94% waste); Google reCAPTCHA — 355.6 KiB unused of 723 KiB (49% waste); Google Tag Manager — 113.5 KiB unused of 324 KiB (35% waste); TikTok — 62.5 KiB unused of 120 KiB (52% waste).
1,617 KiB unused JS on mobile (PageSpeed)
Critical
!
Google reCAPTCHA Loaded on Homepage — 1,152ms Main-Thread Occupation
recaptcha__en.js (725 KiB) is loaded on the homepage, contributing 1,152ms main-thread time (desktop) and 948ms (mobile). 5 separate long tasks from this script are recorded in the Lighthouse task timeline. reCAPTCHA is not functionally required on the homepage.
1,152ms main-thread (desktop)
High
!
52 Critical Request Chains — Serial Dependencies Blocking FCP and LCP
GTmetrix identifies 52 critical request chains. These serial dependencies prevent resource B from downloading until resource A completes. Four Google Fonts CSS requests (Barlow, Almarai, Noto Sans Arabic, Manrope) are loaded synchronously in the critical path, adding approximately 3,000ms on mobile.
52 request chains (GTmetrix)
Medium-High
!
Legacy JavaScript Polyfills Shipped to Modern Browsers
Babel transforms for classes, regenerator, and spread are included in fbevents.js (12.5 KiB wasted) and TikTok's analytics script (9.8 KiB wasted). First-party client.b3c2fc1.js also includes babel/plugin-transform-classes, babel/plugin-transform-regenerator, and babel/plugin-transform-spread (2.4 KiB identified). Total identified polyfill waste: 25–26 KiB.
~26 KiB legacy polyfill payload
Medium
CSS, Fonts & Rendering Issues
!
57 KiB Unused CSS — reCAPTCHA Stylesheet Accounts for 39.8 KiB
Total unused CSS: 57 KiB. Google CDN's recaptcha styles__ltr.css contributes 39.8 KiB wasted of 41.5 KiB loaded (96% waste). The site's own global Venia tokens CSS (24.8 KiB) contains 17.1–17.4 KiB of unused rules. Additionally, slick-theme.min.css and slick.min.css from Cloudflare CDN load as render-blocking resources — each introducing 750ms on mobile.
57 KiB unused CSS (PageSpeed)
Medium
!
31 Web Fonts Loaded Simultaneously — No font-display Strategy
GTmetrix identifies 31 web fonts loading on page initialisation. Google Fonts families (Barlow, Almarai, Noto Sans Arabic, Manrope, Space Grotesk, and others) contribute 197 KiB. The site's own sallaicons.ttf (268 KiB) is loaded without font-display: swap, causing Flash of Invisible Text (FOIT). PageSpeed records a 60ms FCP impact from this issue. No preload hints are applied to any critical fonts.
31 fonts · 268 KiB unoptimised TTF
Medium
!
CSS Not Minified in Production — 5.74 KiB Unprocessed
The global Venia CSS tokens file (24.8 KiB) is served unminified, with 5.74 KiB in potential savings. The file begins with readable comments (/* global tokens */ :root {), confirming that the production build pipeline is not applying CSS minification to this asset.
5.74 KiB unminified production CSS
Medium
DOM Complexity & Third-Party Script Impact
!
DOM Size: 5,459 Elements · Maximum Depth: 26 Levels
GTmetrix reports 5,382 DOM elements (desktop); PageSpeed reports 5,459 (desktop) and 4,751 (mobile). The recommended maximum is 1,400 elements — current count is 3.9× over threshold. The largest child count within a single parent is 54–63 children in product slider containers (div.slick-track with 8,476px reported width). Memory usage peaks at 630 MB per GTmetrix session.
5,459 DOM elements · 3.9× over threshold
Medium-High
!
Third-Party Scripts Occupy 553ms+ of Main Thread
Recorded main-thread blocking from third-party origins (mobile): Google CDN (reCAPTCHA) — 948ms; Google Tag Manager (both containers) — 460ms combined; Snapchat — 326ms; Facebook — 182ms; TikTok — 133ms; Clarity — 116ms. GTmetrix reports 68 resources served without any CDN layer.
553ms+ third-party main-thread block
High
!
Tabby Widget (64 KiB) Render-Blocks for 3,760ms on Mobile
checkout.tabby.ai/tabby-promo.js (64.3 KiB) is a synchronous render-blocking resource taking 3,760ms on mobile. The script contains 36.6 KiB of unused JavaScript and carries a 1-hour cache lifetime. This asset blocks rendering regardless of whether the user reaches a page where BNPL functionality is applicable.
3,760ms render block on mobile (PageSpeed)
High
!
cdn.tabby.ai Font Requests Blocked — 17 Files Returning 0 Bytes
The GTmetrix waterfall records 17 requests to cdn.tabby.ai for font files (RadialBold, Radial-Black, IBMPlexSans variants), all returning a "(blocked)" status with 0 bytes transferred. These blocked requests indicate CORS or CSP policy is preventing Tabby's widget fonts from loading, contributing to request chain delays.
17 blocked font requests (GTmetrix waterfall)
Medium
!
Two GTM Containers Active — GTM-K4H46JXV Potentially Stale
Two Google Tag Manager containers are firing on every page load: GTM-M7J8LW2 (confirmed active as of Apr 2026) and GTM-K4H46JXV (last BuiltWith detection Aug 2025, still appearing in the PageSpeed waterfall Apr 2026). Combined size: 500 KiB. Combined desktop main-thread contribution: 639ms. Five social pixel scripts (TikTok, Facebook, Twitter, Snapchat, Clarity) are injected through one or both containers.
2 GTM containers · 500 KiB · 639ms main-thread
Medium-High
Accessibility & Structural Issues
!
user-scalable=no in Viewport Meta — WCAG 1.4.4 Violation
The page delivers <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0">. This disables pinch-to-zoom for all mobile users, violating WCAG 1.4.4 Resize Text (Level AA). The constraint is absolute — it affects all users regardless of assistive technology need.
Confirmed in PageSpeed HTML source
Medium
!
Multiple Slider Navigation Buttons Without Accessible Names
productBlock-preSlider-2Go, productBlock-nextSlider-10q, tabProductBlock-prevButton, and columnBanner-preSlider buttons are present across multiple product blocks without aria-label or visible text content. Screen reader users cannot identify or operate carousel navigation controls.
Confirmed in PageSpeed HTML source
Medium
!
Banner Navigation Links Have No Discernible Name — 15+ Instances
columnBanner-bannerImageLink-2KE and slider links to /men/yashmagh.html, /men/ghuta.html, /men/thobe/formal-thobe.html, and others contain only image children with neither alt text on the image nor visible link text. These links are not discoverable or operable by screen reader navigation. Confirmed across 15+ instances on both desktop and mobile.
15+ affected banner links (PageSpeed)
Medium
!
aria-hidden=true Containers with Focusable Child Elements (Slick Slider)
div.slick-slide elements carrying aria-hidden="true" contain focusable anchor elements. Keyboard navigation and screen readers will route focus into content that is declared hidden, creating an inconsistent accessibility experience. This is a known Slick Slider accessibility defect.
Confirmed in PageSpeed HTML source
Medium
Third-Party Script Transfer Size vs. Unused JavaScript — Mobile
Source: Google PageSpeed Insights (Apr 22, 2026). Unused JS quantities represent bytes loaded on page initialisation that are not executed during page load.
Audit Methodology & Data Sources
This audit was conducted by the E-Commerce Department, Ajlan & Bros Holding, and issued to Snap Tech. All findings are grounded in reproducible, tool-generated data. No subjective assessments are included.
Audit Instrumentation
📊
Google PageSpeed Insights
Lighthouse-powered synthetic performance testing. Mobile and desktop simulations at throttled network and CPU conditions. Core Web Vitals lab metrics and CrUX field data.
Collected: April 22, 2026 · 08:30 GMT+3
GTmetrix
Full waterfall analysis with Lighthouse 12.6.1. Seattle test node. JavaScript execution timeline, resource transfer breakdown, request chain analysis, and structure score.
Collected: April 21, 2026
🌐
WebPageTest
Multi-location testing with detailed connection waterfall, DNS/SSL timings, render filmstrip, and content type breakdown. Supplementary validation of PageSpeed findings.
Collected: April 21–22, 2026
🔍
BuiltWith
Technology stack detection and historical change tracking. Identifies active and legacy JavaScript libraries, tracking tags, payment integrations, and infrastructure components.
Collected: April 22, 2026
Additional Data Sources
Source Data Type Collection Window Usage in This Report
Chrome User Experience Report (CrUX API) Real-user field data — P75 percentile March 22 – April 18, 2026 (28-day rolling) Core Web Vitals real-user values (LCP, INP, CLS, FCP, TTFB)
Google PageSpeed Insights — HTML Source Rendered DOM snapshot at time of test April 22, 2026 Accessibility findings, viewport meta, aria attributes, image attributes
GTmetrix Waterfall Network request timeline with status codes April 21, 2026 Request chains, blocked resources, third-party origins, CDN absence
Lighthouse Task Audit (PageSpeed) Main-thread task timeline April 22, 2026 Long task durations, script execution times, TBT breakdown
BuiltWith Technology History Longitudinal stack change detection Oct 2022 – April 2026 Technology stack history, stale tag identification
Test Environment & Configuration
ParameterMobile (PageSpeed)
BrowserChrome 142 (headless)
Screen Resolution360×760px (device pixel ratio 3)
CPU Throttle4× slowdown (Lighthouse default)
Network ThrottleSlow 4G (1.6 Mbps / 750ms RTT)
Lighthouse Version13
Test URLhttps://www.ajstore.com/
ParameterDesktop (PageSpeed)
BrowserChrome 142 (headless)
Screen Resolution1350×940px
CPU ThrottleNone (Lighthouse desktop default)
Network ThrottleNone (Lighthouse desktop default)
Lighthouse Version13
Test URLhttps://www.ajstore.com/
Scope & Boundaries of This Audit
In ScopeOut of Scope
Homepage (https://www.ajstore.com/) — desktop and mobile Product pages, category pages, checkout, account pages
All HTTP resources loaded during homepage initialisation Backend server architecture, database performance, API response quality
Front-end JavaScript, CSS, font, and image assets SEO content quality, conversion rate analysis, A/B test outcomes
Third-party scripts loaded at page start User authentication flows, post-login experiences
Real-user Core Web Vitals (CrUX P75) — all homepage URLs Paid media or organic traffic composition
Accessibility issues detectable via automated tooling Manual accessibility testing, screen reader walkthroughs
Technology Profile
Source: BuiltWith Detailed Technology Profile (April 22, 2026) · PageSpeed Insights HTML source (April 22, 2026) · GTmetrix waterfall analysis (April 21, 2026)
Active Technology Stack
eCommerce Platform
Magento PWA Studio Apollo GraphQL Express.js
Payments
Tabby (BNPL) Tamara (BNPL) Braintree CardinalCommerce Mada
Analytics & Tracking
Hotjar Google Analytics 4 (G-VDCFN6SS6Q) GTM-M7J8LW2 GTM-K4H46JXV (last detected Aug 2025) New Relic APM (inactive since Sep 2025)
Marketing Pixels
Facebook Pixel TikTok Pixel Snapchat Pixel Twitter/X Pixel Microsoft Clarity
CDN & Infrastructure
Cloudflare JS (CDN JS) GStatic (Google) backend.ajstore.com — no CDN detected
Authentication & Security
Google Identity Platform reCAPTCHA v3
Third-Party Script Load — Main-Thread Time (Desktop)

Waterfall Summary — GTmetrix, Seattle Node
Total Requests218
Total Page Size (Transferred)10.6 MB
Total Uncompressed17.8 MB
JS (Transferred)3.01 MB
Images (Transferred)6.97 MB
CPU Usage45.1%
Memory Usage630 MB
Fully Loaded Time15.9s
Onload Time5.9s
Technology Stack Changes — Notable Historical Events (BuiltWith)
  • Oct 2022 — Platform migration from Martjack (enterprise hosted eCommerce) to Magento PWA Studio. Apollo GraphQL introduced as the data layer.
  • Nov 2022 — Hotjar and GTM-M7J8LW2 activated. This remains the active primary tracking container as of April 2026.
  • Jul 2024 — TikTok, Facebook, Twitter, and Snapchat conversion pixels added simultaneously via GTM-K4H46JXV. This single deployment accounts for the concentration of social pixel third-party load observed in the current waterfall.
  • Aug 2024 — Google Analytics 4 property G-VDCFN6SS6Q added. Google Analytics Enhanced Ecommerce (Universal Analytics) had been deprecated June 2022.
  • Sep 2025 — New Relic APM monitoring ceased. No APM solution is confirmed active at the time of this audit.
  • Aug 2025 — Last BuiltWith detection of GTM-K4H46JXV. The container continues to appear in the PageSpeed Insights waterfall as of April 2026, indicating a potentially stale GTM container is still firing on each page load.