Storage providers
YoFix stores preview artifacts (the compiled output of each build) and VRT screenshots in object storage. You can use our managed bucket or connect your own.
Supported providers
| Provider | Identifier | Notes |
|---|---|---|
| Cloudflare R2 | r2 | Default, zero egress fees |
| AWS S3 | s3 | Standard S3 API |
| Google Cloud Storage | gcs | Native GCS SDK |
| Firebase Storage | firebase | Wraps GCS, uses Firebase Admin SDK |
| DigitalOcean Spaces | do-spaces | S3-compatible |
| Local disk | local | For development & air-gapped self-hosting |
When to bring your own
Bring your own bucket if:
- Compliance requires artifacts never leave your cloud.
- You want a single bill across compute and storage in your existing cloud account.
- You want a specific region for data residency.
For most teams, the managed default (R2) is the cheapest and easiest.
Configuring BYO storage
- Create a bucket in your provider of choice.
- Create a scoped service account / API key with read+write on that bucket only (no account-level permissions).
- Go to Workspace → Settings → Storage in the YoFix dashboard.
- Choose your provider, paste credentials, and save.
- Run Validate connection. We do a round-trip write/read/delete on a probe object.
- New builds will use the new bucket. Existing artifacts stay on the previous provider until cleaned up.
Region selection
For R2, S3, GCS, and Firebase, you can choose a specific region per workspace. By default we pick the region closest to your build workers to minimize latency.
Lifecycle & cleanup
YoFix runs a daily cleanup job against whichever bucket you’ve configured. Preview artifacts and screenshots are removed 14 days after the preview went ready (the latest preview on each open pull request is always kept). Replaced production builds are removed 120 days after a newer build took over; the live production build is always kept. Both windows can be changed per project in Project settings → Build, up to your plan’s cap. Build caches are removed 14 days after they were last used.
Replaced production and environment builds keep all their files for the project’s instant rollback window, so rolling back to one is instant. The window is 30 days by default and can be set from 7 days up to 60 or 90 days on higher plans, in Project settings → Build. After the window, a build keeps its build archive, and its source snapshot and the unpacked copies of its files that were served from the edge are removed. You can still roll back to it until it expires: the rollback restores its files first, which can take a few minutes on projects served through custom domains. Builds uploaded with the CLI are never trimmed.
A deployment whose artifacts were removed shows as Expired in the dashboard and CLI. Redeploy builds the same commit again and writes fresh artifacts: a preview rebuild takes its branch URL again, and a production rebuild that a newer build has replaced gets its own URL until you make it live. If you switch buckets, the old bucket is left alone. You’ll need to clean it up manually or configure your provider’s own lifecycle rules.
Encryption
All providers we support encrypt at rest by default. We don’t add a second encryption layer on top. We strongly recommend enabling server-side encryption with customer-managed keys (SSE-CMK on S3, CMEK on GCS) for production workspaces.