Apr 09, 2026
Thomas von Deyen

Element scheduling UI, timezone select, ActiveStorage by default, and a faster admin

We're happy to announce the release of AlchemyCMS 8.2! This release delivers content scheduling improvements, makes ActiveStorage the default file adapter for new apps, and ships several performance wins in the admin.

Content Scheduling Gets a Full Upgrade

Building on the scheduling foundation laid in 8.1, editors can now schedule elements for publication directly from the admin using the new Schedule Element button. Pick a public_on and public_until time, and Alchemy handles the rest.

The publication datetime fields now use native datetime-local inputs for a more consistent editing experience across browsers. And with the new Preview Time Select, editors can preview how the page will appear at any of the calculated publication times โ€” based on the public_on and public_until dates set on scheduled elements โ€” before anything goes live.

To ensure scheduled content is served correctly, a new Page ETag Generator has been added. ETags are calculated based on element publication status and their scheduled times, so downstream caches and browsers invalidate at exactly the right moment when content goes live or expires.

Timezone Select in the Admin

Editors can now set their preferred timezone directly in the admin. The selection is integrated into the user preferences and persisted in the session, so scheduled publication times are always displayed and entered in the user's local timezone rather than the server timezone.

ActiveStorage is Now the Default Adapter

New Alchemy applications will now use ActiveStorage as the default file attachment adapter, replacing Dragonfly as the out-of-the-box choice.

Existing apps using Dragonfly are unaffected โ€” it remains fully supported. When deploying with Dragonfly and a remote file system, you can continue using the alchemy-dragonfly-s3 extension as before.

For new apps on ActiveStorage, configure remote storage via the standard config/storage.yml approach. See the deployment guide for full setup instructions.

SelectEditor: allow_clear and required

The SelectEditor now supports two new settings:

# elements.yml
- name: article
  ingredients:
    - role: category
      type: Select
      settings:
        allow_clear: true
        required: true
        select_values:
          - Technology
          - Business

allow_clear renders a clear button on the select, and required wires up HTML5 validation. Thanks to @dbwinger for the contribution. ๐Ÿ™

Performance Improvements

The alchemy_admin JavaScript is now bundled into a single pre-built artifact, reducing the number of requests and overall load time in the admin. Element window loading has also been significantly improved.

Breaking Changes

RelatableResource association rename โ€” The related_elements and related_pages associations have been renamed. If your application uses RelatableResource, update any references before upgrading:

# Before
resource.relatable_elements
resource.relatable_pages

# After
resource.related_elements
resource.related_pages

See #3710 for full details.

Bug Fixes

  • Fixed sitemap generating wrong URLs for language root pages.
  • Fixed sitemap.xml not outputting absolute URLs in <loc> tags.
  • Fixed page deletion in the page tree.

Upgrading

# Gemfile
gem "alchemy_cms", "~> 8.2"
bundle update alchemy_cms
bin/rails alchemy:upgrade

Full Changelog

For a complete list of changes, see the full changelog on GitHub.

Thank You

A huge thank you to all contributors who made this release possible โ€” including first-time contributors @phylor and @halfbyte. ๐Ÿ™

As always, we welcome feedback and contributions. If you run into any issues, please open an issue on GitHub.

Happy publishing! ๐Ÿงช

Need help upgrading?

We are happy to help you and your team to keep your Alchemy and Rails app up to date.