Download Trigger
Used to trigger a download of a file.
Match MIME, extension and actual content. Async generation, preview readiness and saving a file are different outcomes; consult the dedicated guide for sandbox restrictions.
Included icon notices
The source viewer includes ICON_ATTRIBUTION.md and original notices for the icon collections used by these examples. Preserve them when redistributing examples; react-icons' wrapper license does not replace individual collection terms.
- Lucide: ISC
Generate a download in response to a user action. This is not a file-upload control or a storage backend. This guide targets Chakra UI 3.37.0.
Installation and use
Complete setup.en.md and import DownloadTrigger from @chakra-ui/react. Supply content through data, a file name through fileName, and the actual content type through mimeType. Async data may return a Blob, File or string. Compose a Chakra Button with native asChild; avoid nested button elements.
import { Button, DownloadTrigger } from "@chakra-ui/react"
export function Example() {
return (
<DownloadTrigger data="JGuang demo" fileName="demo.txt" mimeType="text/plain" asChild>
<Button>Download text</Button>
</DownloadTrigger>
)
}
The local inventory preserves four native examples: basic, SVG, Promise and file size. File-size display uses native FormatByte. Names and MIME types must match actual content; renaming a file is not format conversion.
Preview restrictions and real failures
download-trigger-with-promise fetches a public image. JGuang's connect-src policy blocks it. Clicking may produce a genuine failure followed by preview retry. Retry does not remove the restriction; a ready preview is not a successful file download.
The sandbox also omits allow-downloads. Even local-data examples may be prevented from saving a file by the browser. This is a demonstration-environment restriction, not a missing component capability. Verify file content, name and type from a user click in your own top-level application. Do not globally disable browser security to make a demo work.
Production async downloads need authorization, HTTP-status checks, timeout/cancellation, visible errors and repeated-click management. Creating a Blob does not prove that the browser saved a file; do not claim access to the user's actual save location. Do not start automatic downloads.
Accessibility and source
Use an understandable action label, keyboard activation and visible focus. Check long file names in both themes and narrow layouts.
Original examples and MDX are pinned at commit 2e7517745cff2fcde0b8012f136cf99611ff262a under vendor. This is a JGuang-authored guide. The upstream Download Trigger MDX Props section references a Button table; do not mistake it for a complete download API. Consult the pinned native types and source.
Installation and initialization
npm install @chakra-ui/react@3.37.0 @emotion/react@11.14.0
Initialize ChakraProvider with defaultSystem and Emotion before rendering. Preserve the host React version and inspect peer compatibility. Official npm installation supplies components, not these example source files. Use the resource setup guide for locale, next-themes and framework-specific SSR; copy the selected example source separately from npm installation.
Complete native usage example
This is the actual pinned example, not a generic API mock. Copy its source closure and retain the named export. Additional imports are listed per example below.
import { Button, DownloadTrigger } from "@chakra-ui/react"
const data = "The quick brown fox jumps over the lazy dog"
export const DownloadTriggerBasic = () => {
return (
<DownloadTrigger
data={data}
fileName="sample.txt"
mimeType="text/plain"
asChild
>
<Button variant="outline">Download txt</Button>
</DownloadTrigger>
)
}
All examples and reproduction requirements
Names identify demos, not component variant props. Copy every sourceFiles entry for the selected example. The compositions alias denotes local files, not a package. Preserve relative imports or rewrite the alias to your project's actual path. React peers are inspected separately; editor examples retain the coherent pinned Tiptap extension family.
Basic
download-trigger-basic · Named export DownloadTriggerBasic · original upstream example
npm install @chakra-ui/react@3.37.0 @emotion/react@11.14.0
vendor/apps/compositions/src/examples/download-trigger-basic.tsx
Svg
download-trigger-svg · Named export DownloadTriggerSvg · original upstream example
npm install @chakra-ui/react@3.37.0 @emotion/react@11.14.0
vendor/apps/compositions/src/examples/download-trigger-svg.tsx
With Promise
download-trigger-with-promise · Named export DownloadTriggerWithPromise · original upstream example
npm install @chakra-ui/react@3.37.0 @emotion/react@11.14.0 react-icons@5.6.0
vendor/apps/compositions/src/examples/download-trigger-with-promise.tsx
With File Size
download-trigger-with-file-size · Named export DownloadTriggerWithFileSize · original upstream example
npm install @chakra-ui/react@3.37.0 @emotion/react@11.14.0 react-icons@5.6.0
vendor/apps/compositions/src/examples/download-trigger-with-file-size.tsx
Native API and source references
The source viewer retains original declarations, imports and inheritance. Ark UI event contracts, Chakra style props and recipe types stay in their native packages; this guide does not flatten or invent their defaults. Code comments remain original source, not translated prose.
npm/@chakra-ui/react@3.37.0/dist/types/components/download-trigger/index.d.ts
State and installation checks
Run strict types, the target production build and real interactions. Test labels/focus/keyboard, both themes, narrow layout, empty/loading/error states where supported and cleanup after unmount. Remote demo endpoints, uploads and downloads are constrained in the preview; configure your own services. Copying a command or reaching preview-ready does not prove installation or backend success.
Provenance and license boundaries
https://github.com/chakra-ui/chakra-ui/tree/2e7517745cff2fcde0b8012f136cf99611ff262a
These are JGuang practical bilingual notes, not a full translation of upstream MDX. Original documentation and example bytes remain in vendor. Preserve repository MIT, compositions ISC metadata and separate dependency notices. The original metadata discrepancy and any missing full notices remain explicit review items; paid Chakra Pro is excluded.