<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://bridgetownrb.com/" version="2.2.2">Bridgetown</generator><link href="https://www.bridgetownrb.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.bridgetownrb.com/" rel="alternate" type="text/html" /><updated>2026-07-06T13:47:54-07:00</updated><id>https://www.bridgetownrb.com/feed.xml</id><title type="html">Bridgetown</title><subtitle>Bridgetown is a next-generation, progressive site generator &amp; fullstack framework, powered by Ruby.</subtitle><entry><title type="html">Everyone Deserves a Wiki: Bridgetown 2.2 is Here</title><link href="https://www.bridgetownrb.com/release/everyone-deserves-a-wiki-bridgetown-2-2/" rel="alternate" type="text/html" title="Everyone Deserves a Wiki: Bridgetown 2.2 is Here" /><published>2026-05-19T12:37:46-07:00</published><updated>2026-05-19T12:37:46-07:00</updated><id>repo://posts.collection/_posts/2026/2026-05-19-everyone-deserves-a-wiki-bridgetown-2-2.md</id><content type="html" xml:base="https://www.bridgetownrb.com/release/everyone-deserves-a-wiki-bridgetown-2-2/">&lt;figure style=&quot;max-width: 840px; margin: 0 auto 2.5em&quot;&gt;
  &lt;img src=&quot;/images/verdant-river-city.jpg&quot; alt=&quot;Verdant River City: Bridgetown v2.2&quot; style=&quot;display: block; box-shadow: 0px 10px 30px rgba(0,0,0,0.2); border-radius: .75rem&quot; /&gt;
  &lt;figcaption style=&quot;font-size: 80%; margin: 0.5rem; text-align: right&quot;&gt;&lt;a href=&quot;https://pixelfed.social/@essentiallife&quot; target=&quot;_blank&quot;&gt;Photography by Jared White&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Springtime in Portland is always a true delight, and the perfect backdrop for our newest release of &lt;strong&gt;Bridgetown, version 2.2&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When it came time to decide on the codename for the release, we just couldn’t bear the thought of moving away from our beloved “River City” moniker. Mere months after our massive version 2 launched, we released 2.1 during the 2025 holiday season and called it “Festive River City”. And we knew we needed to keep this tradition alive just a little bit longer.&lt;/p&gt;

&lt;p&gt;So we turned to our &lt;em&gt;crack marketing team&lt;/em&gt;, loaded them up with local apple cider and Oregon Marionberry scones, locked them in a chill café adjacent to a food cart pod, and let them work their special brand of magic. After many, many long hours of heightened debate, they solemnly informed us they had arrived at a winner. And winner it is indeed.&lt;/p&gt;

&lt;p&gt;Introducing &lt;strong&gt;Verdant River City&lt;/strong&gt;, the latest iteration of the Bridgetown Ruby Web Framework.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/bridgetownrb/bridgetown/releases/tag/v2.2.0&quot;&gt;Read the 2.2 release notes here.&lt;/a&gt; To upgrade, make sure you’re running at least Ruby 3.3 and Node 22, then modify your &lt;code class=&quot;highlighter-rouge&quot;&gt;Gemfile&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;gem&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;bridgetown&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;~&amp;gt; 2.2.0&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;gem&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;bridgetown-routes&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;~&amp;gt; 2.2.0&quot;&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# if applicable&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;and run &lt;code class=&quot;highlighter-rouge&quot;&gt;bundle update&lt;/code&gt;. &lt;a href=&quot;/docs/installation/upgrade&quot;&gt;More upgrade instructions here.&lt;/a&gt; Or you can run &lt;code class=&quot;highlighter-rouge&quot;&gt;gem install bridgetown -N -v 2.2.0&lt;/code&gt; and then create a new site.&lt;/p&gt;

&lt;h3 id=&quot;hyperlink-with-aplomb&quot;&gt;Hyperlink with Aplomb&lt;/h3&gt;

&lt;p&gt;The marquee new feature of Bridgetown 2.2 “Verdant River City” is support for &lt;em&gt;wikilinks&lt;/em&gt;. It’s a syntax which makes it easy to add links when authoring any Markdown file. No longer do you need to keep track of filenames or URLs. Just type &lt;code class=&quot;highlighter-rouge&quot;&gt;[[Page Title Goes Here]]&lt;/code&gt; and Bridgetown will automatically locate a resource with &lt;code class=&quot;highlighter-rouge&quot;&gt;title: Page Title Goes Here&lt;/code&gt; in its front matter. You can of course &lt;a href=&quot;/docs/resources#wikilinks&quot;&gt;add additional syntax to customize the text of the link&lt;/a&gt; if the title isn’t suitable, as well as link to a specific section/anchor within the resource.&lt;/p&gt;

&lt;p&gt;Wikilinks pairs well with our previous release’s support for &lt;a href=&quot;/docs/content/external-sources&quot;&gt;external content sources&lt;/a&gt;. It’s now possible to author a file-based “wiki” entirely with outside applications, point to those files from a Bridgetown project, and publish that wiki as a public (or internal!) website—perfect for knowledge bases, digital gardens, academic archives, and so much more.&lt;/p&gt;

&lt;h3 id=&quot;soar-with-falcon&quot;&gt;Soar with Falcon&lt;/h3&gt;

&lt;p&gt;In Bridgetown 2.2, we have migrated a new default server, Falcon. (Don’t worry: existing projects still on Puma will still run without issue*. You can migrate, or not, at your leisure!)&lt;/p&gt;

&lt;p&gt;Falcon is a new highly concurrent Ruby web application server. While Puma serves a request per thread, Falcon uses fibers which are an order of magnitude cheaper to create. Falcon also supports HTTP/2 natively. This combined with its highly concurrent architecture means it’s viable to serve internet traffic using Falcon itself instead of another webserver such as Caddy in front of it.&lt;/p&gt;

&lt;p&gt;Falcon has been battle-tested at Shopify and &lt;a href=&quot;https://speakerdeck.com/ioquatix/surviving-black-friday-329-billion-requests-with-falcon&quot;&gt;used to serve Black Friday traffic&lt;/a&gt;, and as such we believe it’s the future for the Ruby ecosystem. It also paves the way for Bridgetown to support a deployment story where the website is served using Ruby code end-to-end.&lt;/p&gt;

&lt;p&gt;If you’d like to try out Falcon in your existing Bridgetown project, remove &lt;code class=&quot;highlighter-rouge&quot;&gt;gem &quot;puma&quot;&lt;/code&gt; from your &lt;code class=&quot;highlighter-rouge&quot;&gt;Gemfile&lt;/code&gt; and add &lt;code class=&quot;highlighter-rouge&quot;&gt;gem &quot;falcon&quot;&lt;/code&gt;. After a &lt;code class=&quot;highlighter-rouge&quot;&gt;bundle install&lt;/code&gt;, you can use Bridgetown exactly as before, only now it will detect you have Falcon installed and use that instead of Puma!&lt;/p&gt;

&lt;p&gt;* Due to underlying server layer refactoring, you may occasionally see a Puma “thread error” notice when pressing Ctrl+C to terminate the dev server. It’s harmless, but any unwanted noise in your terminal isn’t OK with us, so we’ll track that down and include a patch in the next point release.&lt;/p&gt;

&lt;h3 id=&quot;bridgetown-sites-in-the-wild&quot;&gt;Bridgetown Sites in the Wild&lt;/h3&gt;

&lt;p&gt;It’s been a busy time for the Bridgetown ecosystem! Rubyists everywhere are turning to Bridgetown to serve their publishing needs, including:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://sidekiq.org/&quot;&gt;Sidekiq&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://rubocop.org/&quot;&gt;RuboCop&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://rockymtnruby.dev/&quot;&gt;Rocky Mountain Ruby&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’re also a featured framework now within the Ruby Users Forum! &lt;a href=&quot;https://www.rubyforum.org/t/bring-your-bridgetown-discussions-to-the-ruby-users-forum/301&quot;&gt;Read the full announcement here.&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;new-sponsorship-opportunity&quot;&gt;New Sponsorship Opportunity!&lt;/h3&gt;

&lt;p&gt;We are slowly moving off of promoting GitHub Sponsors as the canonical way of supporting Bridgetown financially. We will incrementally investigate systems &amp;amp; opportunities to ensure the continued sustainability of the ecosystem, and in a first step to that end, &lt;a href=&quot;/sponsor&quot;&gt;you can now become a sponsor through Liberapay.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Our first goal: $400/month&lt;/strong&gt;. We actually exceeded this goal once before using GitHub Sponsors, but, well, the last couple of years have been hard on everyone in independent open source. But we believe this goal is achievable again, and once we reach it…&lt;em&gt;we’ll aim for the next goal!&lt;/em&gt; 💪&lt;/p&gt;

