Performance issues (and suitability) of react-beautiful-dnd with many (200+ droppables)?

I am making React Material-UI react-beautiful-dnd component which display number of TV breaks (each break is in a separate panel/dnd droppable) and each TV break displays the list of ads inside the break. My most minimal code is this:

import React, { useState } from 'react';
import { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';
import { Paper, List, ListItem, ListItemText, Box, Typography } from '@mui/material';

// Initial ads data
const initialAds = [
  { itemNo: 1, breakNum: 1 },
  { itemNo: 2, breakNum: 1 },
  { itemNo: 3, breakNum: 2 },
  { itemNo: 4, breakNum: 2 },
  { itemNo: 5, breakNum: 3 },
  { itemNo: 6, breakNum: 3 },
  { itemNo: 7, breakNum: 4 },
  { itemNo: 8, breakNum: 4 },
  { itemNo: 9, breakNum: 5 },
  { itemNo: 10, breakNum: 5 }
];

const MinimalDragDrop = () => {
  const [ads, setAds] = useState(initialAds);

  const onDragEnd = (result) => {
    const { source, destination } = result;

    // Dropped outside the list
    if (!destination) {
      return;
    }

    // Dropped in the same place
    if (
      source.droppableId === destination.droppableId &&
      source.index === destination.index
    ) {
      return;
    }

    // Find the ad being moved
    const draggedAd = ads.find(ad => ad.itemNo === parseInt(result.draggableId));

    // Update the breakNum of the dragged ad
    const updatedAds = ads.map(ad =>
      ad.itemNo === draggedAd.itemNo
        ? { ...ad, breakNum: parseInt(destination.droppableId.split('_')[1]) }
        : ad
    );

    setAds(updatedAds);
  };

  const renderPanel = (breakNum) => {
    return (
      <Box key={breakNum} display="flex" flexDirection="column" alignItems="flex-start" padding="0.5rem" margin="0.5rem" border="1px solid lightgray" width="200px">
        <Typography variant="body1" style={{ fontSize: '0.8rem', fontWeight: 'bold' }}>
          Break {breakNum}
        </Typography>
        <Droppable droppableId={`panel_${breakNum}`}>
          {(provided) => (
            <List {...provided.droppableProps} ref={provided.innerRef} style={{ maxHeight: 150, overflow: 'auto', padding: '0.5rem' }}>
              {ads
                .filter(ad => ad.breakNum === breakNum)
                .map((ad, index) => (
                  <Draggable key={ad.itemNo} draggableId={ad.itemNo.toString()} index={index}>
                    {(provided) => (
                      <ListItem
                        ref={provided.innerRef}
                        {...provided.draggableProps}
                        {...provided.dragHandleProps}
                        style={{ ...provided.draggableProps.style, fontSize: '0.6rem', padding: '0.2rem', margin: '0px' }}
                      >
                        <ListItemText primary={`Ad ${ad.itemNo}`} primaryTypographyProps={{ style: { fontSize: '0.7rem' } }} />
                      </ListItem>
                    )}
                  </Draggable>
                ))}
              {provided.placeholder}
            </List>
          )}
        </Droppable>
      </Box>
    );
  };

  return (
    <DragDropContext onDragEnd={onDragEnd}>
      <Paper style={{ padding: '1rem', display: 'flex', justifyContent: 'center', flexWrap: 'wrap' }}>
        {renderPanel(1)}
        {renderPanel(2)}
        {renderPanel(3)}
        {renderPanel(4)}
        {renderPanel(5)}
      </Paper>
    </DragDropContext>
  );
};

export default MinimalDragDrop;

It is quite conscise: Droppable panel has droppableId, the draggable div has draggableId and onDragEnd receives as arguments source and destination Droppable with their id’s and the draggableId. If I am assigning semantical droppablId and draggableId, then I can immediatly do the data update inside onDragEnd which I am doing in this example.

This is minimal example. But my full code contains Redux store/RTK Toolkit/slice and approximately 200+ breaks (hence Droppable panels). And I am doing the the observation of render with Firefox Web Developer Tools and Compontes/Performance tools from React Developer Tools and I can observer that just the touching and dragging the item makes re-render almost all of breaks although dragging visually encouters just two breaks/panels/Droppables – soure and destination and I am choosing the neighbour panels for my initial tests.

So – is react-beautiful-dnd suitable for 200+ Droppable panels in one DragDropContext and are there mechanisms, prevention of rerender of remaining Droppable panels if I am just dragging from one to another neighbouring panels?

Practically touching/dragging (getting grabbed) item takes around full second in the production implementationa and that is lot of time – DD is supposed to be done at the parts of seconds.

I am trying to reason how the react-beautiful-dnd may handle all this and I have no idea about basic. Maybe HTML/DOM has in-built DD features and the item (e.g. DOM element div, etc.) can be visually captured and dragged already at the HTML/DOM level and react-beautiful-dnd should do just accounting. But may be possible as well that HTML/DOM has no DD support and that is why react-beautiful-dnd may be responsibl for all the visualization of the moving HTML/DOM element? And – in this latter case – the many, many React re-renders may be involved.

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật