CSV importer and spreadsheet editor for Vue

Install @updog/data-editor-wc, drop the Web Component into your Vue templates, and give users a full import and edit flow. 100% client-side, no upload server, flat $199/domain.

Importer.vue
<script setup lang="ts">
import { ref, onMounted } from "vue";
import "@updog/data-editor-wc";

const editorRef = ref<HTMLElement | null>(null);

onMounted(() => {
  editorRef.value?.configure({
    apiKey: "YOUR_API_KEY",
    columns: [
      { id: "name", title: "Name" },
      {
        id: "passport",
        title: "Passport",
        validators: [{ type: "required", message: "Passport is required" }],
      },
    ],
    onComplete: (result) => console.log(result),
  });
});

function open() {
  editorRef.value?.show();
}
</script>

<template>
  <button @click="open">Open Importer</button>
  <updog-editor ref="editorRef" />
</template>

Every feature on every plan.

Import, edit, validate, ship — all included. Including on the free plan.

Five import formats

CSV, XLSX, TSV, JSON, XML. Drop a file, get structured data.

Smart column matching

Auto-maps imported columns to your schema. Fuzzy matching, synonyms, or your own callback.

Value mapping

Map imported values to the options your columns expect.

Multi-source merging

Import multiple files into one grid. Each source tracked, toggled, or removed independently.

Upsert by primary key

Second import? Existing rows update in place. New rows append. No duplicates.

1M+ rows

Canvas rendering, virtual scrolling, Web Worker filtering.

Dynamic columns

Imported file has columns your schema doesn't? Users create them on the fly.

Inline editing

Click a cell, start typing. Tab, Enter, arrow keys — it works like a spreadsheet.

Typed cell editors

Text, number, date picker, select dropdown. Each column gets the right input control.

Add / delete rows

Insert above, insert below, duplicate, delete.

Copy / paste

Cells, ranges, rows. Paste from Excel or Google Sheets.

Fill handle

Drag to fill. Source values repeat across the target range.

100% client-side

Everything runs in the browser. No backend, no data leaves the user's machine.

Undo / redo

Every edit, paste, transform, and delete goes on the stack. Full command history.

Find & replace

Search across all cells. Case-sensitive, exact match, column-scoped. Replace one or all.

Column sorting

Ascending, descending, or clear. Stable sort, locale-aware.

Configurable filters

Select lists, number ranges, date ranges. Define per column, users control from the sidebar.

Column transforms

Split, merge, trim, and more. Bulk operations at 1M-row scale.

Formulas

Spreadsheet-style expressions on columns. Concat, split, substring, substitute — recompute live as data changes.

Bring your own AI

Clean messy data with a prompt. Split names, normalize dates, fix casing. Your model, your prompt, your data.

Built-in validators

Required, unique, type checks. Errors surface inline — users fix them in place.

Custom validators

Write your own validation function per column.

Cross-field validation

Declare dependent fields. When one cell changes, related cells re-validate automatically.

Display formatters

Show "$1,000" in the cell. Store "1000" underneath. Formatters are display-only.

Input transformers

Normalize on entry. Trim whitespace, parse numbers, format dates — before they hit the store.

Clean exports

CSV, XLSX, TSV, JSON, XML. Validated and formatted. Ready for your pipeline.

White-label

Match your brand colors, fonts, and design system. Every Updog plan includes full white labeling at no extra cost.

Any frontend framework

Native React component. Web Component wrapper for Vue, Angular, Svelte, or plain HTML.

Sticky columns

Pin columns so identifiers stay visible while users scroll horizontally.

Accessibility

Shadow table for screen readers. ARIA roles, live regions, full keyboard navigation.

i18n & RTL

Override every string. Right-to-left layout where the locale demands it.

Read-only mode

One prop. The grid becomes view-only. No editing, no deletion, no import.

No data processor agreement required.

User data is parsed, validated, and edited in the user's browser. It never reaches our infrastructure or anyone else's. That removes the GDPR data processor relationship, the DPA review, and the data residency conversation entirely.

Flat pricing.

Same price at 100 imports as at 100,000. 14-day free trial. No credit card.

Dev

Free

Local development and personal projects.

  • Development domains
  • All features
  • Community support

Team

$199 /domain/mo

Subdomains included. No bundled tiers.

  • Add domains as you grow
  • All features
  • Email support

$199 flat per production domain. Predictable from your first import to your millionth. No per-import fees, no row caps, no usage tiers.