Tooltip

A tooltip is a label that appears beside an element while it is hovered or focused. React Bootstrap 126 splits the job: <Tooltip> is the bubble, <OverlayTrigger> decides when to show it and where.

One tooltip per placement, driven by a map over four positionsJavaScript
import { OverlayTrigger, Tooltip, Button } from 'react-bootstrap';
const places = ['top', 'right', 'bottom', 'left'];
export default function Toolbar() {
  return places.map((placement) => (
    <OverlayTrigger key={placement} placement={placement} delay={{ show: 250, hide: 100 }}
      overlay={<Tooltip id={`tip-${placement}`}>On <strong>{placement}</strong></Tooltip>}>
      <Button variant="secondary" className="me-2">Tooltip on {placement}</Button>
    </OverlayTrigger>
  ));
}

OverlayTrigger takes exactly one child and clones it to attach onMouseEnter, onMouseLeave, onFocus, onBlur and a ref, so a custom child must forward its props and ref to a real DOM node. The bubble renders through a portal (Portals) into document.body, which is how it escapes an overflow: hidden ancestor. Popper (@popperjs/core, via @restart/ui) positions it at open time and flips the placement when the preferred side has no room. Set trigger to 'click', 'focus' or ['hover', 'focus'], and show with onToggle to drive it from state.

One thing it does not do is announce itself: version 2.10.10 puts no aria-describedby on the trigger, so a screen reader user gets the button's label and nothing else. Add aria-describedby="tip-top" to the <Button> yourself, matching the id you gave <Tooltip>, whenever the bubble carries information the label does not.