<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/humid-1-0-react-server-side-rendering-in-rails-can-be-easy--2zzza5grp" -->

---
title: Humid 1.0: React server-side rendering in Rails can be easy!
description: Humid 1.0 is a lightweight Ruby gem from Thoughtbot that enables React server-side rendering in Rails without a separate Node.js process. It uses mini_racer...
canonical: https://daily.dev/posts/humid-1-0-react-server-side-rendering-in-rails-can-be-easy--2zzza5grp
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Humid 1.0: React server-side rendering in Rails can be easy! | daily.dev
og:description: Humid 1.0 is a lightweight Ruby gem from Thoughtbot that enables React server-side rendering in Rails without a separate Node.js process. It uses mini_racer...
og:url: https://daily.dev/posts/humid-1-0-react-server-side-rendering-in-rails-can-be-easy--2zzza5grp
og:image: https://api.daily.dev/og/posts/2ZzZA5grP.png
og:image:alt: Humid 1.0: React server-side rendering in Rails can be easy!
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.

# Humid 1.0: React server-side rendering in Rails can be easy!

**[thoughbot](https://daily.dev/sources/thoughbot)** · 2 min read · 5 upvotes · 1 comments

## Summary

Humid 1.0 is a lightweight Ruby gem from Thoughtbot that enables React server-side rendering in Rails without a separate Node.js process. It uses mini_racer (an embedded V8 engine for Ruby) to render React components synchronously from Ruby. The setup requires fewer than 200 lines of code, includes instrumentation and telemetry, and is designed as a stepping stone toward Cloudflare V8 isolate deployments. Key caveats: no streaming or async data fetching during render, and mini_racer lacks browser globals like window and document.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://thoughtbot.com/blog/humid-1-0-react-server-side-rendering-in-rails-can-be-easy>

## Questions this post answers

### How can I do React server-side rendering in Rails without running a separate Node.js process?

Humid 1.0, a Ruby gem released by thoughtbot, provides helpers for React server-side rendering in Rails using mini_racer, an embedded V8 environment for Ruby. You install the gem, write a renderer wrapped in setHumidRenderer in your JS bundle, then call Humid.prepare and Humid.render from Ruby to get rendered HTML synchronously, with no Node.js process required.

_daily.dev surfaces practical releases like this for developers weighing Rails SSR options against Node-based setups._

### Does Humid support streaming or async data fetching during React server-side rendering in Rails?

No, Humid renders synchronously and does not support streaming or async data fetching during render. All data must be gathered before rendering and passed in as props, after which Humid returns the fully rendered HTML in a single synchronous call powered by mini_racer.

_Rails developers evaluating SSR trade-offs can track constraints like this via daily.dev before adopting a new tool._

### Why does my React bundle break when running inside mini_racer for server-side rendering?

mini_racer provides only a bare V8 environment with no window, no document, and no Node.js builtins, so a typical React bundle will fail without polyfills or shims. A working shim for React is available in the Humid project's sample directory to address these missing browser globals when rendering server-side.

_daily.dev helps developers debugging bare V8 environment quirks find fixes like shims before they get stuck._

## Community discussion

Top comments from developers on daily.dev.

**@rizzdev** · 0 upvotes

> Props-first and under 200 lines is a clean shape. Easy still evaporates once you price the fork-safety tax and the missing builtins

## Similar posts on daily.dev

- [React on Rails Explained: Frontend Development with Rails 8](https://daily.dev/posts/react-on-rails-explained-frontend-development-with-rails-8-zcsa4sbeb) · Ruby Flow · 0 upvotes · 0 comments
- [Getting Started With Vite on Rails - FastRuby.io](https://daily.dev/posts/getting-started-with-vite-on-rails---fastruby-io-brdurs8tz) · RUBYLAND · 0 upvotes · 0 comments
- [Issue \#814: Bringing Rails into the Ractor age — Ruby Weekly](https://daily.dev/posts/issue-814-bringing-rails-into-the-ractor-age-ruby-weekly-vch5zguhp) · Ruby Weekly · 0 upvotes · 0 comments
- [Rails World '26: Herb and ReActionView](https://daily.dev/posts/rails-world-26-herb-and-reactionview-4b5maaerf) · Ruby Flow · 0 upvotes · 0 comments

---

Tags: [#webdev](https://daily.dev/tags/webdev), [#react](https://daily.dev/tags/react), [#rails](https://daily.dev/tags/rails)

[View this post on daily.dev](https://daily.dev/posts/humid-1-0-react-server-side-rendering-in-rails-can-be-easy--2zzza5grp)

```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":"Humid 1.0: React server-side rendering in Rails can be easy!","url":"https://daily.dev/posts/humid-1-0-react-server-side-rendering-in-rails-can-be-easy--2zzza5grp","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/humid-1-0-react-server-side-rendering-in-rails-can-be-easy--2zzza5grp"},"datePublished":"2026-08-04T00:03:30.870Z","dateModified":"2026-09-14T08:47:57.473Z","description":"Humid 1.0 is a lightweight Ruby gem from Thoughtbot that enables React server-side rendering in Rails without a separate Node.js process. It uses mini_racer...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/10bb062d513f2893e5e66c61dda7254f?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/10bb062d513f2893e5e66c61dda7254f?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"thoughbot","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":"thoughbot","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/9fe12feb57f944a29ff63a79e350081a","url":"https://daily.dev/sources/thoughbot"},"commentCount":1,"discussionUrl":"https://daily.dev/posts/humid-1-0-react-server-side-rendering-in-rails-can-be-easy--2zzza5grp","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":5},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":1}],"keywords":"webdev,react,rails","timeRequired":"PT2M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"thoughbot","item":"https://daily.dev/sources/thoughbot"},{"@type":"ListItem","position":3,"name":"Humid 1.0: React server-side rendering in Rails can be easy!"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/humid-1-0-react-server-side-rendering-in-rails-can-be-easy--2zzza5grp","comment":[{"@type":"Comment","text":"Props-first and under 200 lines is a clean shape. Easy still evaporates once you price the fork-safety tax and the missing builtins","datePublished":"2026-08-04T00:46:34.391Z","url":"https://daily.dev/posts/2ZzZA5grP#c-YIgITVq0M","author":{"@type":"Person","name":"Andrew","url":"https://daily.dev/rizzdev","image":"https://media.daily.dev/image/upload/s--35vRfXAA--/f_auto/v1785413727/avatars/avatar_fQ7ttCKtPuu6tDvcgQXv5?_a=BAMAMicg0"}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/humid-1-0-react-server-side-rendering-in-rails-can-be-easy--2zzza5grp#faq","mainEntity":[{"@type":"Question","name":"How can I do React server-side rendering in Rails without running a separate Node.js process?","acceptedAnswer":{"@type":"Answer","text":"Humid 1.0, a Ruby gem released by thoughtbot, provides helpers for React server-side rendering in Rails using mini_racer, an embedded V8 environment for Ruby. You install the gem, write a renderer wrapped in setHumidRenderer in your JS bundle, then call Humid.prepare and Humid.render from Ruby to get rendered HTML synchronously, with no Node.js process required. daily.dev surfaces practical releases like this for developers weighing Rails SSR options against Node-based setups."}},{"@type":"Question","name":"Does Humid support streaming or async data fetching during React server-side rendering in Rails?","acceptedAnswer":{"@type":"Answer","text":"No, Humid renders synchronously and does not support streaming or async data fetching during render. All data must be gathered before rendering and passed in as props, after which Humid returns the fully rendered HTML in a single synchronous call powered by mini_racer. Rails developers evaluating SSR trade-offs can track constraints like this via daily.dev before adopting a new tool."}},{"@type":"Question","name":"Why does my React bundle break when running inside mini_racer for server-side rendering?","acceptedAnswer":{"@type":"Answer","text":"mini_racer provides only a bare V8 environment with no window, no document, and no Node.js builtins, so a typical React bundle will fail without polyfills or shims. A working shim for React is available in the Humid project's sample directory to address these missing browser globals when rendering server-side. daily.dev helps developers debugging bare V8 environment quirks find fixes like shims before they get stuck."}}]}
```