&lt;h3 id=&quot;but-thats-not-all-folks&quot;&gt;But That’s Not All Folks…&lt;/h3&gt;

&lt;p&gt;There is in fact &lt;em&gt;another&lt;/em&gt; major announcement we’re making at this juncture beyond the release of 2.2, and that’s the launch of the &lt;a href=&quot;/plugins/center&quot;&gt;&lt;strong&gt;Bridgetown Center&lt;/strong&gt; plugin program&lt;/a&gt;. But we’ll save that for another blog post. =)&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;strong&gt;Thank you for your interest in Bridgetown 2.2!&lt;/strong&gt; In addition to the features mentioned previously, we’ve been fixing bugs, improving performance, and generally making the experience of using Bridgetown even better. &lt;a href=&quot;https://github.com/bridgetownrb/bridgetown/releases/tag/v2.2.0&quot;&gt;A huge shoutout to all the contributors who made this release possible.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you run into any issues, &lt;a href=&quot;/community&quot;&gt;please hop into our community channels&lt;/a&gt; and let us know how we can help. We welcome your feedback and ideas! In addition, you can &lt;a href=&quot;https://bsky.app/profile/bridgetownrb.com&quot;&gt;follow us on Bluesky&lt;/a&gt; and &lt;a href=&quot;https://ruby.social/@bridgetown&quot;&gt;the fediverse&lt;/a&gt; to stay current on the latest news.&lt;/p&gt;

&lt;p&gt;Additional credit to &lt;a href=&quot;https://ruby.social/@ayush&quot;&gt;Ayush&lt;/a&gt; for assistance in the writeup regarding Falcon.&lt;/p&gt;</content><author><name>Jared White</name></author><category term="release" /><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.bridgetownrb.com/images/verdant-river-city.jpg" /><media:content medium="image" url="https://www.bridgetownrb.com/images/verdant-river-city.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Bridgetown 2.1 Has Come to Town! Happy Holidays 🥳</title><link href="https://www.bridgetownrb.com/release/bridgetown-2-1-has-come-to-town-happy-holidays/" rel="alternate" type="text/html" title="Bridgetown 2.1 Has Come to Town! Happy Holidays 🥳" /><published>2025-12-24T08:22:54-08:00</published><updated>2025-12-24T08:22:54-08:00</updated><id>repo://posts.collection/_posts/2025/2025-12-24-bridgetown-2-1-has-come-to-town-happy-holidays.md</id><content type="html" xml:base="https://www.bridgetownrb.com/release/bridgetown-2-1-has-come-to-town-happy-holidays/">&lt;p&gt;You better watch out (I’m telling you why): the latest release of our merry little Ruby framework is coming to town! Yes indeed, &lt;strong&gt;Bridgetown 2.1 “Festive River City”&lt;/strong&gt; is here, with a marquee feature enabling you to load in wiki-style content &amp;amp; “digital gardens” managed by external applications, and a slew of other improvements. And you’d better believe we’re ready for the imminent Christmas release of &lt;strong&gt;Ruby 4.0&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;You can read more about the release details &lt;a href=&quot;/release/bridgetown-2-1-beta-1-festive-river-city/&quot;&gt;here in our initial beta post&lt;/a&gt;, and there are a couple additional details we need to mention:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;We now have a brand-new &lt;strong&gt;Matrix&lt;/strong&gt; chat room! Embrace open protocols and &lt;a href=&quot;https://matrix.to/#/%23bridgetownrb:matrix.org&quot;&gt;chat with fellow Bridgetowners on Matrix&lt;/a&gt;. (We recommend you install &lt;a href=&quot;https://matrix.org/ecosystem/clients/element-x/&quot;&gt;Element X for iOS &amp;amp; Android&lt;/a&gt; so you can access Matrix via mobile platforms.)&lt;/li&gt;
  &lt;li&gt;We fully embrace Bridgetown projects configured to bundle gems from alternative community servers like &lt;strong&gt;gem.coop&lt;/strong&gt; as well as our own canonical &lt;strong&gt;gems.bridgetownrb.com&lt;/strong&gt; server. &lt;a href=&quot;/docs/installation#gem-servers&quot;&gt;Read the details here.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/bridgetownrb/bridgetown/releases/tag/v2.1.0&quot;&gt;Read the 2.1 release notes here.&lt;/a&gt; To upgrade, make sure you’re running at least Ruby 3.2 and Node 22, then modify your &lt;code class=&quot;highlighter-rouge&quot;&gt;Gemfile&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;gem&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;bridgetown&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;~&amp;gt; 2.1.0&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;gem&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;bridgetown-routes&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;~&amp;gt; 2.1.0&quot;&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# if applicable&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;and run &lt;code class=&quot;highlighter-rouge&quot;&gt;bundle update&lt;/code&gt;. &lt;a href=&quot;/docs/installation/upgrade&quot;&gt;Upgrade instructions here.&lt;/a&gt; Or you can run &lt;code class=&quot;highlighter-rouge&quot;&gt;gem install bridgetown -N -v 2.1.0&lt;/code&gt; and then create a new site.&lt;/p&gt;

&lt;p&gt;And of course we continue to push for awareness of “indie web” and sustainable alternatives to Big Tech solutions. Our documentation now includes &lt;a href=&quot;/docs/deployment#statichosteu&quot;&gt;information on how to deploy&lt;/a&gt; static Bridgetown sites to &lt;a href=&quot;https://statichost.eu&quot;&gt;statichost.eu&lt;/a&gt;, and our Automations feature can load automation scripts from Codeberg and GitLab repositories in addition to GitHub.&lt;/p&gt;

&lt;p&gt;If you run into any issues trying out Bridgetown 2.1, &lt;a href=&quot;/community&quot;&gt;please hop into our community channels&lt;/a&gt; and let us know how we can help. We welcome your feedback and ideas! In addition, you can &lt;a href=&quot;https://bsky.app/profile/bridgetownrb.com&quot;&gt;follow us on Bluesky&lt;/a&gt; and &lt;a href=&quot;https://ruby.social/@bridgetown&quot;&gt;the fediverse&lt;/a&gt; to stay current on the latest news.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy Holidays! See y’all in the New Year!&lt;/strong&gt; 🎉 🎆&lt;/p&gt;</content><author><name>Jared White</name></author><category term="release" /><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.bridgetownrb.com/images/river-city-postcard-bridgetown.jpg" /><media:content medium="image" url="https://www.bridgetownrb.com/images/river-city-postcard-bridgetown.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Let’s Get Festive! ’Tis the Season to Be Jolly with Bridgetown 2.1 Beta 1</title><link href="https://www.bridgetownrb.com/release/bridgetown-2-1-beta-1-festive-river-city/" rel="alternate" type="text/html" title="Let’s Get Festive! ’Tis the Season to Be Jolly with Bridgetown 2.1 Beta 1" /><published>2025-12-03T11:18:55-08:00</published><updated>2025-12-03T11:18:55-08:00</updated><id>repo://posts.collection/_posts/2025/2025-12-03-bridgetown-2-1-beta-1-festive-river-city.md</id><content type="html" xml:base="https://www.bridgetownrb.com/release/bridgetown-2-1-beta-1-festive-river-city/">&lt;p&gt;A mere three months after &lt;a href=&quot;/release/bridgetown-v2-river-city-released/&quot;&gt;the release of Bridgetown 2.0&lt;/a&gt; and we’re already onto 2.1?! What can I say…when you’re on a roll, you’re on a roll. And things are definitely rolling here in Bridgetown as we celebrate our &lt;strong&gt;“Festive River City 🥳”&lt;/strong&gt; (we just couldn’t part ways with the River City branding just yet, hence our “Snow Leopard” style code name!).&lt;/p&gt;

&lt;p&gt;With the end-of-year holidays upon us, we’re excited to be presenting several exciting new features and yet more under-the-hood refactoring &amp;amp; infrastructure work which sets us up well for future feature development in 2026. While there are possibly some breaking changes in 2.1 (which is why we opted for a beta cycle), we hope to mitigate those as much as possible or offer clear instructions on how to correct swiftly. Your feedback during the beta is most appreciated!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/bridgetownrb/bridgetown/releases/tag/v2.1.0.beta1&quot;&gt;Read the release notes here.&lt;/a&gt; To test your sites with the 2.1 beta, modify your &lt;code class=&quot;highlighter-rouge&quot;&gt;Gemfile&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;gem&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;bridgetown&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;~&amp;gt; 2.1.0.beta1&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;gem&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;bridgetown-routes&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;~&amp;gt; 2.1.0.beta1&quot;&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# if applicable&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;and run &lt;code class=&quot;highlighter-rouge&quot;&gt;bundle update&lt;/code&gt;. Or you can run &lt;code class=&quot;highlighter-rouge&quot;&gt;gem install bridgetown -N -v 2.1.0.beta1&lt;/code&gt; to create a new site.&lt;/p&gt;

