onComplete
onComplete: (rows: Record<string, unknown>[], meta: ImportMeta) => void
type ImportMeta = {
validRows: number;
invalidRows: number;
fileType: "csv" | "xlsx" | "tsv";
durationMs: number;
columnCount: number;
rowCount: number;
sheetName?: string; // set for Excel imports
};rows are objects keyed by field key, with coerced types (numbers as numbers, emails lowercased, dates as YYYY-MM-DD, booleans as booleans, URLs as normalized http/https hrefs, empty optional fields as null). Invalid rows are omitted.
Your backend should re-check authorization and any server-side uniqueness against your database. Client validation is not a security boundary.
Related: Quickstart · React component · Import CSV to Postgres · Sessions