Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
How we built Housing Go Chrome Dev Summit 2016
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
AWS DevOps Agent スキルをつかいこなそう / Master AWS DevOps Agent Skills
kinunori
2
530
AI Agent入門〜今更聞けないAgentの話〜
hiromimaganuma
0
120
リアーキテクチャ後の障害ゼロを目指したShadow Testingの取り組み
nihonbuson
PRO
1
180
地方移住と都心キャリアの両立は「金・時間・人」のリソースをフル活用すれば実現できる!〜Snowflake女子会 vol.8
snowwmn0824
0
120
なぜAI任せのゲームは面白くならないのか?
hirohasuyoutube
0
150
「今盗んで、後で解く」に備える ― AWSのポスト量子暗号入門
yama3133
2
250
AI coding 整合正規方法
philipz
0
550
ADKで始める業務改善 - AIエージェント開発時の考えと設計
harappa80
2
290
PQC移行の今 -- IETF からみた現在地
satokan
4
440
Goodbye ShellScript, Hello File-based App
shunsock
0
1.2k
AIエージェントの権限管理 3: Agentic RAG の Fine grained access control 編
ren8k
1
280
なぜ「決定性」が 決定的に重要なのか? Durable Execution 基盤の数理的理解 #serverlessjp / ServerlessDays Tokyo 2026
ytaka23
4
1.3k
Featured
See All Featured
Designing Experiences People Love
moore
143
24k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Making the Leap to Tech Lead
cromwellryan
135
10k
ラッコキーワード サービス紹介資料
rakko
1
5M
How to Talk to Developers About Accessibility
jct
2
560
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
340
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
How to Ace a Technical Interview
jacobian
281
24k
Darren the Foodie - Storyboard
khoart
PRO
4
4k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
390
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
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