🚀 Introducing CBWIRE v5.0, Faster, Smarter, BoxLang-Powered Reactive Development
We are thrilled to announce the release of CBWIRE v5.0, the most powerful, stable, and developer-friendly version of CBWIRE ever shipped.
This major upgrade introduces deep BoxLang support, upgraded Livewire v3.6.4 features, enhanced security, improved error handling, performance gains, and long-requested developer experience improvements across the board.
Whether you're building full applications, dashboards, or reactive components inside ColdBox, CBWIRE v5.0 gives you more power with less friction.
🌟 What’s New in CBWIRE 5.0
⚡ Upgraded to Livewire v3.6.4
CBWIRE now bundles Livewire v3.6.4, unlocking several new directives and front-end capabilities:
wire:current– Automatically detect and style the active navigation linkwire:cloak– Hide elements until Livewire initializeswire:show– Show/hide elements with CSS instead of DOM removalwire:text– Update text content instantly without network roundtripswire:replace– Force full re-renders for complex DOM scenarios
🔥 Full BoxLang Support
CBWIRE v5 ships with full native BoxLang support, including:
.bxcomponents (logic).bxmtemplates (markup)- Updated documentation with side-by-side BoxLang + CFML examples
- Performance improvements and modern language features
// wires/UserDashboard.bx
class extends="cbwire.models.Component" {
data = {
"users": [],
"searchTerm": ""
};
function onMount() {
data.users = getUserService().getAllUsers();
}
@computed
function filteredUsers() {
return data.users.filter(function(user) {
return !data.searchTerm.len() || user.name.findNoCase(data.searchTerm);
});
}
}
📤 Improved File Upload Error Handling
Uploads now provide graceful, component-level error handling through the new onUploadError() lifecycle hook.
function onUploadError( property, errors, multiple ) {
data.uploadFailed = true;
data.errorMessage = "Failed to upload " & ( multiple ? "files" : "file" );
}
🔗 Access the Event Object in Templates
You can now use the ColdBox event (request context) directly inside your component templates:
<a href="#event.buildLink('dashboard')#">Dashboard</a>
Background requests to /cbwire/update may not always have interceptor-provided values—store them in onMount() to ensure persistence.
🧩 Dot Notation for Nested Data
CBWIRE v5 supports deep nested structures using dot notation in both templates and code:
<input type="text" wire:model="user.name.first">
You can structure your data properties like this:
data = {
user: {
name: {
first: "Jane",
last: "Doe"
}
}
};
📄 Single-File Components
CBWIRE now supports single-file components with both template and logic in the same .bxm file using:
<bx:output>– for markup<bx:script>– for component logic (// @startWire/// @endWire)
🛡️ Flexible CSRF Protection
CBWIRE 5 introduces session-based Cross-Site Request Forgery protection, enabled out of the box.
Highlights:
- Default: Session-based storage (OWASP-recommended)
- Eliminates "Page Expired" errors
- Token generation + validation works automatically
- Option to switch to Cache storage for distributed systems
- Fully customizable storage engine support
moduleSettings = {
cbwire = {
csrfEnabled = true,
csrfStorage = "SessionCSRFStorage@cbwire"
}
};
Security is now completely built-in—no extra configuration required.
🔧 Breaking Changes You Should Know
1. Secure Upload Storage
Uploads no longer write files inside CBWIRE’s internal directory.
Files now default to the system temporary directory.
Use the new store() method for moving files permanently:
data.photo.store("/uploads/photos");
It’s faster, safer, and auto-creates directories.
2. onMount() No Longer Auto-Sets Params
If your component defines onMount(), you now must explicitly assign parameters:
function onMount( params ) {
data.title = params.title;
data.author = params.author;
}
This prevents unintended overwriting and makes parameter handling predictable.
3. Engine + ColdBox Support Updates
Added:
- BoxLang 1+
- Lucee 6.0+
- ColdBox 7+ and 8+
Removed:
- Adobe ColdFusion 2018 (EOL)
- Adobe ColdFusion 2021 (EOL)
Supported engines:
- BoxLang
- Lucee 5.3+/6.0+
- Adobe CF 2023+/2025+
🐞 Bug Fixes
CBWIRE 5 includes a wide set of stability fixes:
- Uploads now respect the correct
updateEndpointsetting - Fixed incorrect upload directory path resolution
- Fixed race conditions during temporary directory creation
- Fixed lazy-loading calling missing
onMount()functions - Custom
wiresLocationnow works correctly - Improved reliability across background requests
🎥 Watch the CBWIRE v5 Live Launch
We hosted a full Live Launch Event on YouTube, walking through the entire release, showcasing demos, and answering community questions.
In the video we cover:
- Full feature overview of CBWIRE 5
- Live coding demos
- BoxLang component examples
- Migration guidance
- What’s coming next
- Q&A with the Ortus team
📌 Watch the full replay:
https://www.youtube.com/watch?v=Hy-LkTg7XDU
🚀 CBWIRE v5.0 Is Available Now
You can start using CBWIRE v5 today with:
install cbwire@5
Or upgrade with:
update cbwire@5
Check out the full documentation and Release notes at:
https://cbwire.ortusbooks.com/releases/whats-new-with-5.0
Join the BoxLang Community
Stay connected with the latest updates, BoxLang announcements, Into the Box 2026 news, tutorials, tools, and more.
Subscribe to our newsletter for exclusive updates and early access.
Add Your Comment