API Reference
TypeScript Types
FeedbackOptions
interface FeedbackOptions {
projectKey: string
endpoint?: string
message: string
pageUrl?: string
userEmail?: string
meta?: Record<string, unknown>
captchaToken?: string
assets?: Array<{
kind: 'image' | 'video'
url: string
size: number
}>
}FeedbackResponse
interface FeedbackResponse {
id: string
status: 'received'
}UseFeedbackReturn
interface UseFeedbackReturn {
submit: (options: SubmitOptions) => Promise<void>
isSubmitting: boolean
error: Error | null
data: FeedbackResponse | null
reset: () => void
}Core Functions
submitFeedback()
Direct submission function for one-off feedback.
async function submitFeedback(
options: FeedbackOptions
): Promise<FeedbackResponse>Example:
import { submitFeedback } from '@pullreque.st/button'
await submitFeedback({
projectKey: 'prj_pk_YOUR_KEY',
message: 'Great app!',
userEmail: 'user@example.com',
meta: { rating: 5 }
})createFeedbackClient()
Factory function for creating a reusable client.
function createFeedbackClient(
projectKey: string,
endpoint?: string
): FeedbackClientExample:
const client = createFeedbackClient('prj_pk_YOUR_KEY')
await client.submit({
message: 'Bug report',
meta: { page: '/checkout' }
})React Hooks
useFeedback()
State management hook for feedback submission.
function useFeedback(options?: UseFeedbackOptions): UseFeedbackReturnReturns:
submit(options)- Submit feedbackisSubmitting- Submission in progresserror- Last error (null if none)data- Last successful responsereset()- Clear error and data
Example:
import { useFeedback } from '@pullreque.st/button/react/headless'
function MyComponent() {
const { submit, isSubmitting, error, data, reset } = useFeedback({
onSuccess: (response) => {
console.log('Feedback submitted!', response)
},
onError: (error) => {
console.error('Submission failed:', error)
},
autoCaptureUrl: true
})
// Your implementation
}