&lt;h3 id=&quot;external-content-sources-markdown-apps-digital-gardens-wikis-etc&quot;&gt;External Content Sources (Markdown Apps, Digital Gardens, Wikis, etc.)&lt;/h3&gt;

&lt;p&gt;Have you ever thought to yourself: “Self, wouldn’t it be awesome if I could just point Bridgetown at a folder full of Markdown files and it would just render??”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your wish is our command.&lt;/strong&gt; ✨&lt;/p&gt;

&lt;p&gt;In Bridgetown 2.1, you can now add one or more “external content” sources via an initializer which can be literally any folder on the filesystem, even the parent folder! Yes, Bridgetown now supports “folder inversion” as an alternative installation approach, which means in addition to placing Markdown files and related assets in &lt;code class=&quot;highlighter-rouge&quot;&gt;src&lt;/code&gt;, you can write Markdown in the folder &lt;em&gt;above&lt;/em&gt; where Bridgetown is installed (and in various subfolders thereof). Not only that, but &lt;strong&gt;front matter is completely optional!&lt;/strong&gt; This is perfect for “digital gardens”, wikis, and other file-based content systems managed by third-party Markdown apps such as Obsidian. (And you’d better believe we have a whole bunch of wiki-themed improvements in mind for future releases.) 😎 &lt;a href=&quot;/docs/content/external-sources&quot;&gt;Read our docs for more information.&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;universal-rendering-for-partials--components&quot;&gt;Universal Rendering for Partials &amp;amp; Components&lt;/h3&gt;

&lt;p&gt;A limitation of how our rendering system worked for partials in the past was that you could only use partials within the same template engine. So if you were writing an ERB template, you couldn’t use a Serbea partial. Or if you were in a Serbea template, you couldn’t use a pure Ruby (&lt;code class=&quot;highlighter-rouge&quot;&gt;.rb&lt;/code&gt;) partial.&lt;/p&gt;

&lt;p&gt;That has now been fixed! Any template engine can render any partial whether ERB, Serbea, or pure Ruby. On top of that, you can now render both partials &amp;amp; components to strings from any context (not just within a template)—including the console! &lt;a href=&quot;/docs/template-engines/erb-and-beyond#universal-rendering&quot;&gt;Read our docs for more information.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Speaking of the console, you now have access to the &lt;a href=&quot;https://github.com/rack/rack-test&quot;&gt;Rack::Test&lt;/a&gt; DSL (if the gem is installed, which happenes automatically if you use the &lt;code class=&quot;highlighter-rouge&quot;&gt;minitesting&lt;/code&gt; bundled configuration). This is great for testing both static &amp;amp; dynamic routes directly within the REPL.&lt;/p&gt;

&lt;h3 id=&quot;samovar-freyia-and-custom-commands&quot;&gt;Samovar, Freyia, and Custom Commands&lt;/h3&gt;

&lt;p&gt;In Bridgetown 2.1, we’ve migrated away from using Thor for our command-line interface (CLI) and are now using &lt;a href=&quot;https://github.com/ioquatix/samovar&quot;&gt;Samovar&lt;/a&gt;, created by Samuel Williams. It provides a straightforward, modern, and elegant way to write commands, and as a bonus, we’ve made it much easier for you to extend Bridgetown’s CLI with your own commands in any project! Just create a &lt;code class=&quot;highlighter-rouge&quot;&gt;config/custom_commands.rb&lt;/code&gt; file and add your own &lt;code class=&quot;highlighter-rouge&quot;&gt;Bridgetown::Command&lt;/code&gt; subclasses. We believe in most cases this is a more powerful &amp;amp; flexible solution than authoring new Rake tasks. &lt;a href=&quot;/docs/plugins/commands&quot;&gt;Read our docs for more information.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note that for the 2.1 release cycle, we have provided a Thor “shim” so existing sites and plugins which provide Thor commands should continue to work as before. In a future release, we will be removing the shim so please update your commands accordingly. In the meantime, if you run into any compatibility issues with the shim please report them and let us know!&lt;/p&gt;

&lt;p&gt;Another of our prior uses of Thor was for the Automations functionality (which also powers our Bundled Configurations). Because this functionality is so important, and also near-impossible to replicate verbatim using an alternative library, we have &lt;em&gt;extracted&lt;/em&gt; the “actions” &amp;amp; “shell” portions of Thor as a hard fork out to a new gem called &lt;a href=&quot;https://codeberg.org/jaredwhite/freyia&quot;&gt;Freyia&lt;/a&gt;. We will be actively developing Freyia as its own independent project going forward, refactoring and adding new features as needed.&lt;/p&gt;

&lt;h3 id=&quot;removal-of-active-support&quot;&gt;Removal of Active Support&lt;/h3&gt;

&lt;p&gt;As part of our pledge to ensure Bridgetown is free of dependencies directly managed by 37signals, we have finialized the removal of the Active Support gem. If you have written your own code which assumes the availability of Active Support, you may need to &lt;code class=&quot;highlighter-rouge&quot;&gt;bundle add activesupport&lt;/code&gt; and require pieces of it yourself. For example, if you want to use &lt;code class=&quot;highlighter-rouge&quot;&gt;.blank?&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;.present?&lt;/code&gt;, etc., add the gem and include the following in your &lt;code class=&quot;highlighter-rouge&quot;&gt;config/initializers.rb&lt;/code&gt; file:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;active_support/core_ext/object/blank&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href=&quot;https://guides.rubyonrails.org/v8.0/active_support_core_extensions.html&quot;&gt;Documentation on Active Support is available here.&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;supporting-alternatives-to-big-tech&quot;&gt;Supporting Alternatives to Big Tech&lt;/h3&gt;

