GA-MO/react-confirm-alert(新しいタブで開きます)
主要言語: TypeScript
react component confirm dialog.
- star 数
- 273
- watcher 数
- 6
- fork 数
- 97
- issue 数
- 0
- 最終更新
- 2026/10/26
主要言語: TypeScript
react component confirm dialog.
Confirm, alert and prompt dialogs for React 18 and 19. await confirm(), a native modal, focus that moves in and back, and the 3.0 confirmAlert unchanged.
Docs · Playground · What's new in 3.1
npm install react-confirm-alert
import { confirm } from 'react-confirm-alert' import 'react-confirm-alert/style.css' if (await confirm({ title: 'Delete file?', message: 'This cannot be undone.', tone: 'danger' })) { remove(file) }
style.css needs 3.1.1 or later. The older path, react-confirm-alert/src/react-confirm-alert.css, still works.
confirm() resolves true or false. alert() and prompt() work the same way, and <DialogHost /> placed inside your providers lets dialogs read their context.
Put your own form, list or warning in a dialog. Plain HTML gets the default look, even under Tailwind v4 preflight, and any class you add wins:
import { DialogLayout, openDialog } from 'react-confirm-alert' const colour = await openDialog({ render: ({ close, dismiss }) => ( <DialogLayout title="Pick a colour" actions={[{ label: 'Cancel', onClick: dismiss }, { label: 'Blue', variant: 'primary', onClick: () => close('blue') }]}> <p>Used for the team badge.</p> </DialogLayout> ) }).result
3.0 customUI still works. Add skin: true for the new look:
confirmAlert({ skin: true, customUI: ({ onClose }) => ( <> <h1>Leave the board?</h1> <p>You can join again from the invite link.</p> <button onClick={onClose}>Stay</button> </> ) })
confirm, alert and prompt take content for JSX between the message and the buttons. See Custom UI.
import { confirmAlert } from 'react-confirm-alert' import 'react-confirm-alert/style.css' confirmAlert({ title: 'Confirm to submit', message: 'Are you sure to do this.', buttons: [ { label: 'Yes', onClick: () => alert('Click Yes') }, { label: 'No', onClick: () => alert('Click No') } ] })
Same options, DOM, class names and CSS path as 3.0.
@import 'tailwindcss'; @import 'react-confirm-alert/style.css' layer(components);
confirm({ title: 'Publish?', classNames: { button: 'rounded-full bg-red-500' } })
Importing the CSS into layer(components) lets Tailwind utilities win without !important. Or pass unstyled: true and style every slot yourself.
| Import | gzip |
|---|---|
import { confirmAlert } |
3,769 B |
import { confirm } |
4,042 B |
| CSS (the shipped file, not minified) | 2,909 B |
Measured on 2026-10-23 with size-limit 14.3.0 (npx size-limit, config in .size-limit.json): the ESM build bundled and minified with React and React DOM excluded, then gzipped. 3.0.6 measured the same way is 2,396 B, including prop-types. The extra bytes are the native modal, focus handling, stacked and queued dialogs, dialogs that render inside your providers, and the default look for your own content.
Docs for v1 and v2. For React 17 or older, use version 2.
MIT