ProjectsCase Study

Universal Cloud Saver

A Manifest V3 Chrome extension that saves images, videos, and files from any website straight to Google Drive—no Downloads folder.

Universal Cloud Saver settings page
Industry
Productivity · Browser tooling
Category
Chrome Extension · Cloud upload
Role
Full Stack Product Engineer — extension architecture, Drive provider, queue, and UI end to end
Timeline
2025 — 2026
Status
v1.0 product build
Stack
React · TypeScript · Vite · CRXJS · Zustand · Zod · Tailwind · Google Drive API · Vitest · Playwright

Executive Overview

Universal Cloud Saver removes the download → open Drive → upload loop. Right-click an image, video, PDF, or link and land the file in an organized Drive folder in one step.

There is no product backend. Auth uses chrome.identity with drive.file scope; files go browser → Google Drive—privacy-friendly and Chrome Web Store–aligned.

The hard parts are Manifest V3 realities: a persistent upload queue that survives service-worker restarts, resumable large-file uploads, and multi-tier fetch around CORS and iframe media.

Business Problem

Existing workflow

Save from the web into Downloads, then manually upload to Drive—or open Drive in another tab and drag files across.

Pain points

  • Downloads clutter for people who really want files in Drive.
  • Manual upload breaks flow when collecting references.
  • Large files and CORS-blocked media fail without resilient fetch and resumable upload.
  • MV3 service workers sleep mid-upload unless the queue is durable.

Why it matters

Saving to cloud is a daily micro-task. If it is not one reliable gesture, users abandon the tool—and privacy-conscious users reject extensions that proxy files through a third-party server.

Solution

Universal Cloud Saver keeps the entire pipeline in Chrome and Google’s APIs:

  • Right-click save

    Context menus for images, video/audio, links, and PDFs—straight into Drive.

  • Popup quick save

    Paste a URL or drag-drop; watch the live queue and recent uploads.

  • Durable upload engine

    Multipart for smaller files; resumable chunks for large ones; pause/resume/retry across MV3 worker restarts.

  • Least-privilege OAuth

    chrome.identity with drive.file—no product backend, no full-Drive scope.

One-gesture save to Drive, organized without Downloads clutter, with a queue that survives Manifest V3 constraints.

Core Features

Capture

Context menus

Save image, video/audio, link, or PDF from any page.

NeedSaving should happen where the user already is.

ValueZero context switch to Downloads or Drive UI.

Popup dashboard

Account status, quick save, live queue, recent uploads.

NeedUsers need progress visibility and a fallback capture path.

ValueTrust that large or multiple uploads are still running.

Options

Sign-in, folders, duplicates, concurrency, and theme.

NeedPower users want control without leaving the extension.

ValueFits research and design collection workflows.

Upload & reliability

Size-aware upload

Multipart under 100MB; resumable chunked upload for large files.

NeedVideos regularly exceed fragile single-shot uploads.

ValueLarge saves complete instead of failing silently.

Persistent queue

chrome.storage.local persistence with pause/resume/cancel/retry.

NeedMV3 workers can die mid-job.

ValueUploads survive restarts and flaky networks.

Multi-tier fetch

Background fetch → content-script credentials → executeScript into owning frame.

NeedMany media URLs are CORS-blocked or session-bound.

ValueMore saves succeed on real websites.

Privacy

chrome.identity OAuth

Google sign-in with drive.file and basic userinfo scopes.

NeedUsers should not paste tokens or trust a random backend.

ValueFamiliar consent with least privilege.

Zero backend

Files go browser → Drive; no product server stores or proxies content.

NeedPrivacy and simpler ops for a Chrome extension.

ValueStronger store review and user trust story.

User Journey

Right-click → Drive

  1. 01

    User finds media on any site

  2. 02

    Right-clicks → Save to Google Drive

  3. 03

    Extension fetches the resource (with fallbacks if needed)

  4. 04

    File is queued and uploaded

  5. 05

    Notification + recent history update

First-time setup

  1. 01

    Installs the extension

  2. 02

    Options → Sign in with Google

  3. 03

    Grants drive.file consent

  4. 04

    Sets root folder preferences

  5. 05

    Starts saving from the web

Technical Highlights

Queue that survives MV3 sleep

Upload jobs live in chrome.storage.local. When the service worker restarts, interrupted work re-queues; alarms refresh tokens and wake the queue.

Business valueLarge saves finish even after Chrome suspends the background worker.

Resumable Drive uploads

Small files use multipart; large files open a resumable session with chunked Content-Range and recoverable partial offsets.

Business valueVideos and big PDFs do not restart from zero after a blip.

Fetch path for real pages

Background fetch first; then credentialed content-script fetch; then executeScript into the owning frame—including iframes.

Business valueMore saves succeed on CORS-blocked and embedded media.

Least-privilege Drive access

OAuth uses drive.file only—files this extension creates—not the user’s full Drive.

Business valueClearer consent and a stronger privacy story for store review.

Challenges & Solutions

ChallengeSolution
Chrome can kill a Manifest V3 service worker mid-upload and wipe in-memory queue state.Persist every job early, wake work with alarms, and safely re-queue interrupted uploads on worker init.
Many image and video URLs fail under a simple extension fetch because of CORS or iframe ownership.A three-step fetch chain—background, content script, then scripting into the frame that owns the media.
Large videos break if you only POST once; a flaky connection forces a full restart.Size thresholds with Drive resumable sessions, chunked Content-Range, and recoverable partial uploads.
Users wanted files in their Drive without sending bytes through a third-party upload server.Browser-only path: chrome.identity + Drive API, with no product backend in the middle.

Tech Stack

Extension
Chrome Manifest V3 — service worker, contextMenus, identity, storage, alarms, scripting
Frontend
React 19, TypeScript, Tailwind CSS 4, Lucide, Zustand
Build
Vite 8, @crxjs/vite-plugin
Cloud
Google Drive API v3 — multipart + resumable uploads
Auth
chrome.identity.getAuthToken — drive.file scope
Testing
Vitest unit tests; Playwright e2e on unpacked extension

Project Gallery

Recommended capture order for the case-study gallery.

  1. 01Right-click context menu — Save to Drive
  2. 02Popup — signed in with live queue
  3. 03Popup — quick save URL / drag-drop
  4. 04Options — Google sign-in & folders
  5. 05Drive folder tree — Images / Videos / PDFs
  6. 06Large file resumable upload progress

Key Learnings

Product

For save tools, reliability is the feature. A durable queue and fetch fallbacks beat another settings toggle.

Engineering

On MV3, treat memory as temporary. Persist before Chrome sleeps the worker, then design wake-up paths on purpose.

Privacy

drive.file with no backend is easier to explain to users—and to Chrome Web Store review—than broad Drive scopes behind a proxy.

Future Improvements

PriorityImprovementBusiness value
HighDropbox and OneDrive providers behind a shared StorageProviderMeet users on the cloud they already use.
MediumBulk page scan for multi-asset collectionFaster capture when a page has many files.

Building a Chrome extension or cloud workflow tool?

Universal Cloud Saver is a case study in Manifest V3 reliability—OAuth, resumable uploads, and a durable queue without a backend. If you need similar craft on a browser product, start a conversation.

Start a conversation
Role

Full Stack Product Engineer

Client

Personal product / Chrome extension

Date

2026

Collaborators

Solo build

Next Project

ZN CMS

View next