&lt;p&gt;We continue to push for awareness of “indie web” and sustainable alternatives to Big Tech solutions. Our documentation now includes &lt;a href=&quot;/docs/deployment#statichosteu&quot;&gt;information on how to deploy&lt;/a&gt; static Bridgetown sites to &lt;a href=&quot;https://statichost.eu&quot;&gt;statichost.eu&lt;/a&gt;, and our Automations feature can load automation scripts from Codeberg and GitLab repositories in addition to GitHub.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;As always if you run into any issues trying out Bridgetown 2.1, &lt;a href=&quot;/community&quot;&gt;please hop into our community channels&lt;/a&gt; and let us know how we can help. We welcome your feedback and ideas! In addition, you can &lt;a href=&quot;https://bsky.app/profile/bridgetownrb.com&quot;&gt;follow us on Bluesky&lt;/a&gt; and &lt;a href=&quot;https://ruby.social/@bridgetown&quot;&gt;the fediverse&lt;/a&gt; to stay current on the latest news.&lt;/p&gt;</content><author><name>Jared White</name></author><category term="release" /><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.bridgetownrb.com/images/river-city-postcard-bridgetown.jpg" /><media:content medium="image" url="https://www.bridgetownrb.com/images/river-city-postcard-bridgetown.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Welcome Our Newest Core Team Member: Felipe Vogel</title><link href="https://www.bridgetownrb.com/news/welcome-felipe-vogel-to-our-core-team/" rel="alternate" type="text/html" title="Welcome Our Newest Core Team Member: Felipe Vogel" /><published>2025-10-08T00:00:00-07:00</published><updated>2025-10-08T00:00:00-07:00</updated><id>repo://posts.collection/_posts/2025/2025-10-08-welcome-felipe-vogel-to-our-core-team.md</id><content type="html" xml:base="https://www.bridgetownrb.com/news/welcome-felipe-vogel-to-our-core-team/">&lt;p&gt;We’ve very excited to announce that &lt;strong&gt;Felipe Vogel&lt;/strong&gt; has joined the Bridgetown Core Team! Felipe is a developer based in Lexington, Kentucky, and originally hails from Brazil. He has been an enthusiastic user of Bridgetown for a long time now. In fact…&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/felipe-vogel-avatar.jpg&quot; alt=&quot;avatar of Felipe Vogel&quot; style=&quot;border-radius: 100%; inline-size: 40vw; max-inline-size: 200px; float: right; margin-inline-start: 1rem; margin-block-end: 1rem&quot; /&gt;
…When Felipe was first learning Ruby, Bridgetown was the first Ruby web framework that he picked up. Eventually he got into Rails and other tools as well, but that’s quite an amazing story. Here are a few other &lt;a href=&quot;https://fpsvogel.com&quot;&gt;fun facts about Felipe from his website&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;“&lt;strong&gt;I used to be a humanities teacher&lt;/strong&gt; in a former career that took me all the way to West Africa.”&lt;/li&gt;
  &lt;li&gt;“&lt;strong&gt;I grew up in Brazil&lt;/strong&gt; in southern Amazonia, at times living with the Jarawara indigenous people, in a village that you can see on Google Maps.”&lt;/li&gt;
  &lt;li&gt;“&lt;strong&gt;I’m a big Latin nerd.&lt;/strong&gt; In grad school I took most of my classes in Latin and lived in the unofficial &lt;em&gt;domus Latina&lt;/em&gt; (Latin house), where we spoke only Latin except when we had guests… which, as you might guess, was rare 😂”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You’ll start to see Felipe a bit more in our &lt;a href=&quot;https://discord.gg/4E6hktQGz4&quot;&gt;Discord chat&lt;/a&gt;, taking a peek at new PRs, and in other community endeavors. You can also find Felipe in the fediverse: &lt;a href=&quot;https://ruby.social/@fpsvogel&quot;&gt;@fpsvogel@ruby.social&lt;/a&gt;. We’re glad to have Felipe aboard the USSG Bridgetown! 🫡&lt;/p&gt;</content><author><name>Jared White</name></author><category term="news" /><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.bridgetownrb.com/images/river-city-postcard-bridgetown.jpg" /><media:content medium="image" url="https://www.bridgetownrb.com/images/river-city-postcard-bridgetown.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Good Times in River City: Bridgetown 2.0 is Here!</title><link href="https://www.bridgetownrb.com/release/bridgetown-v2-river-city-released/" rel="alternate" type="text/html" title="Good Times in River City: Bridgetown 2.0 is Here!" /><published>2025-09-16T09:01:23-07:00</published><updated>2025-09-16T09:01:23-07:00</updated><id>repo://posts.collection/_posts/2025/2025-09-16-bridgetown-v2-river-city-released.md</id><content type="html" xml:base="https://www.bridgetownrb.com/release/bridgetown-v2-river-city-released/">&lt;figure style=&quot;max-width: 840px; margin: 0 auto 2.5em&quot;&gt;
  &lt;img src=&quot;/images/river-city-postcard-bridgetown.jpg&quot; alt=&quot;Greetings from River City! Bridgetown v2 Web Framework&quot; style=&quot;display: block; box-shadow: 0px 10px 30px rgba(0,0,0,0.2); border-radius: 4px&quot; /&gt;
  &lt;figcaption style=&quot;font-size: 80%; margin: 0.5rem; text-align: right&quot;&gt;&lt;a href=&quot;https://adrianvalenz.com&quot; target=&quot;_blank&quot;&gt;Graphic Design by Adrian Valenzuela&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Introducing the only Ruby web framework which bridges the gap between static Markdown sites and fullstack database-driven application deployments: &lt;strong&gt;Bridgetown 2.0 “River City” has been released!&lt;/strong&gt; 🎉 This version has long been in the hopper, and it’s chock full of major quality-of-life improvements (&lt;a href=&quot;https://github.com/bridgetownrb/bridgetown/releases/tag/v2.0.0&quot;&gt;check out the release notes!&lt;/a&gt;). Start your first Bridgetown site with our &lt;a href=&quot;/docs&quot;&gt;installation guide&lt;/a&gt;, or upgrade your site by bumping the version in your Gemfile:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;gem&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;bridgetown&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;~&amp;gt; 2.0&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;gem&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;bridgetown-routes&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;~&amp;gt; 2.0&quot;&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# if applicable&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;and running &lt;code class=&quot;highlighter-rouge&quot;&gt;bundle update&lt;/code&gt;. &lt;a href=&quot;/docs/installation/upgrade&quot;&gt;More upgrade details here&lt;/a&gt;, including switching from Yarn to NPM and from CommonJS to ESM for a modern, streamlined frontend build system. If you run into any issues, &lt;a href=&quot;https://discord.gg/4E6hktQGz4&quot;&gt;hop in our Discord chat&lt;/a&gt; and let us know how we can help you!&lt;/p&gt;

&lt;sl-alert variant=&quot;primary&quot; open=&quot;&quot;&gt;
  &lt;sl-icon slot=&quot;icon&quot; library=&quot;remixicon&quot; name=&quot;system/information&quot; style=&quot;font-size:1.25em&quot;&gt;&lt;/sl-icon&gt;
  &lt;p&gt;&lt;strong&gt;A huge thank you to our many contributors!&lt;/strong&gt; 🎉 ayushn21, KonnorRogers, michaelherold, erickguan, MaxLap, jeremyevans, brainbuz, akarzim, surrim, mlitwiniuk, jaredcwhite, and everyone who submitted bug reports and feedback. We couldn’t have done this without you!&lt;/p&gt;

&lt;p&gt;Also, if you’re brand-new to the Bridgetown 2.0 release cycle, &lt;a href=&quot;/blog&quot;&gt;read our Road to Bridgetown 2.0 series here&lt;/a&gt;.&lt;/p&gt;
&lt;/sl-alert&gt;

&lt;p&gt;Now without further ado, let’s talk about all the new features in &lt;strong&gt;Bridgetown v2 “River City”.&lt;/strong&gt;&lt;/p&gt;

&lt;h3 id=&quot;new-defaults&quot;&gt;New Defaults&lt;/h3&gt;

&lt;p&gt;When you create a new Bridgetown site, you will now get &lt;strong&gt;ERB templates&lt;/strong&gt; installed automatically (rather than the previous default of Liquid). We believe this is much more ergonomic for Ruby developers, but if you work with designers who are more familiar with Liquid, that is still officially supported. (For existing sites based on Liquid, add &lt;code class=&quot;highlighter-rouge&quot;&gt;template_engine :liquid&lt;/code&gt; to your &lt;code class=&quot;highlighter-rouge&quot;&gt;config/initializers.rb&lt;/code&gt; file or &lt;code class=&quot;highlighter-rouge&quot;&gt;template_engine: liquid&lt;/code&gt; to &lt;code class=&quot;highlighter-rouge&quot;&gt;bridgetown.config.yml&lt;/code&gt;.)&lt;/p&gt;

&lt;p&gt;Bridgetown now requires a minimum version of Ruby 3.1.4 and Node 20.6. This unlocks a variety of syntax improvements both for our internal Ruby APIs and the Ruby code you write in your projects. And with the Node upgrade, we can now switch our esbuild config from the older CommonJS syntax (aka &lt;code class=&quot;highlighter-rouge&quot;&gt;require&lt;/code&gt;) to modern ESM (aka &lt;code class=&quot;highlighter-rouge&quot;&gt;import&lt;/code&gt;) which is the industry standard and much more expected for frontend JavaScript developers. In addition, Yarn is no longer required as a JS package manager—you can switch to using NPM directly which is a far better tool now than it once was. Or if you prefer, &lt;code class=&quot;highlighter-rouge&quot;&gt;pnpm&lt;/code&gt; which is also supported! (Just make sure you update the &lt;code class=&quot;highlighter-rouge&quot;&gt;:frontend&lt;/code&gt; tasks in your project’s &lt;code class=&quot;highlighter-rouge&quot;&gt;Rakefile&lt;/code&gt; to use your preferred package manager.)&lt;/p&gt;

&lt;p&gt;New sites will default to including just the newer Ruby initializers configuration (&lt;code class=&quot;highlighter-rouge&quot;&gt;config/initializers.rb&lt;/code&gt;), but the legacy YAML config (&lt;code class=&quot;highlighter-rouge&quot;&gt;bridgetown.config.yml&lt;/code&gt;) is still supported and may still be required for certain plugins.&lt;/p&gt;

&lt;p&gt;Finally, webpack is no longer supported. Bridgetown is all in on esbuild as the “last frontend bundler you’ll ever need”. Make sure you search-and-replace &lt;code class=&quot;highlighter-rouge&quot;&gt;webpack_path&lt;/code&gt; to &lt;code class=&quot;highlighter-rouge&quot;&gt;asset_path&lt;/code&gt; in your templates!&lt;/p&gt;

&lt;h3 id=&quot;fast-refresh&quot;&gt;Fast Refresh&lt;/h3&gt;

&lt;p&gt;You know how frustrating it is when you fix a simple typo on a large site and then you have to wait 20 seconds for a rebuild? Well I don’t, because I’ve been rocking the betas for months! 😂 But in all seriousness, this is a fantastic new feature in Bridgetown 2.0, based on a pair of techniques called &lt;em&gt;signals&lt;/em&gt; and &lt;em&gt;effects&lt;/em&gt; to track changes to individuals files and the ways in which data can flow across multiple files.&lt;/p&gt;

