tapcn
Components

Tooltip

A floating label that provides contextual information on hover or focus.

+

Tooltip

A tooltip component that displays a brief, informative message when the user hovers over or focuses on an element. Built on @rn-primitives/tooltip.

Installation

npx @tapcn/cli add tooltip

Or using shadcn directly:

npx shadcn@latest add https://tapcn.vercel.app/r/tooltip.json

This will also install the text component.

Usage

import {
  Tooltip,
  TooltipContent,
  TooltipTrigger,
} from '~/components/ui/tooltip';
import { Button } from '~/components/ui/button';
import { Text } from '~/components/ui/text';

export function Example() {
  return (
    <Tooltip>
      <TooltipTrigger asChild>
        <Button variant="outline">
          <Text>Hover me</Text>
        </Button>
      </TooltipTrigger>
      <TooltipContent>
        <Text>This is a tooltip</Text>
      </TooltipContent>
    </Tooltip>
  );
}

With icon button

import { Icon } from '~/components/ui/icon';
import { Info } from 'lucide-react-native';

export function IconTooltip() {
  return (
    <Tooltip>
      <TooltipTrigger asChild>
        <Button variant="ghost" size="icon">
          <Icon as={Info} size={16} />
        </Button>
      </TooltipTrigger>
      <TooltipContent>
        <Text>More information about this feature.</Text>
      </TooltipContent>
    </Tooltip>
  );
}

Controlled tooltip

import { useState } from 'react';

export function ControlledTooltip() {
  const [open, setOpen] = useState(false);

  return (
    <Tooltip open={open} onOpenChange={setOpen}>
      <TooltipTrigger asChild>
        <Button variant="outline">
          <Text>Controlled</Text>
        </Button>
      </TooltipTrigger>
      <TooltipContent>
        <Text>This tooltip is controlled.</Text>
      </TooltipContent>
    </Tooltip>
  );
}

Sub-Components

ComponentDescription
TooltipRoot component, manages open/closed state
TooltipTriggerThe element that triggers the tooltip
TooltipContentThe floating tooltip content

Props

TooltipContent

PropTypeDefaultDescription
side'top' | 'right' | 'bottom' | 'left''top'Which side of the trigger to display on
sideOffsetnumber4Distance from the trigger
classNamestring--Additional NativeWind classes

Platform Behavior

  • Web: Appears on hover with a delay, also accessible via keyboard focus
  • Native: Appears on long-press since hover is not available on touch devices

Dependencies

  • text -- for TextClassContext
  • @rn-primitives/tooltip -- underlying primitive

On this page