Sobes.tech
Middle

The user pressed a button, a large data array came from the backend, and the screen froze. What could have caused this and how to fix it?

sobes.tech AI

Answer from AI

Screen freezing when receiving a large data array from the backend is usually related to blocking the main UI thread due to heavy data processing or rendering.

Possible causes:

  • Synchronous processing of large data volumes on the client.
  • Rendering too many elements in the DOM.
  • Lack of pagination or lazy loading.

How to solve the problem:

  • Asynchronous processing: Use Web Workers to process data in a separate thread.
  • Pagination or virtualization: Load and display data in parts, for example, 20-50 items at a time.
  • Rendering optimization: Use virtual scrolling techniques so that only the visible number of elements are in the DOM at the same time.
  • Debouncing and throttling: If data updates frequently, limit the UI update frequency.

Example of virtualization in React with the react-window library:

import { FixedSizeList as List } from 'react-window';

const Row = ({ index, style, data }) => (
  <div style={style}>{data[index]}</div>
);

const VirtualizedList = ({ items }) => (
  <List
    height={500}
    itemCount={items.length}
    itemSize={35}
    width={300}
    itemData={items}
  >
    {Row}
  </List>
);

This allows displaying thousands of items without interface freezing.