React for the shell, D3 for overlays, ESRI for the basemap
Each rendering layer does the work it's best at. ESRI Maps SDK owns the basemap — tiles, projection, GIS primitives, the underlying geographic accuracy. D3 owns everything on top — county polygons, project markers, hazard zones, category-switchable mitigation overlays — because the work there is data-driven (hundreds of features by category, restyling on interaction, animating between states). React owns the surrounding application surface: the controls (search, filters, dropdown), the modal, the routing.
The catch· Three rendering technologies to coordinate (DOM, SVG-via-D3, ESRI canvas). In exchange, each is doing what it's optimized for, and adding an interactive overlay doesn't fight the basemap's rendering.