Sign in

Marco Roth

@marcoroth.dev
2K followers 334 following 943 posts

Full-Stack Web Developer • OSS Contributor • Electronic Music Addict • Ruby/Rails, JavaScript/Stimulus, Crystal • Hotwire Contributors Team • StimulusReflex Core. Website: marcoroth.dev Building: rubyevents.org | rubyconferences.org | gem.sh | hotwire.io

PostsRepliesMedia
Marco Roth @marcoroth.dev · 24/09/2026
The answer to "what does this enable?" is ReActionView v0.6, which introduces LiveView-like, fine-grained reactivity for Rails.
150
Marco Roth @marcoroth.dev · 24/09/2026
Today is a big day for Herb! It's built into Rails 8.2 by default for all HTML+ERB views. My talk at #RailsWorld in Austin today answered three questions: What is Herb? What ships in Rails 8.2? And what does this enable? Herb v0.11 and ReActionView v0.6 released alongside it.
36511
Marco Roth @marcoroth.dev · 06/08/2026
Been prototyping a new "Extract to Partial" Code Action for the Herb Language Server 🌿 Since it knows which variables your selected text uses, it can create the partial, define strict locals, rewrite all references, and replace the selected code with the proper render call ✨
1110
Marco Roth @marcoroth.dev · 06/08/2026
Building Developer Tools is fun! 🎨
2210
Marco Roth @marcoroth.dev · 16/07/2026
I just released Insta, a new snapshot testing library for Ruby, live at RubyConf in Las Vegas! Extracted from Herb's test suite and inspired by @mitsuhiko.at's fantastic insta library for Rust. `gem "insta"`
2298
Marco Roth @marcoroth.dev · 02/07/2026
New RubyGems.org design 👀
1133
Marco Roth @marcoroth.dev · 25/06/2026
Time for another great @brightonruby.com this year! #BrightonRuby #BrightonRuby2026
0151
Marco Roth @marcoroth.dev · 08/05/2026
Really exciting to see Herb being adopted at GitHub! 🌿 Over the past months, the GitHub team has been running Herb across one of the largest Rails codebases out there where Herb helped uncover real issues missed by existing tooling while also providing invaluable feedback. 🙌
Joel's blogpost titled "Adopting Herb at GitHub"

