AlchemyCMS 8.0 Released
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.
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_ingredientsassociation 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!