One component. It handles storage policies, signed URLs, and CORS — so you never re-read the docs on your next project.
Every new project starts the same way. It doesn't have to.
-- 1. create the bucket insert into storage.buckets (id, name) values ('uploads', 'uploads'); -- 2. RLS: who can upload? create policy "users can upload" on storage.objects for insert to authenticated with check (bucket_id = 'uploads'); -- 3. ...and who can read? (another policy) -- 4. ...restrict to own folder? (another policy) -- 5. CORS: separate dashboard tab -- 6. signed URLs: mind the expires_in math -- 7. frontend: input, progress bar, retries -- 8. compress images yourself (another lib)
{/* React, Vue, or vanilla JS */} <Upload bucket="uploads" />
Boring infrastructure, done right, in your language.
Sensible RLS defaults generated for your bucket, signed URLs minted automatically, CORS configured. You can still inspect and override everything.
Resize, compress, and convert formats before upload — no extra library, no extra config.
Buckets, RLS, signed URLs — not generic "storage blobs". Docs written for Supabase developers, with React, Vue, and vanilla JS components.
Early pricing. Waitlist members lock in the founding rate when we launch.
We're validating this before building. Join the list — tell us which backend you use.
Thanks — we'll email you when early access opens.
No spam. One email when we launch, that's it.