Check that this is really a bug
Reproduction link
https://github.com/Poky85/demo-react-big-calendar-issue
Bug description
When using Drag and drop addon in combination with custom components there is an issue with components being recreated on each render.
See the minimal reproduction repo. There I use custom EventWrapper component and log each remount in the console. It remounts although components passed in the prop are stable.

react-big-calendar@1.9.1 introduced change in custom components merge. In DragAndDrop class component there was mergeComponents() call moved from constructor to render function. See the pull request here.
This is bad approach. Now custom components gets recomputed on each render. React unmounts previous components and mounts them again because references (component functions) are not stable. This has negative impacts:
- Performance issue – unmounted components gets removed from the DOM and then are added again. It triggers lot of unnecessary DOM operations.
- It breaks components lifecycle
Expected Behavior
Custom components should not remount unless the items in components prop changes.
Actual Behavior
Custom components are remounted on each render.
react-big-calendar version
1.9.1
React version
18.3.1
Platform/Target and Browser Versions
macOS 14.2.1 + Chrome 124 / Firefox 125 / Safari 17.2.1
Validations
Would you like to open a PR for this bug?
Check that this is really a bug
Reproduction link
https://github.com/Poky85/demo-react-big-calendar-issue
Bug description
When using Drag and drop addon in combination with custom components there is an issue with components being recreated on each render.
See the minimal reproduction repo. There I use custom
EventWrappercomponent and log each remount in the console. It remounts although components passed in the prop are stable.react-big-calendar@1.9.1introduced change in custom components merge. InDragAndDropclass component there wasmergeComponents()call moved from constructor to render function. See the pull request here.This is bad approach. Now custom components gets recomputed on each render. React unmounts previous components and mounts them again because references (component functions) are not stable. This has negative impacts:
Expected Behavior
Custom components should not remount unless the items in components prop changes.
Actual Behavior
Custom components are remounted on each render.
react-big-calendar version
1.9.1
React version
18.3.1
Platform/Target and Browser Versions
macOS 14.2.1 + Chrome 124 / Firefox 125 / Safari 17.2.1
Validations
Would you like to open a PR for this bug?