&lt;p&gt;In not all, but in most cases, &lt;strong&gt;this results in a much faster rebuild time.&lt;/strong&gt; If you edit just a single resource file, it’s likely only that one resource will get rebuilt. Using the new &lt;code class=&quot;highlighter-rouge&quot;&gt;site.signals&lt;/code&gt; API, you can edit data files and only the pages loading in that data will get rebuilt. Fast refresh also tracks access to components within templates. &lt;a href=&quot;/future/road-to-bridgetown-2.0-fast-refresh/&quot;&gt;Read our original announcement blog post&lt;/a&gt; for a deep dive into this functionality.&lt;/p&gt;

&lt;h3 id=&quot;superior-roda-integration&quot;&gt;Superior Roda Integration&lt;/h3&gt;

&lt;p&gt;Bridgetown provides a &lt;a href=&quot;/docs/routes&quot;&gt;full SSR pipeline built on top of the Roda web toolkit&lt;/a&gt;. You can handle form data or JSON payloads with ease, or power up our dynamic, file-based routing with all of Bridgetown’s template engines and component rendering at your disposal.&lt;/p&gt;

&lt;p&gt;This was all true prior to 2.0, but what’s new is we’ve added a lot more smarts to Roda for building object-oriented backend APIs out of modular building blocks. You can keep the Roda routing tree lean-and-mean and rely on “controller” and “view” style objects for a familiar pattern to fullstack application development. Want to access a database like PostgreSQL? Our new &lt;a href=&quot;https://github.com/bridgetownrb/bridgetown_sequel&quot;&gt;bridgetown_sequel plugin&lt;/a&gt; is the answer you seek.&lt;/p&gt;

&lt;p&gt;Check out our &lt;a href=&quot;/docs/roda&quot;&gt;Roda reference guide&lt;/a&gt; as well as our updated &lt;a href=&quot;/docs/routes&quot;&gt;Routes guide&lt;/a&gt; to get up to speed.&lt;/p&gt;

&lt;h3 id=&quot;streamlined&quot;&gt;Streamlined&lt;/h3&gt;

&lt;p&gt;This is a &lt;a href=&quot;https://codeberg.org/jaredwhite/streamlined&quot;&gt;new library&lt;/a&gt; installed with Bridgetown for embedding HTML templates in pure Ruby code using “squiggly heredocs” along with a set of helpers to ensure output safety (proper escaping) and easier interplay between HTML markup and Ruby code. &lt;strong&gt;And it’s fast: roughly 50% faster than ERB!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can use Streamlined directly in resources saved as pure Ruby (&lt;code class=&quot;highlighter-rouge&quot;&gt;.rb&lt;/code&gt;), as well as in Bridgetown components. Here’s an example of what that looks like:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;SectionComponent&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Bridgetown&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Component&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;variant&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;heading&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;vi&quot;&gt;@variant&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;vi&quot;&gt;@heading&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;vi&quot;&gt;@options&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;variant&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;heading&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;options&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;heading&lt;/span&gt;
    &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;~&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;HTML&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;
      &amp;lt;h3&amp;gt;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;text&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;vi&quot;&gt;@heading&lt;/span&gt; &lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;}&amp;lt;/h3&amp;gt;
&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;    HTML&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;template&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;html&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;~&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;HTML&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;
      &amp;lt;section &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;html_attributes&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;variant&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;vi&quot;&gt;@options&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&amp;gt;
        &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;html&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;heading&lt;/span&gt; &lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;}
        &amp;lt;section-body&amp;gt;
          &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;html&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;content&lt;/span&gt; &lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;}
        &amp;lt;/section-body&amp;gt;
      &amp;lt;/section&amp;gt;
&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;    HTML&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You may still prefer to author HTML in a “markup first” manner with embedded Ruby, rather than Ruby with embedded HTML (and sometimes I do), but for components with complex interpolations, Streamlined is a win. &lt;a href=&quot;/docs/template-engines/erb-and-beyond#streamlined&quot;&gt;Read the new documentation here.&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;foundation-gem&quot;&gt;Foundation Gem&lt;/h3&gt;

&lt;p&gt;In Bridgetown 2.0, we have started an ongoing process of reducing our reliance on the Active Support gem (in the hopes we can eventually remove it as a dependency). The &lt;strong&gt;Foundation gem&lt;/strong&gt; marks our effort in this department, and not only that but we’ll be increasingly migrating other useful utility-like Ruby features there from internal Bridgetown APIs so that they’re more decoupled and easily accessible to non-Bridgetown Ruby applications. &lt;a href=&quot;/docs/plugins/foundation-gem&quot;&gt;Foundation gem docs are available here.&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;ecosystem-update-hello-codeberg&quot;&gt;Ecosystem Update (Hello Codeberg!)&lt;/h3&gt;

&lt;p&gt;We’ve had a goal in mind to embark on a &lt;strong&gt;major revamp of our Plugins directory&lt;/strong&gt; as well as offer a program to help new plugin authors get started and eventually featured in official Bridgetown marketing. While those ideas were brewing, a huge shakeup has started in the open source community. Due to Microsoft’s major “vibe shift” with how it stewards GitHub—essentially embarking on a “pivot to AI” and folding the company into its own AI &amp;amp; cloud departments, many open source developers are looking elsewhere for a true &lt;em&gt;libre&lt;/em&gt; alternative. (It’s odd when you stop and think about it that a &lt;em&gt;proprietary, closed-source platform&lt;/em&gt; would be the defacto home for open source projects!)&lt;/p&gt;

&lt;p&gt;The destination folks are heading for more and more is &lt;a href=&quot;https://codeberg.org&quot;&gt;Codeberg&lt;/a&gt;, a European organization which runs a forge built on top of the fully open source &lt;a href=&quot;https://forgejo.org&quot;&gt;Forgejo software&lt;/a&gt; (itself a fork of Gitea). Codeberg has really seemed to reach escape velocity this year, and I (Jared) have already &lt;a href=&quot;https://codeberg.org/jaredwhite/.profile/projects/22897&quot;&gt;migrated a number of projects there&lt;/a&gt;, including several low-level Bridgetown dependencies.&lt;/p&gt;

&lt;p&gt;We don’t feel comfortable with the idea of relocating the &lt;strong&gt;Bridgetown monorepo&lt;/strong&gt; itself at this time, out of concern that it will be cumbersome for existing and potential contributors. But the Bridgetown core team is committed to keeping a close watch on how this movement unfolds. One of the most exiting future developments will be &lt;em&gt;federation&lt;/em&gt;, the idea that multiple forges run by individuals and organizations alike could all communicate with each other, sharing issues and PRs as if it were all a single platform (just like Mastodon instances!). We believe this will be a seismic event in the evolution of code forges and signal the beginning of the end of GitHub’s dominance in the open source community. As they say, &lt;em&gt;stay tuned&lt;/em&gt;.&lt;/p&gt;

&lt;h3 id=&quot;et-cetera-and-so-forth&quot;&gt;Et Cetera and So Forth&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/bridgetownrb/bridgetown/releases/tag/v2.0.0&quot;&gt;There’s much more in the release notes&lt;/a&gt; showing a large number of bug fixes and refactors for performance and DX, and while software is of course never “done”, we are &lt;strong&gt;extremely proud&lt;/strong&gt; of the Bridgetown 2.0 release and consider its full feature set to be the culmination of several years of effort. It’s likely we’ll continue to chip away at the margins of smaller fixes and enhancements for a long while yet in the v2 era, but the bottom line is that &lt;strong&gt;Bridgetown is a mature and stable foundation&lt;/strong&gt; on which to build the next generation of static sites and modest web applications, always with HTML-first and “vanilla web” principles in mind.&lt;/p&gt;

&lt;p&gt;If you run into any issues trying out Bridgetown 2.0, &lt;a href=&quot;/community&quot;&gt;please hop into our community channels&lt;/a&gt; and let us know how we can help. We welcome your feedback and ideas! In addition, you can &lt;a href=&quot;https://bsky.app/profile/bridgetownrb.com&quot;&gt;follow us now on Bluesky&lt;/a&gt; as well as &lt;a href=&quot;https://ruby.social/@bridgetown&quot;&gt;in the fediverse&lt;/a&gt; to stay current on the latest news.&lt;/p&gt;</content><author><name>Jared White</name></author><category term="release" /><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.bridgetownrb.com/images/river-city-postcard-bridgetown.jpg" /><media:content medium="image" url="https://www.bridgetownrb.com/images/river-city-postcard-bridgetown.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Bridgetown, the Hybrid Ruby Web Framework, Turns Five Today</title><link href="https://www.bridgetownrb.com/news/bridgetown-turns-five-today/" rel="alternate" type="text/html" title="Bridgetown, the Hybrid Ruby Web Framework, Turns Five Today" /><published>2025-04-02T16:18:11-07:00</published><updated>2025-04-02T16:18:11-07:00</updated><id>repo://posts.collection/_posts/2025/2025-04-02-bridgetown-turns-five-today.md</id><content type="html" xml:base="https://www.bridgetownrb.com/news/bridgetown-turns-five-today/">&lt;p&gt;&lt;strong&gt;Happy Birthday Bridgetown!&lt;/strong&gt; Five years ago today, a project was born to create &lt;em&gt;a new kind&lt;/em&gt; of web framework—certainly one unlike any previously seen in the Ruby community. (More on that in a moment.) I will confess, I’m as astonished as anyone we’re still going strong five years later!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.bridgetownrb.com/news/happy-birthday-bridgetown/&quot;&gt;This time last year I reminisced quite a bit&lt;/a&gt; and also looked forward to &lt;strong&gt;all-systems-go&lt;/strong&gt; development of Bridgetown 2.0, and today we are preparing what might be the last beta of the 2.0 cycle before its final release.&lt;/p&gt;

