I did a series of local tests to determine how quickly Notion would load if all API responses were available near-immediately. Full article → Case study: Analyzing Notion app performance
- Use Charles as a local HTTP/2 proxy
- Intercept and save API responses for the following requests:
POST /api/v3/loadPageChunk
POST /api/v3/getUserAnalyticsSettings
POST /api/v3/getClientExperiments
POST /api/v3/getPublicPageData
POST /api/v3/syncRecordValues
- Using the “Map local” feature, make above requests serve saved responses from the local FS
- Confirm that with “Map local” enabled, response times go down from 200+ ms to 20+ ms
- Go to Chrome DevTools → Audits → Settings and uncheck the “Simulated throttling” flag
- With “Map local” disabled (but with Charles still running), run 3 performance audits
- With “Map local” enabled, run 3 other performance audits
- For each performance audit:
- click “View trace”
- go to Frames
- find the first frame which has the page text
- and record the timestamp of that frame
Without “Map local”, ms | With “Map local”, ms | |
---|---|---|
Audit 1 | 20887 | 18570 |
Audit 2 | 21472 | 19355 |
Audit 3 | 20685 | 18817 |
Average | 21015 | 18914 |
Improvement: 9.9%