We're migrating our temporary file storage from AWS S3 to Cloudflare R2. This change brings significant cost savings through free egress, but has a small impact on custom temporary file purging settings for a very limited set of use cases.

What we're changing

Transloadit is moving temporary file storage from AWS S3 to Cloudflare R2. This migration is part of our ongoing efforts to optimize infrastructure costs while maintaining the same high quality service you expect from us.

Why we're making this change

The primary driver for this migration is cost optimization. Cloudflare R2 offers free egress, which translates to substantial savings that we can invest back into improving our service. By reducing our operational costs, we can continue to offer competitive pricing while enhancing our platform.

Impact on temporary file purging

R2 has a technical limitation: it does not support object tagging for lifecycle rules with retention periods shorter than 24 hours. This means that custom temporary file purging settings for periods less than 24 hours will no longer function after the migration.

What remains unchanged

  • The default 24-hour retention period stays the same
  • Files are still automatically purged after 24 hours by default
  • The standard workflow for most users is unaffected

Who is affected?

This change only affects a very limited use case:

  1. You must have customized the default purging settings to less than 24 hours
  2. AND your Templates must have leaf Steps without export Steps

Most customers are not affected because:

  • The vast majority use the default 24-hour retention
  • Most workflows include explicit export/storage Steps
  • We no longer store intermediary results to S3/R2 (changed earlier this week), so the primary use case for fast purging has already been addressed

How to prepare

If you have customized temporary file purging settings to less than 24 hours, you should:

Add explicit export Steps to your Templates

The best practice is to add explicit export or storage Steps to your Templates. This ensures your files are stored exactly where you want them, for as long as you need them.

Example Template with an export Step:

{
  "steps": {
    "encoded": {
      "use": ":original",
      "robot": "/video/encode",
      "preset": "mp4"
    },
    "exported": {
      "use": "encoded",
      "robot": "/s3/store",
      "credentials": "my_s3_credentials",
      "path": "videos/${file.name}"
    }
  }
}

By adding an export Step like /s3/store, /azure/store, /backblaze/store, or /ftp/store, your files will be stored in your own storage location, giving you complete control over retention policies.

Review your Templates

  1. Check if you've customized the default 24-hour purging setting
  2. Review your Templates to ensure they have export Steps
  3. If you don't have export Steps and need files to be available for less than 24 hours, consider adding them

UI changes

We're updating the user interface to reflect these changes:

  • The expiry settings modal will include a warning that custom purging settings less than 24 hours are no longer supported
  • The documentation has been updated to reflect the new limitations

Timeline

This migration will be completed before the R2 storage backend goes live. We're communicating this change proactively to ensure you have time to adjust your workflows if needed.

Questions?

If you have questions about this change or need assistance updating your Templates, please reach out to our support team via the Intercom chat or email us at mailto:hello@transloadit.com.

We expect this change to have minimal real-world impact, but we're committed to transparent communication about any changes that could affect your workflows.