- Written by: Hummaid Naseer
- July 24, 2025
- Categories: Custom Software & App Development
Whether it’s a SaaS platform, mobile app, or eCommerce experience, users expect instant responsiveness. Every second of delay impacts critical business metrics:
Bounce Rates increase when load times exceed 3 seconds
Conversion Rates drop by up to 20% for every additional second of wait
SEO Rankings decline as Google prioritises faster, mobile-optimised pages
For our product team, it became clear: performance was user experience. Despite having rich features and a strong UI, the app was under-performing in key areas, especially on mobile and under load. Speed complaints were surfacing in user feedback, and churn analysis pointed to slow responsiveness as a top frustration.
That’s why performance optimisation became a top engineering priority, not just a technical fix but a strategic move to improve retention, satisfaction, and revenue. What followed was a deep dive into bottlenecks, re-architecture of key flows, and smarter use of cloud and caching to deliver the speed users demanded.
What Was Slowing Down the App
Before performance optimisation began, the application was plagued by several critical issues that directly impacted user experience, especially on slower networks and lower-end devices. A combination of frontend and backend bottlenecks contributed to long load times and sluggish interactions.
Large JavaScript Bundles
The frontend was shipping monolithic JS bundles including unused libraries and redundant code, which bloated the initial page load and delayed interactivity.
Root Cause: Lack of code splitting, no tree-shaking, and bundling third-party scripts without optimisation.
Un-optimised Images
Images were being served in large sizes and non-modern formats (e.g., PNG, JPEG) without compression or lazy loading.
Root Cause: No image optimisation pipeline or CDN. Static assets were directly loaded from the server.
Blocking API Calls During Render
Critical API calls were synchronously blocking the UI, making users wait before they could interact with content.
Root Cause: Poor asynchronous logic and frontend tightly coupled to backend response timing.
Poor Server Response Time
The backend had high TTFB (Time to First Byte), especially during peak traffic.
Root Cause: Lack of caching, heavy middleware logic, and absence of load balancing or autoscaling.
Inefficient Database Queries
Key routes were bottlenecked by slow DB queries, especially those fetching related data or large datasets.
Root Cause: Missing indexes, N+1 query problems, and no pagination or query optimisation strategy.
Establishing the Baseline
Before any performance improvements could be made, the team needed a clear, data-driven understanding of where the app stood. A comprehensive audit was conducted to identify bottlenecks, set a performance baseline, and prioritise optimisation efforts.
Tools Used for Performance Auditing
To gain a 360° view of the app’s performance, the following tools were employed:
Google Lighthouse: for overall performance scoring and insights on accessibility, SEO, and best practices
GTmetrix: to analyze page load structure, waterfall breakdown, and real-world performance metrics
Chrome DevTools: for deep diagnostics including network payload analysis, rendering timeline, and JavaScript profiling
Key Metrics Benchmarked
The team focused on core web performance indicators that directly impact user experience:
Time to First Byte (TTFB):
Measured the time it took for the browser to receive the first byte from the server.
Initial finding: ~850ms TTFB—well above the recommended <200ms target.First Contentful Paint (FCP):
Tracked how quickly users could see the first visual element (e.g., header, image).
Initial finding: ~2.8s FCP—causing users to perceive the app as sluggish.
Total Blocking Time (TBT):
Quantified how much time was spent blocking the main thread, preventing user interaction.
Initial finding: ~900ms TBT—mainly due to heavy JavaScript execution.
Optimisation Tactics That Made the Difference
After identifying the key performance bottlenecks, the engineering team implemented a series of targeted optimisations. Each strategy was chosen for its direct impact on speed, scalability, and responsiveness, leading to measurable improvements across all major performance metrics.
Code-Splitting & Lazy Loading
Large monolithic JavaScript bundles were broken down using dynamic imports and route-based code-splitting.
Impact: Reduced initial bundle size and improved First Contentful Paint (FCP)
Tools Used: Webpack, React.lazy, and React.Suspense
Image Compression & Next-Gen Formats (WebP)
All assets were reprocessed to use optimised formats like WebP, with proper dimensioning and lazy loading.
Impact: Cut image payload by 60–80%, speeding up load times significantly
Tools Used: ImageMagick, Sharp, Next.js <Image>, LazyLoad.js
CDN Implementation for Static Assets
Static files (JS, CSS, images, fonts) were moved to a Content Delivery Network (CDN) to serve them closer to users.
Impact: Faster load times globally, reduced server load, improved cache hit ratio
CDNs Used: Cloudflare, AWS CloudFront, or Fastly
Server-Side Rendering (SSR) or Static Site Generation (SSG)
Critical pages were migrated to SSR (for dynamic content) or SSG (for static content) to speed up first loads and improve SEO.
Impact: Reduced Time to First Byte (TTFB) and improved crawlability for search engines
Frameworks: Next.js, Nuxt.js, or Astro (depending on tech stack)
Caching and HTTP/2 Adoption
Implemented browser-side caching with long Cache-Control headers
Enabled HTTP/2 to allow multiplexed and parallel asset loading
Set up edge caching on CDN and server-side caching for database-heavy endpoints
Impact: Reduced redundant requests and sped up repeated page loads drastically.
Database Query Optimisation
Indexed frequently queried columns
Refactored inefficient SQL and eliminated N+1 queries
Added pagination to avoid full table scans
Introduced read replicas for high-traffic read endpoints
Impact: Reduced response time on data-heavy pages from several seconds to under 300ms.
Outcome
After implementing these optimisations, core performance metrics improved across the board:
Metric | Before | After |
TTFB | 850ms | 180ms |
FCP | 2.8s | 1.2s |
TBT | 900ms | 180ms |
PageSpeed Score | 52 | 92 |
Back-end Improvements for Speed and Scalability
While frontend optimisation improved perceived speed, the real power boost came from backend enhancements that tackled latency, resource management, and request throughput. These changes made the app not just faster—but reliably scalable under real-world loads.
API Response Time Tuning
The team profiled key endpoints to reduce backend response time:
Refactored inefficient business logic and reduced nested calls
Added pagination and partial responses (e.g., GraphQL fragments or REST filtering)
Implemented response caching for frequently hit endpoints (Redis, in-memory cache)
Result: API latency dropped by up to 70% on critical routes.
Load Balancing Across Multiple Instances
To improve reliability and distribute traffic:
Deployed horizontal scaling via auto-scaling groups
Introduced reverse proxies (NGINX, AWS ELB) to handle routing
Enabled health checks and traffic rerouting on failure
Result: Higher uptime, better request distribution under peak load.
Asynchronous and Background Processing
Heavy or non-critical tasks (like notifications, reports, file uploads) were offloaded to background jobs:
Integrated message queues (e.g., RabbitMQ, AWS SQS, or Celery)
Used non-blocking I/O for DB and API calls
Applied event-driven logic for smoother user experience
Result: Faster API response times and improved system responsiveness.
4. Migration to Cloud-Native or Serverless Infrastructure
Where applicable, backend components were migrated to more elastic, modern infrastructure:
Cloud-native deployment: Docker + Kubernetes or ECS/Fargate for microservices
Serverless functions: AWS Lambda or Google Cloud Functions for bursty, stateless workloads
Managed DBs: Switched to auto-scalable services like AWS RDS or Firebase
Result: Reduced DevOps overhead, improved scalability, and pay-as-you-grow efficiency.
Testing and Verification
Once the optimization work was complete, the team ran a rigorous set of performance tests to validate improvements across devices, network conditions, and usage scenarios. The results showed dramatic gains in speed, responsiveness, and user experience.
Before vs. After Performance Metrics
Metric | Before Optimization | After Optimization | Improvement |
Page Load Time | 4.8s | 1.3s | ~73% |
Time to Interactive (TTI) | 5.6s | 2.1s | ~62% |
First Contentful Paint | 2.8s | 1.1s | ~61% |
Total Blocking Time (TBT) | 900ms | 180ms | ~80% |
Mobile Lighthouse Score | 45/100 | 91/100 | +102% |
Desktop Lighthouse Score | 68/100 | 98/100 | +44% |
Verification Tools Used
Google Lighthouse: Audited performance across Core Web Vitals (FCP, TTI, TBT, CLS)
WebPageTest & GTmetrix: Measured real-world load times under various network speeds
Chrome DevTools: Used the Performance tab for flame chart analysis and JS thread breakdown
Synthetic Load Testing: Simulated concurrent users to verify backend and API performance under load
Mobile Performance Leap
One of the biggest wins was on mobile, where load times dropped by over 3 seconds, and Lighthouse scores jumped from frustrating to excellent. This had an immediate positive impact on:
SEO rankings
User retention
Conversion rates on mobile checkout flows
User and Business Impact
The 70% improvement in app performance wasn’t just a technical win—it translated into tangible gains for both users and the business. By optimising speed, responsiveness, and stability, the team unlocked new levels of engagement, retention, and cross-platform consistency.
User Retention Increased
Faster load times and snappier UI led to a noticeable uptick in returning users.
Session duration increased by 28%
Drop-off rates during onboarding dropped significantly
Why it matters: Users who experience delays during their first visit are far less likely to return. The improved speed created a smoother first impression.
Bounce Rates Dropped
Slow-loading pages had previously pushed users away before they could even interact.
After optimisation:
Bounce rate on mobile dropped from 62% → 38%
Desktop bounce rate improved by ~30%
Insight: Improved First Contentful Paint (FCP) and Time to Interactive (TTI) helped users stay and explore.
Conversions and Engagement
With reduced friction and load latency, the app saw a sharp rise in user actions:
Sign-ups increased by 22%
Checkout completion rate rose by 18%
In-app feature engagement (like filters, search, or sharing) saw a 35% boost
Bottom line: Performance improvements contributed directly to higher revenue-generating activity.
Smoother Cross-Device Experience
By optimising images, adopting responsive design, and tuning performance for various screen sizes:
Mobile Lighthouse scores improved from 45 → 91
App performance stabilised across devices and bandwidth conditions
Users on low-end Android devices saw 2x faster load times
Result: Greater reach, especially in emerging markets where users often face bandwidth and device limitations.
Conclusion: Speed = Growth
By focusing on performance, the team didn’t just build a faster app they unlocked measurable business growth, increased satisfaction, and a more resilient platform ready for future scale.

