From cb886c66d16c072b1b994fb4832672389c0a32e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denny=20Mor=C3=A1n?= Date: Wed, 11 Mar 2026 14:03:38 -0500 Subject: [PATCH 1/4] fix(theme): hide CopyButton in non-secure contexts where clipboard API is unavailable --- .../src/theme/CodeBlock/Buttons/CopyButton/index.tsx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/docusaurus-theme-classic/src/theme/CodeBlock/Buttons/CopyButton/index.tsx b/packages/docusaurus-theme-classic/src/theme/CodeBlock/Buttons/CopyButton/index.tsx index a09400029890..4301bcd12e56 100644 --- a/packages/docusaurus-theme-classic/src/theme/CodeBlock/Buttons/CopyButton/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/CodeBlock/Buttons/CopyButton/index.tsx @@ -44,6 +44,10 @@ function ariaLabel(isCopied: boolean) { }); } +function useClipboardSupported() { + return typeof navigator !== 'undefined' && !!navigator.clipboard; +} + function useCopyButton() { const { metadata: {code}, @@ -66,8 +70,13 @@ function useCopyButton() { } export default function CopyButton({className}: Props): ReactNode { + const isClipboardSupported = useClipboardSupported(); const {copyCode, isCopied} = useCopyButton(); + if (!isClipboardSupported) { + return null; + } + return (