XF 2.4 XenForo 2.4 status and what's new under the hood?

Where are we?​

XenForo Community PSD Edit (1).webp
TL;DR: We're working hard to release XenForo 2.4 ASAP, but it's taking longer than expected due to scope changes and strategic decisions to wait for certain upstream developments that will benefit the long-term roadmap. Here's an analogy to explain why:

Software development is like planning a cross-country expedition with multiple destinations.

When you set out for version 2.4, you're not just driving to the next town over. You're charting a course through unknown territory with several strategic stops planned along the way - each representing a major milestone or feature release.

But the challenge is the landscape keeps changing along the journey.
  • New roads open up (better technologies emerge)
  • Bridges get washed out (dependencies break or become obsolete)
  • You discover scenic routes that would benefit all future travellers (opportunities for architectural improvements)
  • Weather conditions shift (market demands or user needs evolve)
  • Your vehicle needs unexpected maintenance (technical debt must be addressed)
You can't just focus on reaching the immediate next stop. You must consider how each decision affects the entire journey ahead. Taking a shortcut to reach 2.4 faster might leave you stranded when trying to reach 3.0, 4.0 or even 5.0.

This is why scope changes occur: experienced developers are constantly recalibrating the route based on new information, ensuring the expedition can successfully reach not just the next destination, but all the strategic waypoints that follow.

The delays aren't detours, rather they're course corrections that keep the long-term journey viable.

To be slightly less cryptic, these are some of the specific challenges we have faced along the way:

A new Tiptap version is coming​

When we announced that Tiptap is coming to XenForo 2.4 it was 95% complete, and we then took a bit of a pause to work on other projects, which we have talked about since and will be discussing in this thread. Since then, Tiptap have announced Tiptap V3 which is currently in beta. Given how core the editor is to the forum experience, it makes a lot of sense to ship XenForo 2.4 with Tiptap V3 rather than Tiptap V2 as originally planned. While the changes involved are not too extensive, we also don't want to ship 2.4 with a dependency that is still in beta and subject to change. While we are not planning to wait for Tiptap V3 to be stable, necessarily, we do at least want to give it a little bit more time so we have a higher degree of confidence that we're shipping a stable editing experience.

We started talking about a rewrite (again)​

While this is not currently the direction we've decided to go in, it's responsible for us to at least consider all routes available to us to help us reach our destination.

1749736697928.webp


After nearly 8 years since the release of XenForo 2.0, many of the technologies we use are showing their age, many of the decisions we made have started to slow us down more than we would like, and as a framework, XenForo becomes a less productive framework to work with. The solution to this problem can be to start from scratch, but we have ultimately decided that this is not something we need to do at this stage.

Instead, over the next few versions, including 2.4, we will be attempting to make iterative architectural changes to the framework so that we all have greater tools at our disposal to improve both the developer and user experience, particularly focusing on the implementation of developer tools and features that have become commonplace in other frameworks, such as Laravel.

Some of our best features are simply not finished​

There are one or two features that we see requested consistently from customers in our community forums and feedback channels, and we're excited to confirm they are coming in 2.4! However, it serves no one well if we release such highly-anticipated features before they are ready and before they have the usual level of quality, polish, and extensibility you would expect from a XenForo release. We'd rather take the extra time to get them right than rush them out and disappoint users with a subpar implementation that requires immediate patches or lacks the flexibility for customisation. We'll be sharing exciting details about what these features are and how they work in the coming weeks, so stay tuned!

We can't keep up!​

I just counted and there are about 15 features that have been merged or are pending to be merged into XF 2.4 that we haven't announced yet. Some of these are smaller and aren't worthy of a dedicated HYS of their own (so they'll probably be rolled into a "miscellaneous" HYS or two), and some of these are going to be mentioned below, but while we have been "cooking" (as the kids say these days) it has meant that things like code reviews, and writing HYS posts hasn't been easy to balance. There is also potentially more stuff coming from generous contributions from esteemed developers such as @Xon and @digitalpoint, assuming we have time to implement (otherwise they will wait for... a future version).


With all of that now being said, while 2.4 is taking longer than we wanted, we have been busy and we are very much nearing the end of development.

And, while disappointing (to all of us) it is important to maintain perspective. XenForo 2.2 was released in September 2020. XenForo 2.3 was released nearly four years later. XenForo 2.4 is not 3 more years away.

But, you clicked this to find out what's new, right? So let's go.
 
Last edited:
Thanks for the update. It really helps to know why the project is delayed like it is. Such a lot of work and things changing mid flight to keep track of. Look forward to 2.4. It'll be especially easy to upgrade for us Cloud customers as it will just work on the server. Will be interesting to dabble with the installation on my home PC and IIS using my self hosted license though.

@Chris D Is 2.4 likely to work on IIS?
 
Release 2.4 with TipTap v2: "Upgrade to TipTap v3" is the top upvoted suggestion in the past 30 days immediately upon release
Release 2.4.1 with TipTap v3: "Omg I have to rewrite my editor addon a second time in 30 days, you suck"
Release 2.4 with TipTap v3 Beta: "Today we're releasing v2.4.0 Patch Level 33 with yet another fix for TipTap. For those who come after."
Release 2.4 later with TipTap v3 RC: "It's been 84 years..."

Me find win condition? That's unpossible!
Club Celebrate GIF by Xbox
 
FYI, PDO uses "emulated prepares" by default and not native database prepared statements

I’ve stepped away from my desk but I think we have emulated prepares switched off for the MySqlAdapter class.

EDIT: oh apparently not but we certainly could do
I looked in the wrong place 🙃

Emulated prepares are disabled in the base adapter already.

(Thanks @Jeremy P)
 
Instead, over the next few versions, including 2.4, we will be [...] focusing on the implementation of developer tools and features that have become commonplace in other frameworks, such as Laravel.
That's great news :)

I hope it's on the radar (or at least not already too late for 2.4) to add a generic logging facility.
Not being able to properly log system status is often a quite significant PITA.
 
Native support for SQLite

This is fantastic - one of the big things that limited the functionality of my Unit Testing Framework for XenForo addons was the inability to automatically spin up a database with very low overheads to test functionality that involves database queries.

Looks like I'm going to have quite a bit of work ahead to broaden the capabilities of my framework to allow for more comprehensive testing!
 
How will SQLite support affect 3rd party code that does not use direct queries but only finders, will this be fully compatible without (major) changes (especially related to whereSql() and finder expressions)?
 
Improved development tooling is likely beneficial for AI all the same to be honest.
Here, I've made a topic:
 
How will SQLite support affect 3rd party code that does not use direct queries but only finders, will this be fully compatible without (major) changes (especially related to whereSql() and finder expressions)?
Raw expressions are going to be tricky. Where possible, we’d like to add more features to the Builder (and finder) to reduce the need for raw expressions (some such things have been added already) and then they’re just handled at the grammar level.

Despite that, raw expressions won’t be completely avoidable.

But as finders and the query builder are composable as they are, you could always do (pseudo code)

Code:
$query = \XF::query('xf_user');

if ($db === 'sqlite')
{
    $query->selectRaw("thing")
}
else
{
    $query->selectRaw("other")
}

// do  more things

But, yeah, a lot of stuff is already baked in to support the grammar differences (things like different function names, different timestamp functions etc).

If you have any specific examples you might be concerned about, I’ll be able to comment or provide an example that works, or it’s something we can consider adding explicit support for.
 
Back
Top Bottom