Supabase adds resumable uploads using Tus
Open source is at the heart of Transloadit, with two of our projects, Uppy and Tus, making an impact in their respective fields. Following this theme, we are excited to shine a light on Supabase, an open-source backend as a service, who have recently adopted the Tus protocol to allow for resumable uploads.
We are currently on a mission with Tus, our open protocol for resumable uploads, to make it the standard for file uploads on the internet – going as far as making an effort to add resumable file uploads to HTTP. It was precisely this mission that first drew Supabase to Tus, as their Storage Lead Fabrizio Fenoglio explains:
"At Supabase, we are committed to being fully open source. Part of this is empowering the open source community through adopting open protocols and libraries. We chose Tus for our resumable uploads, not only because it's open source, but also because the team behind the protocol is committed to standardizing resumable uploads." – Fabrizio Fenoglio
Before we dive further into how Supabase utilizes Tus, we asked Fabrizio to tell us a little more about Supabase, and how it offers a more flexible and developer-friendly alternative to traditional backend solutions.
"Supabase is an open-source backend as a service that allows developers to easily build and scale web and mobile applications. With Supabase, developers can focus more on building great applications and worry less about managing infrastructure."
With tools for a Postgres database, authentication, edge functions, storage, and more, it is fair to say that Supabase is a force to be reckoned with in the cloud-based backend space.
The benefits of resumable uploads
Before adopting Tus, Supabase storage relied on antiquated multipart HTTP uploads. Naturally, this is isn't a great experience for users on poor connections, for whom a lost signal means the upload has to be restarted from scratch. Fabrizio goes into further detail about the advantages of using resumable uploads:
"Switching to a resumable upload model provided us with the ability to reliably upload large files or even upload from unstable connections, which you might find on a mobile app for example. Generally, our customers are happier to use resumable uploads over traditional multipart uploads."
Making the switch to Tus
To make the switch from multipart uploads, the Supabase team decided to use tus-node-server, an official implementation of the Tus protocol for use in a Node server. Although, to get this implementation to fit their needs, the Supabase team had to make some changes.
"Integration was simple enough. However, the Node implementation isn't as mature as the Go implementation, meaning we had to make some changes on our fork. We're currently in touch and working with the Transloadit developers to upstream our changes into the official implementation."
Working together to make Tus the best it can be
The proof is in the pudding: Supabase's feedback has been invaluable in our mission to standardize Tus, notably through their contributions to tus-node-server. Take for example PR #410 or #446, or any of the other PRs and fixes that developers from Supabase and Transloadit have been discussing. Here's a brief list of issues that we are actively collaborating on:
- #408 - Add support for lockers, including a distributed lock
- #457 - Add object prefixing
- #458 - Fix invalid character errors for the "x-amz-meta-file” header
- #459 - Add
isCompleted
toUpload
info class - #460 - Introduce middleware for access control
- #461 - Split server into runtimes, so Tus can run on the edge
The road to standardization
Through the power of open source, Tus is one step closer on its journey to standardize resumable file uploads across the web, and thanks to the help of teams like Supabase, we get closer to this goal every day.
Before we wrap this up, be sure to check out Supabase's launch week from August 7 to 11, as they release a bundle of new features 🚀