The Updog CSV importer for every framework
Updog embeds as a real element in your own page. It ships as a native React package, with a Web Component for every other framework. Updog inherits your styles, your layout, and your accessibility tree. There is no iframe to seal it off and no resize handshake to maintain.
A Web Component in your own DOM
Most embedded importers drop an <iframe> into your page, which is a separate document sealed off from yours. Updog renders as a custom element in your own DOM, so people cannot tell where your app ends and the importer begins. The comparison below shows what that changes.
-
Styling & theming
Iframe widgetA separate document. Your CSS, fonts, and design tokens do not cross in. You are limited to the vendor’s theme settings.
UpdogLives in your DOM. Inherited typography and color flow in; theme the rest with the same CSS variables you use everywhere.
-
Sizing & layout
Iframe widgetAn iframe has no intrinsic content height. You hardcode a height or run a postMessage resize handshake that lags on dynamic content.
UpdogSizes like any block element and grows with its own content, with nothing to measure or sync.
-
Data exchange
Iframe widgetCross-origin frames talk only through asynchronous postMessage, which sends serialized messages with no direct calls or shared objects.
UpdogPlain props and attributes go in, and real DOM events come out, in the same JavaScript context as your app.
-
Overlays & modals
Iframe widgetA full-screen import modal is clipped to the iframe’s box, so vendors take over the whole viewport with a fixed overlay.
UpdogRenders against your viewport, so overlays, dropdowns, and toasts are not boxed into a frame.
-
Performance & load
Iframe widgetLoads a whole separate document, with its own HTML, CSS, and JS bundle in a separate browsing context, plus extra network and memory.
UpdogOne document and one bundle, sharing the page’s runtime.
-
Cookies & storage
Iframe widgetModern browsers partition third-party storage by site (Safari ITP, Firefox Total Cookie Protection, Chrome). Third-party frame state can silently break.
UpdogSame origin as your app, so there is no third-party storage partitioning to work around.
-
Accessibility
Iframe widgetARIA relationships like aria-controls and aria-activedescendant cannot reference elements across the frame boundary, and focus is split across documents.
UpdogOne accessibility tree, so focus order, ARIA semantics, and screen-reader flow stay continuous.
Updog blends in because it is part of your page
-
Updog is a real element
<updog-editor>is a custom element in your markup, with no document boundary around it. Nothing marks where it begins. -
Your styles and tokens
Theme Updog with the same CSS variables you use everywhere else, without a vendor settings panel or a round-trip to restyle a button.
-
No handshake
Configure Updog with props and attributes, then handle completion with an
onCompletecallback. There is nopostMessageprotocol to design or maintain.
Pick your framework
React and Next.js get the native package. Every other framework uses the same Updog Web Component.
-
Native package React The
@updog/data-editorcomponent with full TypeScript types. -
Native package Next.js The React package as a Client Component in your App Router app.
-
Web Component Vue Drop
<updog-editor>into your templates and bind props. -
Web Component Angular Use the custom element with
CUSTOM_ELEMENTS_SCHEMA. -
Web Component Svelte Render the element straight into your components.
-
Web Component JavaScript No framework required. Add the element to any page.
Try it in the browser
Install the package, add your columns, render the component. Free on localhost. Every feature included.