An embeddable file picker that keeps your form, your design and your flow
CrossUpload is a small, versioned JavaScript SDK with no third-party runtime dependencies. You opt in on the exact element you choose; nothing else on the page is touched. The modal offers “Choose from this device” and “Upload from your phone”, shows progress and verification state per file, and hands back durable file IDs.
The problem
- Building reliable uploads — progress, retries, limits, previews, phones — takes weeks and is easy to get subtly wrong.
- Heavy upload widgets often patch global browser behaviour or capture every file input on the page.
- Most pickers ignore the visitor whose file is on a different device.
How CrossUpload helps
Three integration modes
Enhanced picker on a button or input, a companion “Upload from your phone” button next to an existing input, or a headless REST API for a fully custom UI.
Opt-in and reversible
No global prototype patching, no capturing of unrelated inputs, no form submission. destroy() restores the original element.
Isolated styles
The modal renders inside Shadow DOM, so your CSS and ours never collide. Several independent widgets can live on one page.
Accessible by default
Keyboard navigation, focus trapping, Escape to close, focus restoration, live-region announcements and reduced-motion support.
Brand it
Light and dark styles, a configurable brand colour, English and Turkish strings.
Questions
Does it work with React, Vue or plain HTML?
Yes. The SDK is plain JavaScript and attaches to a DOM element, so it works inside any framework or none.
Will it submit my form?
Never. It fills a hidden field and fires events; your visitor still submits the form.
How big is the SDK?
It is a single small file with no dependencies, served from a versioned URL.