'use client' import Link from 'next/link' import { useMemo, useState } from 'react' import { getRoute } from '@/lib/routes' export const UNINSTALL_REASONS = [ 'It did not work on my sites', 'Too noisy or distracting', 'Missing key features', 'I only needed it temporarily', 'I found a better alternative', 'Other' ] as const type SubmitState = 'idle' | 'submitting' | 'success' | 'error' interface UninstallFeedbackFormProps { version?: string lang?: string } /** * Anonymous uninstall feedback form used by extension lifecycle flows. * * @param version - Optional extension version from query params * @param lang - Optional UI language from query params * @returns Feedback form or success state UI */ export function UninstallFeedbackForm({ version, lang }: UninstallFeedbackFormProps) { const [reason, setReason] = useState('') const [comment, setComment] = useState('') const [errorMessage, setErrorMessage] = useState(null) const [submitState, setSubmitState] = useState('idle') const remainingCharacters = useMemo(() => 1000 - comment.length, [comment]) /** * Validate and submit uninstall feedback. * * @param event - Form submit event */ const handleSubmit = async (event: React.FormEvent) => { event.preventDefault() setErrorMessage(null) const trimmedReason = reason.trim() const trimmedComment = comment.trim() if (!trimmedReason) { setErrorMessage('Please choose a reason before submitting.') return } if (trimmedComment.length > 1000) { setErrorMessage('Comments must be 1000 characters or fewer.') return } try { setSubmitState('submitting') const response = await fetch('/api/extension-feedback', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ event: 'uninstall', reason: trimmedReason, comment: trimmedComment || undefined, version, lang, submittedAt: new Date().toISOString() }) }) if (!response.ok) { const data = (await response.json().catch(() => ({}))) as { error?: string } throw new Error(data.error || 'Failed to submit feedback') } setSubmitState('success') } catch (error) { setSubmitState('error') setErrorMessage(error instanceof Error ? error.message : 'Failed to submit feedback') } } if (submitState === 'success') { return (

Thanks for the feedback

Your response helps us improve the extension without collecting personal identifiers.

Go to llms.txt Hub Chrome Web Store
) } return (
What led you to uninstall?
{UNINSTALL_REASONS.map(option => ( ))}