https://hawksley.org/2026/05/06/adopting-herb-at-github.html
1368
Marco Roth @marcoroth.dev · 24/04/2026
Herb v0.10 also ships a new Herb Development Server which allows for instant page updates that don't require full-page refreshes! All you need is ReActionView and to add `herb dev` to your development Procfile to get this setup!
120
Marco Roth @marcoroth.dev · 24/04/2026
In celebration of RubyKaigi I released Herb v0.10 today! 🌿 It ships with new primitives and provides the foundation that we need to build out production reactivity in ReActionView! Along with a new Diffing Engine and ActionView-specific static analysis!
2254
Marco Roth @marcoroth.dev · 24/04/2026
RubyKaigi is happening in Miyazaki next year, Apr 14-16, 2027! 🙌🏼 #rubykaigi #rubykaigi2026 #rubykaigi2027
090
Marco Roth @marcoroth.dev · 22/04/2026
Good Morning RubyKaigi! #rubykaigi #rubykaigi2026
0140
Marco Roth @marcoroth.dev · 16/04/2026
Tokyo-bound for RubyKaigi next week! Looking forward to talk about the recent advancements in HTML-aware ERB and reactivity! #rubykaigi #rubykaigi2026
1100
Marco Roth @marcoroth.dev · 09/04/2026
I just released a new version of the Stimulus LSP that is now fully powered by the power and intelligence of the Herb toolchain! 🌿 I'm so happy that this finally came full circle. These features are initially what prompted me to start working on Herb!
2256
Marco Roth @marcoroth.dev · 06/04/2026
On my way to São Paulo for @tropicalonrails.bsky.social this week! Looking forward to be back in Brazil! 🙌🏼 #tropicalonrails #tropicalonrails2026
190
Marco Roth @marcoroth.dev · 21/03/2026
Herb 🤝 Stimulus LSP
2174
Marco Roth @marcoroth.dev · 16/03/2026
Now that Herb v0.9 is out, we can start advancing the tooling around `<%= render %>` calls, find unused partials, and build up a graph to understand which partials are referenced from which views! This is also going to be very essential for reactivity.
0151
Marco Roth @marcoroth.dev · 13/03/2026
Herb v0.9 is here! 🌿 This release focused on stability, compatibility, and deepening Herb's understanding of HTML+ERB templates. Featuring Action View helper support, Prism AST nodes, new linter rules, a faster linter CLI, new language server features, and engine bug fixes. 🚀
2285
Marco Roth @marcoroth.dev · 10/03/2026
I guess we can also show the method signature and a link to the docs too:
130
Marco Roth @marcoroth.dev · 10/03/2026
Action View tag helpers can get confusing when you're trying to figure out what the exact HTML output will look like. The Herb Language Server can now show you what they evaluate to on hover, and convert between tag helpers and HTML in-place with a single click.
5283
Marco Roth @marcoroth.dev · 08/03/2026
That's a good point, and I think I'd also like that more! Sadly, there doesn't seem to be support for an option like that. At least VS Code only provides these options. "When pressed" means you have to hold "Ctrl+Option"
100
Marco Roth @marcoroth.dev · 08/03/2026
How do we feel about Inlay Hints in HTML+ERB files for closing tags? I'm torn, but the good thing is that most editors allow to disable Inlay Hints if you don't like them. Is this something people would want to use Inlay Hints for? I'd love to hear your opinion!
371
Marco Roth @marcoroth.dev · 08/03/2026
Got a working version of this in my forked Zed version by implementing custom LSP requests 😅 I wonder why this hasn't been implemented in @zed.dev 🤔
030
Marco Roth @marcoroth.dev · 05/03/2026
I got to work on another thing that has been bothering me for a long time: toggling comments in HTML+ERB files. Sadly the Language Server Protocol doesn't support this with a dedicated request, but you can implement it using a custom request plus a small config in the editor.
5232
Marco Roth @marcoroth.dev · 05/03/2026
I really like how this new `erb-no-duplicate-branch-elements` linter rule and its autofix are shaping up! This level of understanding, awareness, and integration still feels purely magical.
0151
Marco Roth @marcoroth.dev · 03/03/2026
The `textDocument/documentHighlight` request in the Language Server Protocol is kinda neat! The Herb Language Server will use it to highlight matching ERB control flow keywords and HTML tag pairs when you place your cursor on them.
0181
Marco Roth @marcoroth.dev · 20/02/2026
These kinds of small fixes are oddly satisfying to get right. This ships in the next version of Herb! 🙌
This pull request improves the parser's error reporting for HTML close tags that are missing their closing `>` by introducing a new `UnclosedCloseTagError`.

Given this input:

```html+erb
<% case Date.today.cwday %>
<% when 6 %>
  <p>Today is Saturday</p
<% else %>
  <p>Today is not a day of the week</p>
<% end %>
```
Previously, when parsing `</p` (missing closing `>`), the error was reported on the next tag (e.g., `<% else %>`) instead of on the `</p` itself. Additionally, the next token (e.g., `<%`) would get incorrectly consumed as the `tag_closing` of the `HTMLCloseTagNode`.
1254
Marco Roth @marcoroth.dev · 31/01/2026
Good Morning, Bangkok! RubyConf Thailand just kicked off! Looking forward to the first Ruby Conference of 2026! 🙌🏼 #rubyconfth #rubyconfth2026
192
Marco Roth @marcoroth.dev · 28/01/2026
Had a great time at the Bangkok.rb Ruby Tuesday meetup yesterday, ahead of RubyConf Thailand later this week! #rubyconfth #rubyconfth2026
2100
Marco Roth @marcoroth.dev · 21/01/2026
Thanks! I just manually assigned the topics to the talks you mentioned! Another thing we've been playing with are web-components that events, speakers (or in this case a topic) can include on their website. They automatically fetch the latest data from @rubyevents.org, but they are not live yet.
110
Marco Roth @marcoroth.dev · 02/01/2026
I had fun prototyping a TUI for running and monitoring Procfile-based applications, similar to `foreman` or `overmind`, but built with the Charm Ruby libraries ✨
1272
Marco Roth @marcoroth.dev · 30/12/2025
Here are some demos from the repositories, showcasing the Lipgloss, Bubbletea, Bubbles, and Bubblezone libraries in action! These demos are fully written in Ruby!
160
Marco Roth @marcoroth.dev · 30/12/2025
Alongside the Ruby 4.0 release last week, I published charm-ruby over Christmas, bringing @charm.land's excellent terminal UI libraries to Ruby. A full TUI framework, reusable components, styled output, forms, markdown rendering, spinners, charts, and a lot more! Demos below ⬇️
A cute, glowing ruby gem with a smiling face, rendered in a pink-purple neon style on a vibrant background. It represents the Ruby language with a Charm-inspired, glamorous CLI aesthetic.
78427
Marco Roth @marcoroth.dev · 23/12/2025
The Herb repo just reached 1k stars on GitHub. Thanks for the support! ⭐️
1110
Marco Roth @marcoroth.dev · 03/12/2025
The next version of the Herb Language Server will ship with "unnecessary diagnostics" for all ERB control flow tags! It dims any branches or expressions that are unnecessary, helping you quickly see which parts aren’t used or executed. 🌿
1285
Marco Roth @marcoroth.dev · 22/11/2025
A really big thank you to @inazarova.bsky.social , Amanda Kinney, and the whole @evilmartians.com crew for putting on such an incredible event. And thanks to @bradgessler.com and @chael.codes for the pics. Let's build the future with Ruby!
0184
Marco Roth @marcoroth.dev · 22/11/2025
The San Francisco Ruby Conference (@sfruby.com) just concluded and I'm incredibly honored and grateful to have been part of it. The conversations, ideas, and encouragement over the past few days were a reminder of how special the energy of the Ruby community really is! ♥️ #sfruby #sfruby2025
Rubyists in front on the Fort Mason Gateway Pavilion, with the "San Francisco Ruby Conference" banner in the background.

