Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
How we built Housing Go Chrome Dev Summit 2016
Search
Rahul Yadav
November 11, 2016
Technology
580
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
How we built Housing Go Chrome Dev Summit 2016
Rahul Yadav
November 11, 2016
More Decks by Rahul Yadav
See All by Rahul Yadav
Building Fast and Performant Apps.
dxtr026
5
1.1k
Other Decks in Technology
See All in Technology
Bits Agent Builder の⼊⾨と活⽤事例
nulabinc
PRO
0
180
Invisible to AI? Making TYPO3 Sites Quotable by AI Search Systems
wolfgangwagner
0
220
Breaking the Seal: Static Deobfuscation of Compiled V8 JavaScript Bytecode Malware
hshrzd
0
850
老害フォレンジッカーはAI羊の夢を見るか?
tadmaddad
0
340
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
9.2k
Webアクセシビリティ入門 2026
recruitengineers
PRO
3
640
LanceDB入門
mocobeta
8
590
『三匹の子ぶた』から学ぶネットワークセキュリティの昔と今 / Network Security: Then and Now Through the Lens of The Three Little Pigs
nttcom
1
6.2k
Data Hubグループ 紹介資料
sansan33
PRO
0
3.2k
ブラウザ研修 2026
recruitengineers
PRO
6
1.1k
攻撃と防御で学ぶAI時代のプロダクトセキュリティ演習
recruitengineers
PRO
9
3k
Genie Codeハンズオン基礎編
taka_aki
1
130
Featured
See All Featured
Game over? The fight for quality and originality in the time of robots
wayneb77
1
240
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
430
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
470
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
66
57k
Code Review Best Practice
trishagee
74
20k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Docker and Python
trallard
47
4.1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Building Applications with DynamoDB
mza
96
7.2k
Transcript
How we built it !
Rahul Yadav Team Lead, Front-end, Housing.com @dxtr026
“Home buying is a one-time activity for majority of our
users”
Challenges Low end phones
Old Website Monolithic Architecture Code Bloat Performance Suffered
Better Discovery
Cost 0 150 300 Native App Mobile Web INR 250
INR 5
Browser Support
30% faster page load 10% longer average session 40% lower
bounce rate 38% more conversions tinyurl.com/housingPWA Housing Go
Ritesh Kumar Front-end developer, Housing.com @ritz078
• Assets delivery • First [Meaningful] Paint • First JS
enabled interaction • Returning user experience
Assets Delivery
Traditional website waterfall HTML CSS JS Render Starts Document Interactive
HTML Streaming
Partial HTML - 4.2 KB preconnect preload inline-css
Full HTML - 15 KB
Preload
First [Meaningful] Paint
First Paint First Meaningful Paint
Server Side Rendering
App Shell Model - First Load Nexus 5 - 3G
(1.6 Mbps/768 Kbps 300 ms RTT) Loading Screen of Purgatory White screen of death Meaningful Content 2.2s 7s
SSR enabled White screen of death Meaningful Content Nexus 5
- 3G (1.6 Mbps/768 Kbps 300 ms RTT) 2.3s
Basic Meaningful content without JavaScript
Lazy Load & JS enabled interaction “Lesser the JS, faster
the interaction time”
Code Splitting using
JS & CSS Sharding Hash: 3385819cba20c36c8271 Version: webpack 2.1.0-beta.25 Time:
26022ms Asset Size Chunks Chunk Names manifest.js.gz 1.4 kB 25 [emitted] manifest vendor.js.gz 64 kB 21, 25 [emitted] vendor app.js.gz 39.6 kB 22, 25 [emitted] app homeView.js.gz 11.5 kB 2, 25 [emitted] homeView searchView.js.gz 32.1 kB 1, 25 [emitted] searchView filterView.js.gz 14 kB 8, 25 [emitted] filterView notifyView.js.gz 9.21 kB 9, 25 [emitted] notifyView projectsDedicatedView.js.gz 30.5 kB 0, 25 [emitted] projectsDedicatedView resaleDedicatedView.js.gz 23.9 kB 5, 25 [emitted] resaleDedicatedView pushNotificationsView.js.gz 1.81 kB 17, 25 [emitted] pushNotificationsView offlineView.js.gz 1.81 kB 18, 25 [emitted] offlineView app.css.gz 1.37 kB 22, 25 [emitted] app lazyView.css.gz 3.79 kB 23, 25 [emitted] lazyView homeView.css.gz 2.54 kB 2, 25 [emitted] homeView searchView.css.gz 2.89 kB 1, 25 [emitted] searchView filterView.css.gz 1.5 kB 8, 25 [emitted] filterView notifyView.css.gz 1.16 kB 9, 25 [emitted] notifyView pushNotificationsView.css.gz 1.48 kB 17, 25 [emitted] pushNotificationsView resaleDedicatedView.css.gz 4.22 kB 5, 25 [emitted] resaleDedicatedView projectsDedicatedView.css.gz 6.82 kB 0, 25 [emitted] projectsDedicatedView offlineView.css.gz 368 bytes 18, 25 [emitted] offlineView
Route Based Chunks
<Route name="search" path="search" getComponent={(location, cb) => { require.ensure([], (require) =>
{ require('views/searchView') requireStyle("searchView").then(() => { cb(null, require("views/searchView").default) loadView("detailsView") }) }, "searchView") }} />
Intent Based Chunks
notifyView.js loads once this is clicked 32 KB
First [Meaningful] Paint JS enabled interaction Nexus 5 - 3G
(1.6 Mbps/768 Kbps 300 ms RTT) 2.3 s 4.2 s
Push Render Pre-cache Lazy-load
Returning Users
Pre-cache using Service Workers importScripts('sw-toolbox.js') // pre caching const resources
= ['filterView.js','detailsView.js','searchView.js'] toolbox.precache(resources) // runtime caching toolbox.router.get('(.*).js', toolbox.cacheFirst, { origin: /.housingcdn.com/, mode: 'cors', cache: { name: 'js-assets', maxEntries: 20 } })
First Visit First meaningful paint : 712 ms JS enabled
interaction : 1.1 s First meaningful paint : 2.2s JS enabled interaction : 4.2 s Repeated Visit Nexus 5 - 3G (1.6 Mbps/768 Kbps 300 ms RTT)
Add to Home Screen Push Notifications Better Conversions
Offline Navigation Active link. Navigation allowed in offline mode
Credential Management API
Maintenance
Continuous Integration
File sizes
Route based Statistics
Network Waterfall & TimeLine http://tinyurl.com/housingPWACi
Whats’s Next ?
React preact + preact-compat
PWA AMP http://tinyurl.com/housingAMP
Thank You! Rahul Yadav @dxtr026 Ritesh Kumar @ritz078 @housingengg @engineering-housing