&lt;p&gt;But beyond a fist pump in the air and a dash of nostalgia, I’d like to reflect on the astonishing truth that Bridgetown is, well, still the only game in (our) town. I included in the title of this post “the Hybrid Ruby Web Framework” because that’s our not-so-secret sauce that for some reason continues to escape notice for a lot of people.&lt;/p&gt;

&lt;p&gt;Bridgetown isn’t &lt;em&gt;just&lt;/em&gt; a static site generator. Bridgetown isn’t &lt;em&gt;just&lt;/em&gt; a dynamic application server. &lt;strong&gt;It’s both.&lt;/strong&gt; And as time passes, the lines between those two worlds—pre-built and built-on-demand—will blur, and we’ll continue to press forward on solutions which allow your static pages to refresh portions of the page on-demand with live content. We’re super-thrilled with the amount of progress we’ve made on polishing our server architecture, as well as some companion projects simmering on the back burner to make interactive feature development feel unlike anything you’ve experienced in Ruby.&lt;/p&gt;

&lt;p&gt;At the same time, we see Bridgetown as playing a significant role in elevating the exposure of Ruby web frameworks in general past a certain &lt;em&gt;train-themed&lt;/em&gt; option some people think is the &lt;em&gt;only&lt;/em&gt; Ruby framework available. There’s a lot of educational work to be done to show that &lt;strong&gt;Ruby has range&lt;/strong&gt; and we can forge new paths. Along those lines, we want to show how Bridgetown can be used alongside other frameworks, most notably &lt;a href=&quot;https://hanamirb.org&quot;&gt;Hanami&lt;/a&gt;. While Bridgetown is itself a complete framework, there’s no reason you couldn’t use Hanami for your application server code and Bridgetown for a static portion such as a company blog. Could those live side-by-side in the same repo, perhaps even sharing some common assets? &lt;strong&gt;Stay tuned.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Anyway, back to work on getting v2.0 out the door. Once again, thank you to all who support this project and contribute to make it better. &lt;em&gt;Excelsior!&lt;/em&gt;&lt;/p&gt;</content><author><name>Jared White</name></author><category term="news" /><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.bridgetownrb.com/images/river-city-postcard-bridgetown.jpg" /><media:content medium="image" url="https://www.bridgetownrb.com/images/river-city-postcard-bridgetown.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Countdown to Production! Bridgetown 2.0 Beta 4 is Here</title><link href="https://www.bridgetownrb.com/release/countdown-to-production-release/" rel="alternate" type="text/html" title="Countdown to Production! Bridgetown 2.0 Beta 4 is Here" /><published>2025-01-16T00:00:00-08:00</published><updated>2025-01-16T00:00:00-08:00</updated><id>repo://posts.collection/_posts/2025/2025-01-16-countdown-to-production-release.md</id><content type="html" xml:base="https://www.bridgetownrb.com/release/countdown-to-production-release/">&lt;p&gt;The &lt;strong&gt;Bridgetown progressive web framework&lt;/strong&gt; is racing to the 2.0 finish line. While we don’t have a specific process for offering “release candidates”, we consider this Beta 4 release to be essentially an RC. Feature development is now frozen, and the only additional updates we anticipate will be major bug fixes only.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/bridgetownrb/bridgetown/releases/tag/v2.0.0.beta4&quot;&gt;Read the release notes&lt;/a&gt;, &lt;a href=&quot;https://edge.bridgetownrb.com&quot;&gt;review our “edge” documentation&lt;/a&gt;, and &lt;a href=&quot;https://edge.bridgetownrb.com/docs/installation/upgrade&quot;&gt;take a look at our 2.0 upgrade guide&lt;/a&gt; if you’re coming from Bridgetown 1.x. If you’re new to the Bridgetown 2.0 release cycle, &lt;a href=&quot;https://edge.bridgetownrb.com/blog/future&quot;&gt;read our Road to Bridgetown 2.0 series&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some of the goodies in Beta 4:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;We continue to make progress in improving full build performance. While our &lt;strong&gt;Fast Refresh&lt;/strong&gt; feature makes development an order of magnitude faster in most cases, we also want our complete build cycles to go more quickly.&lt;/li&gt;
  &lt;li&gt;In previous releases, our primary goal was to ensure Bridgetown could “scale up” to large, ambitious application architectures. Now we’re also looking at opportunities to “scale down”. In the latest beta, we support Bridgetown running in a folder with only a &lt;code class=&quot;highlighter-rouge&quot;&gt;Gemfile&lt;/code&gt; and some source files. That’s it. No &lt;code class=&quot;highlighter-rouge&quot;&gt;config&lt;/code&gt; folder, no &lt;code class=&quot;highlighter-rouge&quot;&gt;Rakefile&lt;/code&gt;, no &lt;code class=&quot;highlighter-rouge&quot;&gt;config.ru&lt;/code&gt;…you get the picture. And in a follow-up feature in Bridgetown 2.1, we’ll support source folders located elsewhere on the file system as well as Markdown files with no front matter present. If that makes you think &lt;em&gt;wiki!&lt;/em&gt;, well, you’re exactly right. ☺️&lt;/li&gt;
  &lt;li&gt;The first beta of Bridgetown 2.0 introduced the &lt;code class=&quot;highlighter-rouge&quot;&gt;RodaCallable&lt;/code&gt; mixin for allowing any PORO (Plain Old Ruby Object) to respond to a Roda route. Now, we’ve introduced the &lt;code class=&quot;highlighter-rouge&quot;&gt;Viewable&lt;/code&gt; mixin for allowing any Ruby view component to provide HTML rendering for a route. Daisy-chain callable &amp;amp; viewable objects and you essentially have the “View-Controller” part of &lt;strong&gt;MVC&lt;/strong&gt; solved. We believe this will unlock opportunities to build ever larger and more robust web applications with Bridgetown.&lt;/li&gt;
  &lt;li&gt;We’ve introduced an entirely new Bundled Configuration to add &lt;code class=&quot;highlighter-rouge&quot;&gt;minitest&lt;/code&gt; to your projects, and the tests will be equally adept at validating the output of statically-generated content as well as server-side routes. Yes that’s right: use the exact same testing infrastructure to test static and dynamic endpoints equally—complete with an elegant DSL for making requests and parsing either HTML or JSON.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’re also plugging away at new documentation around all of these features and more besides, and going forward the bulk of our efforts to get a final 2.0 release out the door will be the docs.&lt;/p&gt;

&lt;p&gt;As always, if you run into any issues trying out Bridgetown 2.0 beta, &lt;a href=&quot;/community&quot;&gt;please hop into our community channels&lt;/a&gt; and let us know how we can help. We welcome your feedback and ideas! In addition, you can &lt;a href=&quot;https://bsky.app/profile/bridgetownrb.com&quot;&gt;follow us on Bluesky&lt;/a&gt; as well as &lt;a href=&quot;https://ruby.social/@bridgetown&quot;&gt;in the fediverse&lt;/a&gt; to stay current on the latest news.&lt;/p&gt;</content><author><name>Jared White</name></author><category term="release" /><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.bridgetownrb.com/images/river-city-postcard-bridgetown.jpg" /><media:content medium="image" url="https://www.bridgetownrb.com/images/river-city-postcard-bridgetown.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Bridgetown 2024: Year in Review</title><link href="https://www.bridgetownrb.com/news/2024-year-in-review/" rel="alternate" type="text/html" title="Bridgetown 2024: Year in Review" /><published>2024-12-30T00:00:00-08:00</published><updated>2024-12-30T00:00:00-08:00</updated><id>repo://posts.collection/_posts/2024/2024-12-30-2024-year-in-review.md</id><content type="html" xml:base="https://www.bridgetownrb.com/news/2024-year-in-review/">&lt;p&gt;This year has been a pivotal one for the &lt;strong&gt;Bridgetown web framework&lt;/strong&gt;. We started off 2024 on some conceptual shaky ground, uncertain about the direction Bridgetown should head in next, but over the spring and summer we really hit our stride and are finishing out the year in a strong position.&lt;/p&gt;

