Upgrading
Upgrading Without the CLI
The framework is a folder: vendor/wheels/. Upgrading is replacing that folder with a newer release's copy — which is exactly what wheels upgrade apply automates (it swaps vendor/wheels/ and keeps a backup). This page is the same operation by hand, plus the manual counterpart to each CLI verification step the version guides mention.
What "the new version" physically is
Section titled “What "the new version" physically is”One file: wheels-core-<version>.zip from the GitHub releases page. It contains a single wheels/ folder — the complete framework, version already stamped into wheels.json. There are no additional dependencies to fetch on any 4.x release.
Patch and minor upgrades (4.0.x → 4.0.y)
Section titled “Patch and minor upgrades (4.0.x → 4.0.y)”-
Back up the current framework. Move — don't delete —
vendor/wheels/aside (e.g.vendor/wheels-4.0.4.bak/, outside version control). If anything goes wrong, moving it back is the whole rollback. -
Extract the new core zip into
vendor/so it becomesvendor/wheels/again. Extract fresh rather than overwriting in place — releases delete files as well as add them, and copy-over-the-top leaves stale orphans behind. -
Read the release notes for the versions you're crossing (Reading the Changelog). Patch releases avoid breaking changes, but deprecation warnings land continuously.
-
Reload and verify. Hit any app URL with
?reload=true&password=<your-reload-password>, then confirm the new version in the debug bar's Environment panel (development) or by outputtingapplication.$wheels.version. Run your test suite —/wheels/app/testsin development does whatwheels testdoes.
If you deploy from git and vendor/wheels/ is committed (common for deliberate-workflow teams), do the swap on a branch and let your normal review/deploy pipeline carry it out — the framework upgrades like any other code change.
The 3.x → 4.0 upgrade
Section titled “The 3.x → 4.0 upgrade”The mechanics are the same swap, but 4.0 changes framework behavior and some app-side files, so there's required reading and a few extra steps:
-
Read Upgrading from 3.x to 4.0 first. It enumerates all eleven breaking changes with remediations. Where it says
wheels reload, use?reload=true&password=…; where it sayswheels test, use/wheels/app/tests. -
Swap the framework: back up
vendor/wheels/, extractwheels-core-4.0.x.zipintovendor/. Your 3.x vendor folder likely also containswirebox/andtestbox/— Wheels 4 needs neither (DI and testing are built in). Leave them if other code uses them; delete them if they existed only for Wheels. -
Diff the app shims against the 4.0 base template. Download
wheels-base-template-4.0.x.zipand compare itspublic/Application.cfc,public/index.cfm,public/urlrewrite.xml, andconfig/files against yours — the 4.0Application.cfcadds.envloading and updated mappings. Adopt the changes while keeping your local customizations. This diff-the-template step is the one piece of the upgrade that's genuinely easier with the CLI, so it earns your attention here. -
Apply the code-level renames from the guide — the big ones are
application.wirebox→application.wheelsdi,wheels.Test→wheels.WheelsTestin spec files, andtests/specs/functions/→tests/specs/functional/. The guide's per-change sections have exact search-and-replace instructions. -
Optional soft landing: the
wheels-legacy-adapterpackage ships shims and deprecation logging for 3.x patterns. Without the CLI, install it like any package: download its release, extract intovendor/wheels-legacy-adapter/, reload — packages are auto-discovered fromvendor/*/package.json. (Note the adapter does not cover theapplication.wireboxrename — that one is always manual.) -
Reload, run your suite, and read the log. Deprecation warnings (
paginationLinks(), legacy plugins) land inwheels.log— they're your roadmap for cleanup before 5.0.