Delete Account
Let a signed-in user delete or deactivate their account with enough friction to prevent accidental loss.
Delete account
Permanently remove your account and all of its data. This cannot be undone.
Example result — your output may vary with your context and the prompt you pass.
# Delete Account: Confirm Dialog
## Context
Flexnative UI intent — a reference solution from the shadcn/ui registry (@flx). The intent frames the problem; the decision is one approach to it.
## Problem
Let a signed-in user delete or deactivate their account with enough friction to prevent accidental loss.
## Decision
- Best for: The default for a destructive action that runs immediately. A danger zone button opens a dialog that asks the user to type a confirmation word, so deletion takes a deliberate second step.
- Trade-off: A single dialog gives no room to explain consequences or capture a reason, so it suits accounts where the loss is small and obvious.
## Registry Item
@flx/delete-account-1
## Stack
- UI: shadcn/ui
- Styling: Tailwind CSS
- shadcn components: Button, Card, Dialog, Input, Label
- npm: lucide-react
## Registry Source
https://ui.flexnative.com/r/delete-account-1.json
## Preview
https://ui.flexnative.com/intents/delete-account#1
## Reference Implementation
```tsx
'use client'
import { useState } from 'react'
import { TriangleAlert } from 'lucide-react'
import { Button } from '@/components/ui/button'
import {
Card,
CardContent,
CardDescription,
CardHeader,
CardTitle,
} from '@/components/ui/card'
import {
Dialog,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
DialogTrigger,
} from '@/components/ui/dialog'
import { Input } from '@/components/ui/input'
import { Label } from '@/components/ui/label'
const CONFIRM_WORD = 'DELETE'
export function DeleteAccount1() {
const [value, setValue] = useState('')
const confirmed = value.trim() === CONFIRM_WORD
return (
<Card className="border-destructive/40">
<CardHeader>
<CardTitle className="text-destructive">Delete account</CardTitle>
<CardDescription>
Permanently remove your account and all of its data. This cannot be
undone.
</CardDescription>
</CardHeader>
<CardContent>
<Dialog onOpenChange={() => setValue('')}>
<DialogTrigger asChild>
<Button variant="destructive" className="w-full">
Delete account
</Button>
</DialogTrigger>
<DialogContent className="sm:max-w-sm">
<DialogHeader>
<div className="bg-destructive/10 text-destructive mb-2 flex size-10 items-center justify-center rounded-full">
<TriangleAlert className="size-5" />
</div>
<DialogTitle>Are you absolutely sure?</DialogTitle>
<DialogDescription>
This deletes your workspace, files, and billing history. To
confirm, type {CONFIRM_WORD} below.
</DialogDescription>
</DialogHeader>
<div className="flex flex-col gap-2 py-2">
<Label htmlFor="confirm-delete" className="text-xs">
Type {CONFIRM_WORD} to confirm
</Label>
<Input
id="confirm-delete"
value={value}
onChange={(e) => setValue(e.target.value)}
placeholder={CONFIRM_WORD}
autoComplete="off"
/>
</div>
<DialogFooter>
<Button
variant="destructive"
className="w-full"
disabled={!confirmed}
>
Delete this account
</Button>
</DialogFooter>
</DialogContent>
</Dialog>
</CardContent>
</Card>
)
}
```Paste into your AI tool and adapt it to your context.
Other ways
Reach for these when the context shifts. Each is copyable too.
Why are you leaving?
Step 1 of 3
Multi-Step
Close your account
We hold your data for 30 days before deleting it for good. Change your mind in that window and a single sign-in restores your account.
Scheduled deletion: July 6, 2026
Grace Period