Credit: Brad GesslerRubyists in the entrance hallway, with a big "Building the Future with Ruby" banner above the peopleA view of the main stage audience during the closing words.Marco on stage. The slide "Herb to ReActionView: A New Foundation for the View Layer"

Credit: Rachael Wright-Munn
1366
Marco Roth @marcoroth.dev · 13/11/2025
Herb got another feature in Ruby Weekly today, thank you @cooperx86.bsky.social! 🙏🏼
050
Marco Roth @marcoroth.dev · 12/11/2025
Herb v0.8 is here! 🚀 The biggest release yet, packed with new language bindings, Linter Autofix support, Linter Fix-on-Save, a new `.herb.yml` config file, formatter improvements, Tailwind Class Sorting integration, and a ton of performance, tooling and LSP improvements! 🌿
Herb v0.8 Release Summary
14013
Marco Roth @marcoroth.dev · 01/11/2025
Also coming in Herb v0.8.0, the long awaited Tailwind CSS class sorting feature in the Herb Formatter! 🌿 Here is a demo of that working in @zed.dev using the new `.herb.yml` configuration file! 😍
1234
Marco Roth @marcoroth.dev · 01/11/2025
This just made my day! 🙏🏼 Open Source can be rough sometimes, but it's really awesome when people take the time to report how it works for them! Can't wait to see where Herb is going in the next few months! 🌿
0283
Marco Roth @marcoroth.dev · 25/10/2025
Another feature shipping in the upcoming Herb v0.8.0 release is the ability to disable specific linter rules using comments. The Herb Language Server will also include Quick Fix Code Actions to make disabling rules effortless. 🌿
0237
Marco Roth @marcoroth.dev · 21/10/2025
These cloud cards are such a cool idea! Join us at @sfruby.com next month!
3163
Marco Roth @marcoroth.dev · 17/10/2025
Oh, it is the "New Experience" that breaks it...
100
Marco Roth @marcoroth.dev · 17/10/2025
I just checked again, and it seems to work fine 🤔
100
Marco Roth @marcoroth.dev · 14/10/2025
Sweet, beautiful! 😍 Something is broken up with those GitHub Annotations though 🙈 This is how it's supposed to look like:
110
Marco Roth @marcoroth.dev · 12/10/2025
There is! www.rubyevents.org/countries/it...
150
Marco Roth @marcoroth.dev · 12/10/2025
In the upcoming Herb v0.8.0 release, the Herb Language Server will support `Fix-on-Save`, `Format-on-Save`, or both! 🌿 This builds on the new `--fix` option in the Herb Linter, which can automatically correct offenses without formatting the rest of the document.
1246
Marco Roth @marcoroth.dev · 11/10/2025
In the upcoming Herb v0.8.0 release, the Herb Linter will support a new `--fix` option to autocorrect offenses. This isn’t dependent on the Herb Formatter and uses the `printer` architecture, so the Linter can fix only the offenses without touching anything else in the document!
Screenshot of a terminal showing Herb Linter output to shocase the new --fix option.
2194
Marco Roth @marcoroth.dev · 26/09/2025
Good Morning Tokyo, Good Morning @kaigionrails.org! #kaigionrails #kaigionrails2025
0100