Hooks
PreviousNext

Use Copy To Clipboard

A simple hook to copy to clipboard.

Installation

Copy and paste the following code into your project.

hooks/use-copy-to-clipboard.ts
"use client"

import * as React from "react"

export function useCopyToClipboard({
  timeout = 2000,
  onCopy,
}: {
  timeout?: number
  onCopy?: () => void
} = {}) {
  const [isCopied, setIsCopied] = React.useState(false)

  const copyToClipboard = (value: string) => {
    if (typeof window === "undefined" || !navigator.clipboard.writeText) {
      return
    }

    if (!value) return

    navigator.clipboard.writeText(value).then(() => {
      setIsCopied(true)

      if (onCopy) {
        onCopy()
      }

      if (timeout !== 0) {
        setTimeout(() => {
          setIsCopied(false)
        }, timeout)
      }
    }, console.error)
  }

  return { isCopied, copyToClipboard }
}

Usage

import { useCopyToClipboard } from '@kit/ui/hooks/use-copy-to-clipboard';
const { copyToClipboard, isCopied } = useCopyToClipboard();
 
return (
    <Button
        aria-label="Copy to clipboard"
        onClick={() => copyToClipboard(TEXT_TO_COPY)}
    >
        {isCopied ? <Check className="size-3.5" /> : <Copy className="size-3.5" />}
    </Button>
)

API Reference

Nothing special here.

How is this guide?

Last updated on 10/17/2025