&lt;p&gt;Another meaty beta release of Bridgetown 2.0 is just around the corner, and we expect the final Bridgetown v2 production release to land in early Q1 2025—unlocking a new wave of innovation in the Ruby-powered web development space.&lt;/p&gt;

&lt;p&gt;Our message for 2025 is a simple one: Bridgetown is ready to be &lt;strong&gt;your #1 go-to framework&lt;/strong&gt; for ambitious small-to-midsize web applications. We’re not just for blogs. We’re not just for marketing pages. We’re for powerful, database-driven, interactive software across a variety of industries and use cases. We’re flipping the script: instead of asking “why Bridgetown?” you’ll be asking “why not?”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some stats for Bridgetown in 2024:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;6 releases, 3 in the 2.0 beta line&lt;/li&gt;
  &lt;li&gt;15 contributors across all the releases&lt;/li&gt;
  &lt;li&gt;Grew by roughly 200 stars on &lt;a href=&quot;https://github.com/bridgetownrb/bridgetown&quot;&gt;GitHub&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;574 members in &lt;a href=&quot;https://discord.gg/4E6hktQGz4&quot;&gt;Discord&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;409 followers on &lt;a href=&quot;https://ruby.social/@bridgetown&quot;&gt;Mastodon&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;And now we’re on &lt;a href=&quot;https://bsky.app/profile/bridgetownrb.com&quot;&gt;Bluesky&lt;/a&gt; too!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’ll have a slew of exciting announcements to make about the broader Bridgetown ecosystem in 2025 as v2 heads out the door, so be sure to subscribe and join in all the right places. If you’ve been thinking to yourself “somebody really needs to shake up the Ruby landscape with a fresh vision for how web applications are architected and deployed—and how to strengthen the open source community with safety and inclusiveness” — don’t worry, we’ve got some good stuff cooking.&lt;/p&gt;

&lt;p&gt;In the meantime, we thank you for your continued interest and support of the Bridgetown project and want to wish you a very &lt;strong&gt;Happy New Year&lt;/strong&gt;! &lt;em&gt;Go Ruby!&lt;/em&gt;&lt;/p&gt;</content><author><name>Jared White</name></author><category term="news" /><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.bridgetownrb.com/images/river-city-postcard-bridgetown.jpg" /><media:content medium="image" url="https://www.bridgetownrb.com/images/river-city-postcard-bridgetown.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Performance Boost with Bridgetown 2.0 Beta 3</title><link href="https://www.bridgetownrb.com/release/bridgetown-2.0-beta-3-with-better-performance/" rel="alternate" type="text/html" title="Performance Boost with Bridgetown 2.0 Beta 3" /><published>2024-11-18T00:00:00-08:00</published><updated>2024-11-18T00:00:00-08:00</updated><id>repo://posts.collection/_posts/2024/2024-11-18-bridgetown-2.0-beta-3-with-better-performance.md</id><content type="html" xml:base="https://www.bridgetownrb.com/release/bridgetown-2.0-beta-3-with-better-performance/">&lt;p&gt;The third beta of Bridgetown 2.0 is here! &lt;a href=&quot;https://github.com/bridgetownrb/bridgetown/releases/tag/v2.0.0.beta3&quot;&gt;Read the release notes&lt;/a&gt;, &lt;a href=&quot;https://edge.bridgetownrb.com&quot;&gt;review our “edge” documentation&lt;/a&gt;, and you will likely want to &lt;a href=&quot;https://edge.bridgetownrb.com/docs/installation/upgrade&quot;&gt;take a look at our 2.0 upgrade guide&lt;/a&gt; if you’re coming from Bridgetown 1.x. If you’re new to the Bridgetown 2.0 release cycle, &lt;a href=&quot;https://edge.bridgetownrb.com/blog/future&quot;&gt;read our Road to Bridgetown 2.0 series&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some of the goodies in Beta 3:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It’s not often we’re able to see a major performance gain with a single fix. Thankfully, &lt;a href=&quot;https://github.com/bridgetownrb/bridgetown/pull/915&quot;&gt;with this PR in place&lt;/a&gt;, we’ve seen full build performance gains of 15-25%…possibly even higher. Huge thanks to Maxime Lapointe for the awesome detective work.&lt;/p&gt;

&lt;p&gt;A bug resulting in Liquid templates not working as expected with the new fast refresh feature has been resolved.&lt;/p&gt;

&lt;p&gt;Sites using multiple locales (aka i18n) are now better supported by fast refresh. If you encounter any additional issues seeing updated content after making changes to your content files, please file an issue and let us know.&lt;/p&gt;

&lt;p&gt;You can now switch to ESModules (ESM) and away from CommonJS for your projects! Run &lt;code class=&quot;highlighter-rouge&quot;&gt;bin/bridgetown esbuild update&lt;/code&gt; to install the latest frontend configuration. You may need to edit some of your JS files manually in order to remove outdated &lt;code class=&quot;highlighter-rouge&quot;&gt;require&lt;/code&gt; statements and use &lt;code class=&quot;highlighter-rouge&quot;&gt;import&lt;/code&gt; instead.&lt;/p&gt;

&lt;p&gt;Finally, we’ve been doing a lot of behind-the-scenes work to improve API-level documentation as well as guide-level documentation. For example, you can read up on &lt;a href=&quot;https://edge.bridgetownrb.com/docs/template-engines/erb-and-beyond#streamlined&quot;&gt;our new all-Ruby syntax for HTML templates: Streamlined&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As always, if you run into any issues trying out Bridgetown 2.0 beta, &lt;a href=&quot;/community&quot;&gt;please hop into our community channels&lt;/a&gt; and let us know how we can help. We welcome your feedback and ideas! In addition, you can &lt;a href=&quot;https://bsky.app/profile/bridgetownrb.com&quot;&gt;follow us now on Bluesky&lt;/a&gt; as well as &lt;a href=&quot;https://ruby.social/@bridgetown&quot;&gt;in the fediverse&lt;/a&gt; to stay current on the latest news.&lt;/p&gt;</content><author><name>Jared White</name></author><category term="release" /><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.bridgetownrb.com/images/river-city-postcard-bridgetown.jpg" /><media:content medium="image" url="https://www.bridgetownrb.com/images/river-city-postcard-bridgetown.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">It’s Finally Here! Bridgetown 2.0 Beta 1</title><link href="https://www.bridgetownrb.com/release/its-here-bridgetown-2.0-beta-1/" rel="alternate" type="text/html" title="It’s Finally Here! Bridgetown 2.0 Beta 1" /><published>2024-08-02T00:00:00-07:00</published><updated>2024-08-02T00:00:00-07:00</updated><id>repo://posts.collection/_posts/2024/2024-08-02-its-here-bridgetown-2.0-beta-1.md</id><content type="html" xml:base="https://www.bridgetownrb.com/release/its-here-bridgetown-2.0-beta-1/">&lt;p&gt;I’m pleased to announce the first beta release of &lt;strong&gt;Bridgetown 2.0&lt;/strong&gt;, the premier static site generator 🤝 full-stack web framework &lt;strong&gt;powered by Ruby&lt;/strong&gt;. Many thanks to everyone who contributed! And if you’re wondering &lt;em&gt;hey, where’s the new code name?&lt;/em&gt; …that is forthcoming. We’re going to have a little fun playing with the branding on this one, so stay tuned. 😎&lt;/p&gt;

&lt;p&gt;In the meantime, Bridgetown 2.0 is really all about two major initiatives: removing many deprecations from the 1.x line all while tightening up internals and providing a high quality &amp;amp; stable API, and raising baselines with improved defaults to enable a clear vision for the next several years of Bridgetown development.&lt;/p&gt;

&lt;p&gt;We’ve written about many of these initiatives previously on the blog—see these posts for reference:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/future/road-to-bridgetown-2.0-escaping-burnout/&quot;&gt;Part 1 (Stuck in Burnout Marsh)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/future/road-to-bridgetown-2.0-new-baselines/&quot;&gt;Part 2 (New Baselines)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/news/happy-birthday-bridgetown/&quot;&gt;Happy 4th Birthday, Bridgetown!&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/future/road-to-bridgetown-2.0-fast-refresh/&quot;&gt;Part 3 (Fast Refresh)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What follows is a simplified list of updates as noted in our &lt;a href=&quot;https://github.com/bridgetownrb/bridgetown/blob/main/CHANGELOG.md&quot;&gt;changelog&lt;/a&gt;. (You can also &lt;a href=&quot;https://github.com/bridgetownrb/bridgetown/compare/1-3-stable...main&quot;&gt;browse a 1.3…2.0 diff&lt;/a&gt; if you’re &lt;em&gt;really&lt;/em&gt; curious what’s going on.)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://edge.bridgetownrb.com&quot;&gt;Our “edge” documentation is available here&lt;/a&gt;, and you will likely want to &lt;a href=&quot;https://edge.bridgetownrb.com/docs/installation/upgrade&quot;&gt;take a look at our 2.0 upgrade guide&lt;/a&gt; if you’re an existing user of Bridgetown. For example, there are new minimum versions of both Ruby and Node for the v2 release cycle.&lt;/p&gt;

