Wheels Blog

News, tutorials, and release announcements for the Wheels CFML MVC framework.

RSS

Upgrading from Wheels 3.x

Peter Amiri

Wheels 4.0 lands with seven breaking changes and a Legacy Compatibility Adapter for teams that cannot touch every call site this quarter. This post is the honest map: what breaks, how to detect it, how to fix it, and when the adapter is the right answer instead.

Wheels 4.0: Closing the Maturity Gap

Peter Amiri

For years, the same rows showed up red in every framework comparison: no bulk ops, no polymorphic associations, no advisory locks, no middleware, no browser testing. Wheels 4.0 closes those gaps. This is a guided tour of what changed and where the framework still trails.

LuCLI and the Zero-Docker Developer Experience

Peter Amiri

Wheels 4.0 ships with a new inner-loop story: a single native binary, a sixty-second full test run, and a multi-phase migration that quietly moved the framework off Docker for day-to-day development. This post walks through how we got here, what LuCLI is, and why cross-engine matrix testing still belongs in Docker.

Multi-Tenancy Built In

Peter Amiri

Wheels 4.0 lifts multi-tenancy out of plugin territory and into the framework core. Per-request datasource switching catches every query and every job on the way to the database, and tenant-aware background jobs come along for the ride.

Background Jobs Without Redis

Peter Amiri

Wheels 4.0 ships a production-ready job queue that needs only your database. You get a persistent CLI worker, live monitoring, configurable backoff, and tenant-aware enqueueing without any extra services. Redis still wins for very high throughput and pub/sub fan-out — this post names where the DB-backed queue is the right call and where it is not.

Testing in Wheels 4.0

Peter Amiri

Wheels 4.0 completes the test pyramid: BDD unit tests, a fluent HTTP TestClient for integration, and Playwright-powered browser automation for end-to-end — all running in parallel. The category that was most embarrassing in 3.0 is the most complete in 4.0.

Security Hardening in Wheels 4.0

Peter Amiri

Wheels 4.0 shipped more than forty security-hardening pull requests across eight categories — SQL, path handling, session integrity, CORS, rate limiting, auth and dev surfaces, CLI and MCP, and view helpers. The common thread is a shift in posture: the framework's defaults are now safe first, convenient second.

Porting Kamal to CFML: How wheels deploy Ships 4.0 Apps Without Ruby

Peter Amiri

Wheels 4.0 ships with a new command: wheels deploy. It's a port of Basecamp's Kamal into the Wheels CLI — zero-downtime Dockerized deploys to Linux servers over plain SSH, no Ruby runtime required. This post covers what got ported, the one deliberate divergence from Kamal, and the byte-compatibility contract that lets you take over a Kamal-managed server without cleanup.

Why We Rebuilt Our CI Pipeline

Peter Amiri

Why We Rebuilt Our CI Pipeline From 40 Minutes to 82 Seconds April 9, 2026 — Peter Amiri, Wheels Core Team --- For years, the Wheels CI pipeline ran every commit through a gauntlet: five CFML engin...

Wheels CLI Asset Commands: precompile, clean & clobber

Zain Ul Abideen

Introduction So far in this series, we’ve explored how the Wheels CLI in 3.x helps you manage your application’s environments, databases, plugins, and testing workflows. Now we’re discussing anothe...

Newsletter

Release notes and new posts, once a month. No spam.

Prefer RSS? Subscribe to the feed →