Dec 10, 2025
Thomas von Deyen

Dark Theme, Active Storage, and a Modern Foundation

We're thrilled to announce the release of AlchemyCMS 8.0, a major milestone that brings significant new features, architectural improvements, and a thoroughly modernized admin interface. This release represents months of work to make Alchemy more flexible, developer-friendly, and future-proof.

Bildschirmfoto am 2025-12-22 um 19.25.35

What's New in 8.0

A Beautiful Dark Theme

The admin interface now ships with a complete dark theme. Whether you prefer working late at night or simply enjoy a darker aesthetic, Alchemy has you covered. The theming system has been rebuilt using CSS custom properties, making it easier than ever to customize the look and feel of your admin panel.

Active Storage Support

One of the most requested features is finally here: Alchemy now supports Active Storage as an alternative to Dragonfly for file storage. This means you can take advantage of Rails' built-in file handling, including direct uploads, cloud storage backends like S3 and GCS, and all the other benefits that come with Active Storage.

The Dragonfly integration hasn't disappeared; it's been refactored into an adapter. You can continue using Dragonfly if that's what works for your project, or migrate to Active Storage at your own pace.

Ruby Configuration DSL

Gone are the days of digging through hash keys and wondering what configuration options are available. Alchemy 8.0 introduces a new DSL-based configuration system with typed accessors:

Before

Alchemy::Config.get(:sitemap_show_hidden_pages)

After

Alchemy.config.sitemap_show_hidden_pages

Your editor's autocomplete now works with Alchemy's configuration, and you'll get clear errors if you misconfigure something.

Definition Models

Page layouts, element definitions, and ingredient definitions are now proper ActiveModel classes. This change provides better encapsulation, validation, and a more Ruby-like interface when working with your content definitions programmatically.

Resource Filters fully leverage Ransack

The admin resource views now fully leverage Ransack for flexible filtering. Combined with new date/time pickers and format validations, finding your custom models has never been easier.

More Highlights

For Developers

  • Propshaft support alongside Sprockets
  • ViewComponent v4 compatibility
  • JavaScript test suite migrated to Vitest
  • Bun as the JavaScript bundler
  • Modern Fetch API replaces XHR
  • New Number ingredient type for numeric values
  • Page.all_ingredients association for easier content access

For Admins

  • Custom element icons in the sidebar
  • Improved attachment management with usage indicators
  • Redesigned welcome screen and pagination
  • Background deletion for multiple pictures
  • Version update notifications

Security Improvements

  • SVG sanitization after upload
  • Filename sanitization before upload
  • Safer YAML loading for seeders

Breaking Changes

Alchemy 8.0 requires Rails 7.1+ and Ruby 3.2+.

If you're still on Rails 7.0, you'll need to upgrade before moving to Alchemy 8.0.

A few features have been removed in this release:

  • Ingredient view partials (use view components instead)
  • The frontend elements controller
  • The admin attachments download action
  • All deprecations from the 7.x series

Upgrading

The upgrade path is straightforward:

# Gemfile
gem "alchemy_cms", "~> 8.0"
bundle update alchemy_cms
rails alchemy:upgrade

After running the upgrade task, review your configuration and migrate any custom ingredient views to view components. Check the full changelog for a detailed list of all changes.

Dependency Updates

  • TinyMCE 8
  • Shoelace 2.2.0
  • SortableJS 1.15.6
  • Gutentag v3 compatibility
  • Puma 7 support

Thank You

This release wouldn't have been possible without our amazing community of contributors. Thank you to everyone who submitted pull requests, reported issues, and helped test the pre-release versions.

We're excited to see what you build with Alchemy 8.0!

Links

Release on GitHub