&lt;p&gt;(Note that some of the new features/enhancements would benefit from detailed documentation which is still underway. We’ll have things more fleshed out by the final 2.0 release.)&lt;/p&gt;

&lt;h3 id=&quot;whats-been-added&quot;&gt;What’s Been Added&lt;/h3&gt;

&lt;p&gt;We’ve made it possible for &lt;strong&gt;Roda routes&lt;/strong&gt; to &lt;a href=&quot;https://edge.bridgetownrb.com/docs/routes#callable-objects-for-rendering-within-blocks&quot;&gt;render “callable” objects&lt;/a&gt; (docs) in a very straightforward manner. In MVP parlance, you can now designate your own “controller” objects to handle any requests, or utilize “view” objects to provide particular kinds of output (and out of the box, resources themselves can be returned directly as responses).&lt;/p&gt;

&lt;p&gt;Plus, we’ve &lt;strong&gt;simplified front matter data access&lt;/strong&gt; using new syntax across the system (in Ruby-based templates you can omit &lt;code class=&quot;highlighter-rouge&quot;&gt;data.&lt;/code&gt; in many cases, e.g. &lt;code class=&quot;highlighter-rouge&quot;&gt;title&lt;/code&gt; instead of &lt;code class=&quot;highlighter-rouge&quot;&gt;data.title&lt;/code&gt;), and for Roda rendering in particular it’s now &lt;em&gt;much&lt;/em&gt; cleaner to &lt;a href=&quot;https://edge.bridgetownrb.com/docs/routes#file-based-dynamic-routes&quot;&gt;pass data along to templates&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Live reloading in development is &lt;strong&gt;dramatically faster&lt;/strong&gt; on average now with the Fast Refresh feature (see the referenced post above for more on how that works).&lt;/p&gt;

&lt;p&gt;There’s now a go-to inflector to handle various &lt;strong&gt;string conversions&lt;/strong&gt; (aka &lt;code class=&quot;highlighter-rouge&quot;&gt;folder_name/file_path.rb&lt;/code&gt; → &lt;code class=&quot;highlighter-rouge&quot;&gt;FolderName::RubyFilePath&lt;/code&gt;) &lt;a href=&quot;https://edge.bridgetownrb.com/docs/configuration/initializers#inflector&quot;&gt;using dry-inflector&lt;/a&gt; (docs).&lt;/p&gt;

&lt;p&gt;We’ve added support for new &lt;a href=&quot;https://serbea.dev&quot;&gt;Serbea 2.0&lt;/a&gt; template features, including the &lt;code class=&quot;highlighter-rouge&quot;&gt;pipe&lt;/code&gt; helper which can be used even in ERB templates. And in addition, we now have a &lt;strong&gt;pure Ruby template syntax via Streamlined&lt;/strong&gt;. Documentation is forthcoming, but &lt;a href=&quot;https://codeberg.org/jaredwhite/streamlined/src/commit/7aed52d4fe60f5315d228075a06b80a3fbc6d816/test/test_streamlined.rb#L32&quot;&gt;you can take a peak at what authoring HTML using Streamlined looks like&lt;/a&gt;. This is Bridgetown’s official answer to techniques like &lt;code class=&quot;highlighter-rouge&quot;&gt;content_tag&lt;/code&gt; in Rails or gems like Phlex, and it takes a great deal of inspiration from JavaScript’s tagged template literals.&lt;/p&gt;

&lt;h3 id=&quot;whats-changed&quot;&gt;What’s Changed&lt;/h3&gt;

&lt;p&gt;Bridgetown now &lt;strong&gt;defaults to using ERB&lt;/strong&gt; in new site projects, rather than the previous default of Liquid. You can choose Liquid (or any supported template engine) when you create a new site, but without specifying a particular option Bridgetown will assume ERB.&lt;/p&gt;

&lt;p&gt;The config &lt;strong&gt;YAML file is now optional&lt;/strong&gt;—in fact, in new Bridgetown projects only the &lt;code class=&quot;highlighter-rouge&quot;&gt;config/initializers.rb&lt;/code&gt; file is generated as the primary form of configuration. In addition, previous support for &lt;code class=&quot;highlighter-rouge&quot;&gt;.toml&lt;/code&gt; files has been removed. We’ll be upgrading our documentation to point out these new defaults.&lt;/p&gt;

&lt;p&gt;We’ve significantly refactored the &lt;a href=&quot;https://edge.bridgetownrb.com/docs/routes#file-based-dynamic-routes&quot;&gt;file-based routes plugin&lt;/a&gt; under the hood for more robust behavior and continuing improvements over time to support &lt;strong&gt;advanced full-stack applications&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As promised, an initial batch of first-party framework code (i.e., &lt;a href=&quot;https://github.com/bridgetownrb/bridgetown/tree/main/bridgetown-foundation&quot;&gt;bridgetown-foundation&lt;/a&gt;) to &lt;strong&gt;replace Active Support-based dependencies&lt;/strong&gt; has landed. And we’re making use of the new &lt;a href=&quot;https://codeberg.org/jaredwhite/inclusive&quot;&gt;Inclusive gem&lt;/a&gt; to package and import utility code.&lt;/p&gt;

&lt;p&gt;Our &lt;code class=&quot;highlighter-rouge&quot;&gt;start&lt;/code&gt; command now uses Rackup (and &lt;a href=&quot;https://github.com/rack/rack&quot;&gt;Rack 3&lt;/a&gt;) instead of directly interfacing with Puma. This &lt;strong&gt;paves the way for future developments&lt;/strong&gt; such as supporting other Rack-compatible application servers in addition to Puma.&lt;/p&gt;

&lt;p&gt;The way we handle front matter has been extracted into &lt;strong&gt;standalone loaders&lt;/strong&gt;. This will make it easier to maintain our front matter loaders over time as well as offer the possibility of supporting new front matter formats in the future.&lt;/p&gt;

&lt;h3 id=&quot;whats-been-removed&quot;&gt;What’s Been Removed&lt;/h3&gt;

&lt;p&gt;We’ve removed legacy code dealing with permalinks, along with a variety of other previously-deprecated code paths. We’ve also &lt;strong&gt;removed Cucumber&lt;/strong&gt;, rewriting our integrated feature tests to consolidate around Minitest exclusively. And our Webpack integration is at last done away with, in lieu of a complete focus on esbuild. &lt;strong&gt;End of an era!&lt;/strong&gt;&lt;/p&gt;

&lt;h3 id=&quot;whats-next&quot;&gt;What’s Next&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Bridgetown 2.0 is generally “feature complete” at this point&lt;/strong&gt;, although one or two small enhancements waiting in the wings might sneak in before the final release. In general however, we’re focusing on fixing bugs and tightening up reliability over the next few weeks as we transition from beta status to production.&lt;/p&gt;

&lt;p&gt;Beyond that, the team is working on additional ecosystem functionality with gems such as &lt;strong&gt;Lifeform&lt;/strong&gt; (form rendering) and &lt;strong&gt;Authtown&lt;/strong&gt; (accounts and logins) which can be used on Bridgetown projects. Our &lt;a href=&quot;https://github.com/bridgetownrb/bridgetown_sequel&quot;&gt;Sequel gem&lt;/a&gt; for database access is already out the door. And for server-side rendering of web components in Ruby with a companion library offering client-side interactivity…well, that too is forthcoming. 😁&lt;/p&gt;

&lt;p&gt;As always, if you run into any issues trying out Bridgetown 2.0 beta, &lt;a href=&quot;/community&quot;&gt;please hop into our community channels&lt;/a&gt; and let us know how we can help. And if you’re new to Ruby, we’re happy to recommend other resources and communities which can give you a leg up. We try our best to follow the Ruby language motto: &lt;strong&gt;MINASWAN&lt;/strong&gt;. (Matz Is Nice And So We Are Nice…Matz being &lt;a href=&quot;https://en.wikipedia.org/wiki/Yukihiro_Matsumoto&quot;&gt;Yukihiro Matsumoto&lt;/a&gt;, the creator of Ruby.)&lt;/p&gt;</content><author><name>Jared White</name></author><category term="release" /><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.bridgetownrb.com/images/river-city-postcard-bridgetown.jpg" /><media:content medium="image" url="https://www.bridgetownrb.com/images/river-city-postcard-bridgetown.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>