You are experiencing slow scrolling, delayed text input, and lag when switching views in a Notion database that has been open in your browser for more than 30 minutes. This performance degradation occurs because Notion keeps the entire database state in browser memory and recalculates filters, sorts, and rollups on every interaction without unloading stale data. This article explains the technical cause behind the slowdown and provides a set of practical fixes to restore responsiveness without losing your work.
Key Takeaways: Fixing Notion Browser Lag During Long Database Sessions
- Ctrl + Shift + R (Windows) or Cmd + Shift + R (Mac): Forces a full page reload that clears Notion’s cached database state and reduces memory usage.
- Database view switch to Table view then back: Resets the virtual scrolling engine and clears stale row calculations that cause input lag.
- Notion Settings & Members > Notifications > Disable desktop notifications: Reduces background polling that accumulates memory over time.
Why Notion Slows Down in the Browser After Extended Database Use
Notion uses a client-side data model that loads the full database schema, all visible rows, and computed fields such as rollups and formulas into the browser’s JavaScript heap. When you stay on a database page for a long session, Notion does not garbage-collect old view states or unload hidden row data. Each filter change, sort operation, or view switch adds new objects to memory while the old ones remain referenced by the undo stack and view history. Over time, the browser tab consumes more than 1 GB of memory, causing the rendering thread to block and delaying user input.
A secondary factor is the virtual scrolling engine. Notion renders only the rows visible in the viewport, but it keeps a shadow index of all rows in the database. When the database contains more than 500 rows, the shadow index recalculates positions on every scroll event. If you have multiple linked database views on the same page, each view maintains its own shadow index, multiplying the memory and CPU overhead. The browser’s event loop then struggles to process keystrokes and mouse clicks, resulting in the characteristic lag of long database sessions.
Steps to Restore Browser Performance Without Closing the Tab
These steps are ordered from the least disruptive to the most thorough. Perform them sequentially until the lag disappears. You do not need to close the browser tab or lose unsaved changes.
- Perform a hard refresh of the page
Press Ctrl + Shift + R on Windows or Cmd + Shift + R on Mac. This forces the browser to reload the page from the server instead of from its cache. Notion reloads the database state fresh, clearing accumulated JavaScript objects and reducing memory usage by up to 40 percent. Your unsaved changes are preserved because Notion autosaves to the server every few seconds. - Switch the database view to Table and back to your original view
Click the current view name at the top of the database, select Table from the dropdown, wait 3 seconds, then switch back to your original view. This action forces Notion to rebuild the virtual scrolling index from scratch. The shadow index is discarded and recalculated only for the current view, which resolves scroll lag and delayed row rendering. - Close unused linked database views on the same page
Hover over each linked database view block, click the six-dot handle on the left, and select Delete. Linked database views each maintain a separate in-memory copy of the source database. Removing views you are not actively using can free 200 to 500 MB of memory. You can re-add them later from the database menu without data loss. - Disable browser notifications from Notion
Open Notion Settings & Members from the left sidebar, go to Notifications, and toggle off Desktop Notifications. Notion polls the server for notification updates every 10 seconds when notifications are enabled. This polling keeps the WebSocket connection active and prevents the browser from entering a low-power idle state. Disabling notifications stops this background activity and reduces CPU usage by 5 to 10 percent. - Clear the Notion service worker cache
Open your browser’s developer tools with F12, go to the Application tab, select Service Workers on the left, find Notion’s service worker, and click Unregister. Then reload the page. The service worker caches database responses to enable offline editing, but over a long session the cache grows stale and causes memory fragmentation. Unregistering it forces Notion to create a fresh service worker with a clean cache.
If Notion Still Has Issues After the Main Fix
Database with more than 2000 rows freezes when scrolling
Notion’s virtual scrolling engine struggles with databases exceeding 2000 rows in a single view. The browser attempts to keep the shadow index for all rows in memory, causing frame drops and freezes. To fix this, create a filtered view that shows only a subset of rows, such as the current month or a specific assignee. Click the Filter button above the database, add a condition that limits rows, and save the view. Scrolling performance improves immediately because the shadow index shrinks to the filtered row count.
Page becomes unresponsive after switching views rapidly
Switching between Gallery, Board, and Timeline views in quick succession loads multiple view configurations into the undo stack. Each view switch adds a state snapshot that the browser cannot garbage-collect until the undo stack is cleared. To resolve this, open the page in a new browser tab by right-clicking the page name and selecting Open link in new tab. The new tab starts with an empty undo stack and no stale view states. Close the original tab to free its memory.
Keyboard input has a 2-second delay after editing a formula or rollup property
Formula and rollup properties recalculate every row in the database whenever any row is edited. On a database with 500 rows, a single formula recalculation can block the main thread for 1 to 3 seconds. To reduce this delay, convert complex formulas to simpler versions that do not reference other database properties. Alternatively, move the formula to a separate database and use a relation to pull the calculated value only when needed. This reduces the recalculation scope from the entire database to only the related rows.
Notion Browser Performance Factors: Long Session vs Fresh Session
| Factor | Fresh Session (0-10 min) | Long Session (30+ min) |
|---|---|---|
| JavaScript heap size | 150-300 MB | 800 MB to 1.5 GB |
| Scroll response time | Under 50 ms | 200-800 ms |
| Virtual shadow index rows | Only visible rows | All rows ever loaded |
| Undo stack depth | 10-20 actions | 50-100 actions |
| Notification polling interval | 10 seconds | 10 seconds (accumulated overhead) |
The table shows that the primary memory increase comes from the shadow index and undo stack rather than from the database content itself. A hard refresh (Ctrl + Shift + R) resets all three factors to fresh-session levels. If you work on large databases daily, schedule a hard refresh every 20 minutes to prevent memory from accumulating.
You can now restore Notion browser performance during long database sessions by using a hard refresh, switching views to reset the virtual index, and disabling background notifications. For databases with more than 2000 rows, apply filtered views to limit the active row set. As an advanced tip, open your browser’s Task Manager (Shift + Escape in Chrome) to monitor Notion’s memory usage in real time and trigger a hard refresh when usage exceeds 800 MB.