ReactFoo Delhi

ReactFoo Delhi

On React, performance and front-end engineering

Upendra Dev Singh


Building a High Performance Mobile-First Web App | A case study of Jabong PWA

Submitted Nov 1, 2019

Modern web applications are JavaScript heavy. JavaScript ecosystem is such that you get a lot of tools, libraries, and the framework for free. The cost of using a framework could be very high. During this talk, I will take the audience through the Jabong PWA implementation using preact. I will talk about how we applied the domain-driven design approach to make some important architecture decisions upfront to choose our technology stack e.g preact, preact-router, in-house state management container (similar to redux). I will also talk about performance optimizations techniques we have used to achieve a perfect Lighthouse Score “100”. WPT report is available here


This talk will cover how we have reduced the JavaScript footprint drastically using preact and related libraries. Also, we will talk about the code-splitting in preact app that allowed us to render a fully interactive page with just 18kb of JavaScript less than react size.

These are some of the latest web and browser technologies we have implemented.

ZERO render blocking requests
Intersection Observer
Lazy load images using Intersection Observer
Replace onScroll with Intersection Observer
Preload critical requests
Hybrid rendering
RequestAnimationFrame for visual changes
Passive Listeners
Precache future routes with serviceworker
Route-based & Component-based Code Splitting
HTTP/2 - Server push and multiplexing
Preconnect third party domains
Maximize GPU usage
Using the latest image formats for different browsers Progressive jpeg and WebP
Network API & dpr-based Image delivery
Web Font optimization



Speaker bio

Director of Engineering at Myntra Jabong
“Using technology to build product that helps customers to make better buying decisions”




{{ gettext('Login to leave a comment') }}

{{ gettext('Post a comment…') }}
{{ gettext('New comment') }}
{{ formTitle }}

{{ errorMsg }}

{{ gettext('No comments posted yet') }}