Why Your Website Is Slow (And How Design Choices Are to Blame)
Your website is slow. You probably already know this. You have seen the PageSpeed Insights score. You have felt the lag on your own phone. But when you raised the issue, the developer pointed at the hosting, the hosting provider pointed at the code, and nobody mentioned the real culprit: the design decisions that were made before a single line of code was written.
Website speed is not purely a development problem. It is a design problem. Every visual decision — from the hero image to the font stack to the scroll animation — has a performance cost. And in a market like Dubai, where mobile usage is dominant and user patience is minimal, that cost translates directly into lost revenue.
The hero image problem
The most common performance killer on business websites in the GCC is the hero image. A full-width, high-resolution image spanning the top of the homepage might look stunning in a Figma file, but it comes with serious weight.
A typical unoptimised hero image weighs between 2 and 8 megabytes. On a 4G mobile connection — which is still the reality for many users across the GCC — that single image can take three to five seconds to load. The rest of the page waits.
The design fix is straightforward:
- Use WebP or AVIF formats — these deliver the same visual quality at 30 to 50 percent smaller file sizes than JPEG or PNG.
- Set explicit dimensions — define width and height in your HTML so the browser reserves space before the image loads, preventing layout shifts.
- Consider video alternatives carefully — a hero video might feel premium, but autoplay video on mobile can consume 10 to 20 megabytes. If you must use video, load a static poster image first and defer the video until the user interacts.
- Art-direct for mobile — do not simply scale down the desktop hero. Crop or replace it with an image optimised for portrait orientation and smaller file size.
Font loading and the invisible text problem
Custom fonts are essential for brand consistency. But the way fonts are loaded has a significant impact on perceived performance. There are two common failure modes.
Flash of invisible text (FOIT). The browser waits for the custom font to download before rendering any text. The user sees a blank page for one to three seconds while the fonts load. This is the default behaviour in many browsers and is especially noticeable on slower connections.
Flash of unstyled text (FOUT). The browser renders text in a fallback system font, then swaps to the custom font when it arrives. This causes a visible shift in layout and typography that feels jarring.
The design-aware solution:
- Limit font weights — every weight and style you load is a separate file. Most websites need at most three: regular, medium and bold. Avoid loading italic versions unless your design actively uses them.
- Use font-display: swap — this tells the browser to show the fallback font immediately and swap when the custom font is ready. Pair this with a fallback font that closely matches your custom font's metrics to minimise the visual shift.
- Self-host fonts — loading fonts from Google Fonts or Adobe Fonts adds a DNS lookup, a connection to a third-party server and potential privacy issues. Host the font files on your own server or CDN for faster delivery.
- Subset your fonts — if you only use Latin characters, do not load the full Unicode range. For bilingual sites in the GCC, load Arabic and Latin subsets separately so each page only fetches what it needs.
Animation and scroll effects
Scroll-triggered animations, parallax effects and page transitions are popular in Dubai web design. They create a sense of polish and craftsmanship. They also destroy performance when implemented without discipline.
- Animate only transform and opacity — these properties are handled by the GPU and do not trigger layout recalculations. Animating width, height, margin or padding forces the browser to recalculate the layout of every element on the page for every frame.
- Use Intersection Observer — rather than listening to scroll events (which fire dozens of times per second), use the Intersection Observer API to trigger animations only when elements enter the viewport.
- Limit concurrent animations — animating five elements simultaneously on scroll might look elegant on a MacBook Pro. On a mid-range Android phone in Sharjah, it will stutter. Design with performance constraints in mind.
- Provide a reduced-motion fallback — respect the prefers-reduced-motion media query. Some users have explicitly requested fewer animations for accessibility reasons. Honour that preference.
Third-party scripts and design tools
Design decisions often introduce third-party scripts that accumulate silently.
- Chat widgets — a live chat bubble might seem like a small addition, but popular chat tools load 200 to 500 kilobytes of JavaScript. Defer loading until the user scrolls or interacts.
- Analytics and tracking — Google Analytics, Meta Pixel, LinkedIn Insight Tag, heat mapping tools. Each one adds weight. Audit regularly and remove any that are not actively informing decisions.
- Embedded maps and social feeds — an embedded Google Map on your contact page loads over a megabyte of resources. Use a static map image with a link to Google Maps instead. The same applies to Instagram feed embeds.
Layout shifts and Core Web Vitals
Google's Core Web Vitals directly impact search rankings, and Cumulative Layout Shift (CLS) is the metric most often broken by design decisions. Layout shift happens when elements move on screen after the page has started rendering.
Common design-caused layout shifts:
- Images without dimensions — if an image tag does not specify width and height, the browser cannot reserve space for it. When the image loads, everything below it jumps down.
- Dynamically injected content — cookie consent banners, promotional bars and newsletter popups that push page content down after load.
- Web fonts loading late — as discussed above, font swaps can cause text to reflow, shifting surrounding elements.
The fix for all three is the same principle: reserve space before content arrives. Use aspect-ratio containers for images, fixed-height slots for dynamic content and matched fallback fonts for typography.
The performance budget approach
The most effective way to keep design and performance aligned is to establish a performance budget at the start of every project. A performance budget sets hard limits:
- Total page weight under 1.5 megabytes
- No more than 5 third-party scripts
- Largest Contentful Paint under 2.5 seconds
- Cumulative Layout Shift under 0.1
When a design decision would push the page over budget, something else has to be cut. This is not a constraint on creativity. It is a discipline that ensures beautiful design and fast performance coexist — which is exactly what users in Dubai and the GCC expect in 2026.
Want a website that looks great and loads fast?
Start a Conversation