<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/alchemy-8-4-released-fteqvu08n" -->

---
title: Alchemy 8.4 released | daily.dev
description: Alchemy 8.4 removes jQuery, rails-ujs and Select2 from the admin interface, continuing a long rebuild on web components, ES modules and Turbo. Select2 is...
canonical: https://daily.dev/posts/alchemy-8-4-released-fteqvu08n
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Alchemy 8.4 released | daily.dev
og:description: Alchemy 8.4 removes jQuery, rails-ujs and Select2 from the admin interface, continuing a long rebuild on web components, ES modules and Turbo. Select2 is...
og:url: https://daily.dev/posts/alchemy-8-4-released-fteqvu08n
og:image: https://api.daily.dev/og/posts/FTEqVU08N.png
og:image:alt: Alchemy 8.4 released
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Alchemy 8.4 released

**[Ruby Flow](https://daily.dev/sources/rubyflow)** · 7 min read · 0 upvotes · 0 comments

## Summary

Alchemy 8.4 removes jQuery, rails-ujs and Select2 from the admin interface, continuing a long rebuild on web components, ES modules and Turbo. Select2 is replaced by Tom Select, and the remaining remote forms and links use Turbo. The release adds a broad security hardening pass, including an opt-in Content Security Policy for the admin, an upload file type allowlist, and escaping for CSV exports and preview text. Caching gets finer control, with per-element and per-page-layout cache-control headers and a cached XML sitemap. TinyMCE is updated to 8.9 and PostgreSQL 18 joins the test matrix.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.alchemy-cms.com/news/alchemy-8-4-released>

## Questions this post answers

### How do I migrate off Select2 after upgrading Alchemy CMS to 8.4?

Alchemy CMS 8.4 replaces Select2 with Tom Select for the element select, color select, tags autocomplete and remote select. The RemoteSelect API stayed the same, so custom code built on it still works but should now build against tom-select instead of Select2, since Select2 is no longer loaded in the admin.

_Teams planning the Alchemy CMS upgrade can track breaking changes like this one on daily.dev._

### Does Alchemy CMS 8.4 still load jQuery in the admin interface?

No, jQuery is completely removed from the Alchemy CMS 8.4 admin frontend, along with rails-ujs and Select2. Any custom admin JavaScript relying on the global '$' function, jQuery, Select2, or '@rails/ujs' features like data-remote or data-method links must be migrated to plain JavaScript, web components and Turbo before upgrading.

_Developers auditing dependency removals before a major CMS upgrade can follow release changes like this on daily.dev._

### How can I set different cache-control headers per element in Alchemy CMS?

Alchemy CMS 8.4 lets you set cache-control headers directly on an element definition, and if an element of that type is used on a page, it controls that page's cache-control headers. This means elements that must stay dynamic no longer force you to disable caching for the entire page. Page definitions also now accept a hash of cache-control headers, and opting out uses no-store.

_Developers tuning per-page caching strategies can keep up with CMS release details on daily.dev._

## Similar posts on daily.dev

- [Alchemy 8.3 released](https://daily.dev/posts/alchemy-8-3-released-zelf63kou) · Ruby Flow · 5 upvotes · 0 comments
- [Forgejo v14.0 is available](https://daily.dev/posts/forgejo-v14-0-is-available-omkskmjmw) · Lobsters · 1 upvotes · 0 comments
- [Ruby Weekly Issue 779: December 11, 2025](https://daily.dev/posts/ruby-weekly-issue-779-december-11-2025-epempsdkp) · Ruby Weekly · 2 upvotes · 0 comments

---

Tags: [#security](https://daily.dev/tags/security), [#rails](https://daily.dev/tags/rails), [#web-components](https://daily.dev/tags/web-components)

[View this post on daily.dev](https://daily.dev/posts/alchemy-8-4-released-fteqvu08n)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Alchemy 8.4 released","url":"https://daily.dev/posts/alchemy-8-4-released-fteqvu08n","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/alchemy-8-4-released-fteqvu08n"},"datePublished":"2026-10-28T04:51:20.909Z","dateModified":"2026-10-28T05:45:44.732Z","description":"Alchemy 8.4 removes jQuery, rails-ujs and Select2 from the admin interface, continuing a long rebuild on web components, ES modules and Turbo. Select2 is...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/6d87fe454160e7a713c578d5ac5641a7?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/6d87fe454160e7a713c578d5ac5641a7?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Ruby Flow","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Ruby Flow","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/a21aaa8bcbbf448193a016895c90a0e1","url":"https://daily.dev/sources/rubyflow"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/alchemy-8-4-released-fteqvu08n","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"security,rails,web-components","timeRequired":"PT7M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Ruby Flow","item":"https://daily.dev/sources/rubyflow"},{"@type":"ListItem","position":3,"name":"Alchemy 8.4 released"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/alchemy-8-4-released-fteqvu08n#faq","mainEntity":[{"@type":"Question","name":"How do I migrate off Select2 after upgrading Alchemy CMS to 8.4?","acceptedAnswer":{"@type":"Answer","text":"Alchemy CMS 8.4 replaces Select2 with Tom Select for the element select, color select, tags autocomplete and remote select. The RemoteSelect API stayed the same, so custom code built on it still works but should now build against tom-select instead of Select2, since Select2 is no longer loaded in the admin. Teams planning the Alchemy CMS upgrade can track breaking changes like this one on daily.dev."}},{"@type":"Question","name":"Does Alchemy CMS 8.4 still load jQuery in the admin interface?","acceptedAnswer":{"@type":"Answer","text":"No, jQuery is completely removed from the Alchemy CMS 8.4 admin frontend, along with rails-ujs and Select2. Any custom admin JavaScript relying on the global '$' function, jQuery, Select2, or '@rails/ujs' features like data-remote or data-method links must be migrated to plain JavaScript, web components and Turbo before upgrading. Developers auditing dependency removals before a major CMS upgrade can follow release changes like this on daily.dev."}},{"@type":"Question","name":"How can I set different cache-control headers per element in Alchemy CMS?","acceptedAnswer":{"@type":"Answer","text":"Alchemy CMS 8.4 lets you set cache-control headers directly on an element definition, and if an element of that type is used on a page, it controls that page's cache-control headers. This means elements that must stay dynamic no longer force you to disable caching for the entire page. Page definitions also now accept a hash of cache-control headers, and opting out uses no-store. Developers tuning per-page caching strategies can keep up with CMS release details on daily.dev."}}]}
```

