React SDK API Reference
Complete API reference for the easyCDN React SDK, including all components, props, and TypeScript types.
Dropzone
The main file upload component with drag-and-drop functionality. Handles file validation, upload progress, retry logic, and provides callbacks for upload events.
Signature
tsx
import { Dropzone } from '@easycdn/react'
<Dropzone
publicKey="your-public-key"
onUploadComplete={(uploadResult, file) => {
// Handle completion
}}
/>Example: Basic usage
tsx
import { Dropzone } from '@easycdn/react'
export default function App() {
return (
<Dropzone
publicKey="your-public-key"
onUploadComplete={({ tempId, previewUrl, expiresAt }) => {
console.log('Upload complete:', { tempId, previewUrl, expiresAt })
// Send tempId to your backend to persist the file
}}
/>
)
}Example: With file type restrictions
tsx
<Dropzone
publicKey="your-public-key"
acceptedFileTypes={['image/jpeg', 'image/png', 'image/webp']}
maxSize={1000 * 1000 * 5} // 5MB
maxFiles={3}
onUploadComplete={({ tempId }) => {
// show preview in your app & persist
}}
/>Example: With preview and custom styling
tsx
<Dropzone
publicKey="your-public-key"
showPreview={true}
compact={false}
theme="dark"
className="my-custom-class"
clearAfter={10000}
onUploadComplete={({ tempId, previewUrl }) => {
// show preview in your app & persist
}}
onAllUploadsComplete={() => {
console.log('All uploads finished!')
}}
/>Example: With backend persistence
tsx
import { Dropzone } from '@easycdn/react'
export default function App() {
async function handleUploadComplete({ tempId }: UploadResult) {
// Call your backend to persist the temporary file
const response = await fetch('/api/persist-file', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ tempId })
})
const { asset } = await response.json()
console.log('Persisted asset URL:', asset.url)
}
return (
<Dropzone
publicKey="your-public-key"
onUploadComplete={handleUploadComplete}
/>
)
}Parameters
publicKey:stringrequired - Your easyCDN public API keyonUploadComplete:(uploadResult: UploadResult, file?: File) => void - Called when a single file upload completes successfullyacceptedFileTypes:string[] - Array of accepted MIME types or extensions. Default: undefinedmaxSize:number - Maximum file size in bytes. Default: 1000 * 1000 * 1000 * 15 (15GB)maxFiles:number - Maximum number of files allowed. Default: 10showPreview:boolean - Show image previews in file list. Default: falsetheme:'light' | 'dark' | 'auto' - Force light/dark theme or respect parent. Default: 'auto'compact:boolean - Use compact file list layout. Default: falseclearAfter:number - Auto-clear completed uploads after milliseconds. Default: 5000maxRetries:number - Maximum retry attempts for failed uploads. Default: 3className:string - Additional CSS classes. Default: undefinedonAllUploadsComplete:() => void - Called when all queued uploads have finished (success or error)baseUrl:string - Custom API endpoint URL. Usually not needed.projectId:stringoptional - Optional project ID for multi-project setups. Usually not needed.