Best way to upload/compress large videos on mobile native?


Hello,

For one of my Mobile Native Apps, I need to allow users to upload images, videos, and files, and retrieve them later.

Images and files are fine: some native plugins handle image compression well, and files rarely exceed 50MB so a size limit works.

The problem is with videos. They can grow extremely large very quickly. An iPhone 4K video of just a few seconds can exceed 50MB. Setting a hard size limit creates a terrible UX because most videos will exceed it, making the feature basically useless.

All native plugins I have tested struggle to upload files larger than 50MB, and even when they manage it, the upload takes too long.

I want to achieve the same experience as WhatsApp, messenger, or any chat app where videos of any size are automatically compressed on the client side before upload, resulting in a seamless UX.

I will not have a huge volume of video uploads, but the ones that do happen are critical, so I need to get this right. The concern is not about file size limits or Bubble storage costs, it is purely about the upload UX.

What direction should I take?

  • A native plugin that handles client-side video compression before upload?

  • A web plugin integrated via WebView?

  • A third-party storage/upload service ?

  • Any other approach?

Has anyone solved this cleanly inside a Bubble native app? Thanks for your help!

Why not try some external storage, e.g. Supabase buckets? In this way, you could avoid all the hardcoded solutions with some simple API calls to supabase.

It’s not about the server or costs for now, but everything that happens before that.

I’m just looking to be able to upload large videos without the app crashing or the upload taking multiple minutes.

Cloudflare Workers > Cloudflare D1 > Bubble Data API > Save To Bubble Database

This process avoids any timeouts from Bubble, solid performance, and you can add a compression api in your Cloudflare Worker for optimization. The speed is great.

I’ve used this process for large audio files (wavs, mp3), but haven’t tested this for mobile but will do soon.

For heavy files on mobile, the current best options will be working with a webview.
-using a 3rd party storage with a configured web page and backend workflows linked to the webview.
-or just the a good web plugin integrated via the web page linked to the Webview since you have no concern about Bubble storage costs.

The key for UX here will be to make sure the web page is designed exclusively for mobile and there’s a status checker/indicator say in their profile or uploads view to show if its still processing.. or the upload is done.