<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/pro-file-uploads-in-rails-8-speed-and-scalability-with-direct-uploads-uru3uplg4" -->

---
title: Pro File Uploads in Rails 8: Speed and Scalability with...
description: Direct Uploads in Rails 8 allow files to go straight from the browser to cloud storage (S3, R2) without passing through the Rails server, preventing Puma...
canonical: https://daily.dev/posts/pro-file-uploads-in-rails-8-speed-and-scalability-with-direct-uploads-uru3uplg4
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Pro File Uploads in Rails 8: Speed and Scalability with Direct Uploads | daily.dev
og:description: Direct Uploads in Rails 8 allow files to go straight from the browser to cloud storage (S3, R2) without passing through the Rails server, preventing Puma...
og:url: https://daily.dev/posts/pro-file-uploads-in-rails-8-speed-and-scalability-with-direct-uploads-uru3uplg4
og:image: https://api.daily.dev/og/posts/uRu3upLG4.png
og:image:alt: Pro File Uploads in Rails 8: Speed and Scalability with Direct Uploads
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Pro File Uploads in Rails 8: Speed and Scalability with Direct Uploads

**[Ruby Flow](https://daily.dev/sources/rubyflow)** · 4 min read · 1 upvotes · 0 comments

## Summary

Direct Uploads in Rails 8 allow files to go straight from the browser to cloud storage (S3, R2) without passing through the Rails server, preventing Puma threads from blocking during large file transfers. The setup involves configuring cloud storage in storage.yml with CORS enabled, adding `direct_upload: true` to file fields, and optionally wiring a Stimulus controller to ActiveStorage events for a progress bar. This approach keeps server costs low (a $5 VPS suffices), improves upload speed, and increases reliability since the server isn't in the upload path.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://norvilis.com/pro-file-uploads-in-rails-8-speed-and-scalability-with-direct-uploads>

## Similar posts on daily.dev

- [The Budget-Friendly Monolith: Rails File Uploads with Cloudflare R2](https://daily.dev/posts/the-budget-friendly-monolith-rails-file-uploads-with-cloudflare-r2-ufuy3ac1y) · Ruby Flow · 0 upvotes · 0 comments
- [Rails 8 enhances ActiveStorage::Blob\#open to work without a block](https://daily.dev/posts/rails-8-enhances-activestorage-blob-open-to-work-without-a-block-h4cji6hve) · RUBYLAND · 1 upvotes · 0 comments

---

Tags: [#rails](https://daily.dev/tags/rails), [#aws-s3](https://daily.dev/tags/aws-s3)

[View this post on daily.dev](https://daily.dev/posts/pro-file-uploads-in-rails-8-speed-and-scalability-with-direct-uploads-uru3uplg4)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Pro File Uploads in Rails 8: Speed and Scalability with Direct Uploads","url":"https://daily.dev/posts/pro-file-uploads-in-rails-8-speed-and-scalability-with-direct-uploads-uru3uplg4","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/pro-file-uploads-in-rails-8-speed-and-scalability-with-direct-uploads-uru3uplg4"},"datePublished":"2026-06-20T00:41:29.543Z","dateModified":"2026-06-20T00:44:11.139Z","description":"Direct Uploads in Rails 8 allow files to go straight from the browser to cloud storage (S3, R2) without passing through the Rails server, preventing Puma...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/9e25fdeafc5c3231edd8a1bcec11676b?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/9e25fdeafc5c3231edd8a1bcec11676b?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Ruby Flow","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Ruby Flow","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/a21aaa8bcbbf448193a016895c90a0e1","url":"https://daily.dev/sources/rubyflow"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/pro-file-uploads-in-rails-8-speed-and-scalability-with-direct-uploads-uru3uplg4","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"rails,aws-s3","timeRequired":"PT4M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Ruby Flow","item":"https://daily.dev/sources/rubyflow"},{"@type":"ListItem","position":3,"name":"Pro File Uploads in Rails 8: Speed and Scalability with Direct Uploads"}]}
```

