What’s new Flarum 2.0 is released. Go upgrade your forum.

Forums made
simple.

Beautiful, fast, and free — Flarum is the open‑source forum software your community has been waiting for.

Free
Forever
MIT
Licensed
Open
Source
discuss.flarum.org
Flarum forum screenshot

Everything you need

Community
platform

Flarum scales from small hobby communities to large enterprise forums. Customise every aspect through a rich ecosystem of extensions.

Discover extensions

Groups & permissions

Assign permissions to groups, control member access across categories, and keep things tidy with built-in moderation and flagging.

Styling & themes

Customise via admin settings, install themes, or write custom CSS that propagates across your entire forum automatically.

Powerful editor

Choose from lightweight Markdown editors to full WYSIWYG — Flarum supports both, meeting users wherever they are comfortable.

Notify & engage

In-browser notifications, email digests, and real-time websocket extensions keep your community active and coming back.

Extend endlessly

Hundreds of community-built extensions are available. Build your own, or commission custom development — the API makes it possible.

Secure by default

Built on Laravel with security best practices throughout. Regular core updates keep your community protected.

Get involved

Join the community

Flarum is built by passionate developers and contributors. There’s always room for more.

Build Extensions

Learn how to harness Flarum's extensibility to create extensions and customise your community.

Start Extending

Contribute

Help us make Flarum better. Every bug report, pull request, and documentation improvement counts.

Start Contributing

Get Support

Have a question? The Flarum community is active and welcoming — find answers on Discuss.

Visit Discuss

News & updates

Latest from the blog

Flarum 2.0 is released. Go upgrade your forum.

Flarum 2.0 is here

This release was part of our first ever Flarum live launch event. Thanks to @clarkwinkelmann you can re-watch the whole event on his YouTube channel:


On 24 May 2023, a commit landed in this repository with the least dramatic message in its history:
chore: prepare v2.0 development
1,234 days later — yes, really, one-two-three-four — it's done. Flarum 2.0.0 is stable, and you can install it today.
  • 17 pre-releases: eight betas, a beta.8.1 that fixed the beta, and eight release candidates
  • 1,250 commits from 41 people
  • Eleven years and nine months since Toby Zerner pushed Hello world! into an empty repository
Before anything technical, though, I want to talk about two people.

👋 Sami built this

Flarum 2.0 is Sami Mazouz's release. @Sami M I'm saying that first, before any feature list, so that when you read the list below you know whose work it is.
Go through what 2.0 is actually made of, and the same name keeps coming up:
  • The JSON:API rebuild that the entire extension ecosystem now hangs off — Sami.
  • Search drivers, so search can be swapped for Elasticsearch or anything else — Sami.
  • Code splitting, so your forum stops shipping one enormous JavaScript bundle — Sami.
  • PostgreSQL. SQLite. The MariaDB driver. A decade of "Flarum means MySQL", over — Sami.
  • The Messages extension. Private conversations, finally — Sami.
  • Admin search, the extension list, extension bisect, the theming and extensibility overhaul — Sami, Sami, Sami, Sami.
That's 208 commits across 2023, 2024 and 2025, and not the easy kind. It's foundational work that takes months, doesn't screenshot well and rarely gets thanked, and everything built on Flarum for the next decade will depend on it.
Anyone can add a button. Sami went back into the parts of Flarum that had calcified — the API layer, the search system, the asset pipeline, the assumption that there would only ever be one database — and rebuilt them so that other people could extend them without patching core.
Thank you, Sami. This is your release, and I mean that.

🏁 And then someone had to land it

That was me.
There's a gap between "the foundations are rebuilt" and "you can safely run this on a forum with ten thousand members", and it's much wider than it looks. When beta.4 went out in November 2025, I took 2.0 the rest of the way across it:
  • 14 of the 17 pre-releases: every one from beta.4 to rc.8
  • 425 of the 529 commits since beta.3, so four in every five
  • 388 commits in 2026 alone: 242 fixes, 63 features and 25 performance passes across the 2.0 line
It wasn't all the hidden half, either. Quite a lot of what you'll actually see in 2.0 came out of that stretch:
  • Deck, which you'll meet further down
  • getting Messages ready for launch: live updates, unread counts you can trust, one email per conversation until it's read, and throttling against spam
  • the queue dashboard, with failed-job management and pause/resume
  • abandoned-package warnings, the extension health widget, collapsible categories, dashboard announcements and reset-to-default
  • CJK search, the theme switcher, search in the mobile navigation, and haptic feedback
  • HTML emails with unsubscribe links, which go back to 2023
  • bringing Audit and GDPR into core, and giving Realtime an extender API so other extensions can plug into it
  • a long performance pass on the discussion page, and integration tests that fail on N+1 queries so it stays fast
  • two Laravel upgrades (12 and 13), FontAwesome 7, WebP avatars and logos, a Postmark mail driver and tinker
And then there's the hardening, which nobody screenshots. Nobody writes a changelog entry for "found out why the cache clear 500s the next visitor and not the admin who cleared it." But it's the difference between a 2.0 you read about and a 2.0 you can put in front of your members on a Tuesday morning.
Sami made 2.0 possible. I made it shippable. It's what you're about to install, and I'm proud of it.

🙋 If you just use a forum

No jargon in this bit. Here's what you'll actually notice:
⚡ It's faster. Pages load sooner and send less. Your forum stops shipping a huge bundle of code to pages that don't need it.
💬 You can message people. Private conversations between members are built in, and new messages arrive live.
🔍 Search finds things. Post search works properly alongside discussion search, and you can find a member from any part of their name, not just the start. And if your forum is in Chinese, Japanese or Korean, a new mode actually understands where words begin and end, which Flarum never handled well before.
🌙 It looks right in the dark. Dark-mode logos, plus an optional theme switcher in the header so you can choose.
📱 On your phone or tablet, search sits in the navigation where you'd expect it, menus open on the first tap instead of the second, and there's optional haptic feedback.
📧 Emails make sense. Properly formatted HTML emails, and every notification email has an unsubscribe link, so you can turn off the ones you don't want without digging through settings. Turned too many off? There's now a button to put them all back to the defaults.

🛠️ If you look after a forum

This is where 2.0 changes your week.
One of your thirty extensions just broke your forum. You know the drill: disable half, check, disable half again, lose an evening. Extension bisect does that for you now.
You can't remember which page has that setting. Neither can I. Admin search finds it.
Your extension list tells you things. Collapsible categories, a health widget, and a weekly check that warns you when a package you depend on has been abandoned by its maintainer, before it becomes an emergency.
Background jobs aren't a black box any more. There's a queue dashboard with failed-job management, and you can pause and resume queues before maintenance instead of crossing your fingers.
You choose your database. MySQL, MariaDB, PostgreSQL or SQLite, all properly supported. Flarum also notices when your driver and server disagree, and checks your database version up front rather than failing mysteriously later.
Plus advanced maintenance modes for when the doors need shutting, reset-to-default on settings, dashboard announcements, and a tinker console for when you'd rather just ask the application directly.

🧑‍💻 If you build for Flarum

The JSON:API layer has been rebuilt. Resources, endpoints and fields can be extended in ways the old serializer-and-controller pairing never allowed. An export registry lets extensions take part in the bundle properly. Underneath it all: PHP 8.3+, Laravel 13, Mithril 2.2, ES6 output.
Testing got serious. Eloquent factories, integration tests that fail on N+1 queries, and, as of the final RCs, frontend tests that actually run in a standalone, Composer-installed extension. The docs had cheerfully described that for years, but it only ever worked inside this monorepo.
And the extension points people kept asking for: a JS Notification extender, whenExtensionDisabled on Conditional, flexible frontend content ordering, custom avatar drivers, a reusable Hero, CloseWatcher for modals and dropdowns, slug drivers with display names, hooks throughout the queue dashboard, a Statistics extender so your extension's numbers can sit on the admin dashboard, and a DeckColumns extender so it can add its own columns to Deck.
📖 The upgrade guide is at docs.flarum.org/extend/update-2_0. It's honest about what breaks.

🎁 Two extensions, now everyone's

For years, two of the things forums asked for most were premium extensions. If you wanted them, you paid for them, and you hoped they'd keep up with core. In 2.0, both are free, open source and first-party: maintained alongside core, MIT-licensed, and tested in the same suite as everything else.

⚡ Realtime

How we got here: Realtime started life as blomstra/realtime, a paid premium extension. In December 2025, Daniël Klabbers (@luceos) donated it to the Flarum Foundation so it could be open source for Flarum 2 flarum/framework4295. Giving away something people were paying for, so every forum can have it, is a big deal, and it deserves saying out loud: thank you, Daniël.
What it means for you: your forum comes alive. New discussions show up in the list, replies appear in the thread you're reading, and notifications arrive without anybody pressing refresh. Hide or delete a post and it disappears live for anyone who can no longer see it. It works for guests as well, and always respects permissions. There's even a typing indicator, so you can see when someone is writing a reply.
For admins: Realtime runs its own websocket service on your server, so you'll need somewhere you can keep a process running and a queue worker going (Redis recommended). That rules out most shared hosting. If that's you, flarum/pusher is still there.

🔎 Audit

How we got here: for years, a proper audit log meant Clark Winkelmann's kilowhat Audit, which many of you paid for. The Flarum Foundation bought Audit from Clark and made it open source. It's now flarum/audit, and it shipped to 1.8.17 as well as 2.0, so nobody had to wait for the upgrade to get it. If you already have a kilowhat audit log, Flarum takes it over in place, with your history intact. Thank you, Clark, for building it and for letting it become everyone's.
What it means for you: a record of who did what. Logins, renames, group and permission changes, settings, deleted posts, locked and stickied discussions, approvals, flags, suspensions, extensions switched on and off, GDPR erasures and exports, and private conversations, each with who processed them. When a moderator asks "who changed this?", the answer is a search away, filterable by actor, action, user, discussion or IP.
For developers: the Audit extender lets any extension log its own actions. Every first-party extension now registers its own integration, and the integration does nothing if Audit isn't installed.

🃏 One more thing: Deck

There's a brand-new bundled extension in 2.0 that hasn't been in any release candidate: Deck.
What it is: one page, at /deck, where you follow everything you care about in side-by-side columns that update live. Pick from all discussions, unread, notifications, a single discussion, everything a member starts or posts, posts from a group, or any filter you can type into search, such as tag:support is:unread. With the other bundled extensions enabled, you also get columns for the discussions you're following, your private messages, a tag, and (for moderators) flagged posts. Drag columns into place, resize them, arrange them in up to two rows, and go full screen. Found a discussion you want to keep an eye on? Add to Deck puts it in a column.
Who it's for: members who want to keep up with a busy forum without clicking between pages, and staff who want flagged posts, a support tag and who's typing, all on one screen.
For admins: members can use Deck by default, and the Use Deck permission controls who else can. You also set the maximum number of columns per member (8 by default). It's live with Realtime, and without it, columns check for new activity every 60 seconds, so it works on shared hosting too. New installs get it with the other bundled extensions. On an upgraded forum, add it with composer require flarum/deck, then enable it in the admin panel.
For developers: the DeckColumns extender lets your extension add its own column types. Messages, Subscriptions, Tags and Flags already use it.

🗳️ The last mile

I said the release candidate would become 2.0.0 when the community said so, and that it wasn't my call alone. You made the call.
That wasn't a formality. Here's a sample of what almost six months of release candidates caught. Every one was found by somebody running a real forum, not by us:
  • 🧱 An upgrade that aborted on a circular dependency between Audit, FoF GeoIP, FoF Ban IPs and the moderation extensions. It was a hard wall on the 1.x → 2.x migration, for a completely ordinary set of extensions. flarum/framework4978
  • 💥 A cache clear that could 500 the next visitor. Not the admin who cleared it, but whoever arrived next, with nothing in the logs, because a PHP memory fatal isn't an exception. flarum/framework4990
  • 📧 Erasure emails arriving with the confirmation link rendered as flarumsafevalue…endflarumsafevalue. Underneath it was a bigger discovery: core's own mail had never had markup-injection protection applied at all. flarum/framework4988
  • 🕳️ A member requesting account erasure, cancelling, then requesting again, and the second confirmation email being silently discarded. They'd have waited for a link that was never coming. flarum/framework4989
  • 👆 Every ⋮ menu needing two taps on an iPad, because a touch screen has no hover and Safari fakes one. flarum/framework4992
  • 👯 "Left the tab idle, came back to a duplicate discussion." flarum/framework4993
  • 📉 flarum info under-reporting your web memory limit on Debian and Ubuntu, which is the exact number people paste into support threads when asking for help. flarum/framework4991
  • 🎯 And in the very last release candidate: a custom page built exactly as documented, crashing because an attribute the docs call optional was left out. The cause was a core utility turning null into an empty object, one render away from taking down any extension that added a conditional item. flarum/framework5000 reported by @rafaucau)
It didn't stop at rc.8, either. 81 more pull requests have landed since. If you've been running a release candidate, you'll notice that infinite scroll on the notifications list works again, and that your logo shows up in emails again: it's now a PNG copy every mail client can display, and you can upload a separate email logo. There's also a slimmer Font Awesome package, which takes around 23,000 files out of your vendor folder.
Every one of those would have shipped in 2.0.0 and given somebody a bad afternoon. That's what release candidates are for, and they only work when people actually run them. You did.

🚀 Upgrading

From 1.8.x: in your composer.json, set flarum/core to ^2.0 and every extension to *, then run composer update --prefer-dist --no-plugins --no-dev -a --with-all-dependencies, followed by php flarum migrate and php flarum cache:clear --force. The full walkthrough is at docs.flarum.org/update.
Back up first. Stage it if you can. Keep a way back.
⚠️ Do this one from the command line.
  • Don't upgrade through the Extension Manager. A major upgrade replaces the code that's running the upgrade while it's still running, and that can leave your forum half-upgraded and hard to recover.
  • Run the migrations with php flarum migrate, not the "Update" page your forum shows in the browser. A 1.x → 2.x upgrade has a lot of migrations. In a browser they can hit a timeout or memory limit partway through, but on the command line they run to completion and show you exactly what went wrong if something does.
If you can't get shell access, ask your host for help or wait until you can. It's better to upgrade a little later than to recover a broken forum.
Core probably won't be what holds you up. Extensions will. Every extension needs a 2.0-compatible release, and one straggler can block the whole upgrade.
👀 discuss.flarum.org is already running it, the exact build you're about to download. The nightly demo tracks 2.x too.

🧭 Check before you jump

The FoF Upgrade Advisor tells you whether your extensions will come with you before you touch anything, and checks your PHP and database versions against what 2.0 needs:
composer require fof/upgrade-advisor:"*"
Read the verdict, clear what it flags, and uninstall it once you're green. ✅
📜 Everything that changed since rc.8 is in the changelog.

🙏 Everyone else

Sami and I are two names on a list of 41 who committed to the 2.0 line, and a much longer list of people without whom none of this would exist.
@davetodave178 hardened our CI, pinned the whole supply chain, and made migrations runnable in isolation. @datlechin, @luceos, @YUCLing, @Karl, @datitisev, @ekumanov, @huoxin233, @GianniG, @rafaucau, @iPurpl3x, @ClaudiusH, @edgeinfinity1, @OrdinaryJellyfish, @drewmt, @n-peugnet, @szepeviktor, @grimur82, @forumaker, @zxbmmmmmmmmm, @zDaleZ, @blt950, @Darkle, @garygreen, @JamesShaver, @johannsa, @xHeaven, @rob006, @novacuum, @Krinkle, @TowyTowy, @ksvijayan06, @Abdooo2235, @imdong, @ernestdefoe, plus Chisato Nishikigi and notanothervibecoder, whose commits aren't linked to an account I could resolve.
But commits are just the easiest thing to count. 223 people have contributed here since 1.0.0, and the ones who shaped this release most weren't always committing.

💛 Our supporters

Private, commercial and institutional: you're the reason developers could keep working on this. Three years is a long time to build something before anyone can install it. Your support kept people working on Flarum through stretches when there was no release to show for it, and it told them the work mattered. Open source runs on people's time, and you made that time possible.
The biggest of them is Glowing Blue. Thank you. Flarum 2.0 would look very different without you.
You'll find everyone who chips in on the supporters page. Thank you, every one of you. 💙

🧩 Extension developers

Sami laid the foundations, and I got them over the line. You're the ones who build on them. A forum is never just core: it's the dozens of extensions that make each community its own, and you built that landscape, often unpaid and often in your evenings. Then 2.0 asked you to port all of it to a new API, a new frontend and a new test suite. You did it, and you sent back the bug reports, edge cases and "this extender would really help" requests that shaped 2.0 itself. The new extension points are there because you asked for them.

🧑‍🤝‍🧑 Admins and community managers

You run Flarum every day, and you've told us honestly where it hurts. A lot of this release exists because you described a problem clearly enough for us to fix it.
Please keep it coming. Bring your ideas, problems and improvements toProposals. That's where what you see every day turns into the next release, and 2.1 is being shaped there right now.

🌍 And everyone who

  • 🌐 translated a string into a language none of us speak,
  • 🛟 sat inSupport answering the same question for the hundredth time,
  • 🐛 read a stack trace and wrote it up properly instead of shrugging and moving on.
And to Toby Zerner, who wrote Hello world! on 20 December 2014, and to every maintainer since who kept Flarum going long enough to reach today. 💙

🗓️ What happens now

2.0.0 isn't a finish line. It's a floor.
2.0.x is for whatever the real world finds in the next few weeks. And it will find something: a stable release meets more forums in a day than every release candidate put together. Tell us and we'll fix it.
2.1 is for what's next. That milestone is already filling up.
1.8.x moves to security fixes and critical bugs only, with no new features or improvements. If you're staying on 1.x for now, that's fine and it's still safe, but nothing new will happen there. From today, Flarum lives on 2.0.

🐛 Bugs → flarum/frameworkissues
💬 Questions →Support
🔒 Security → [email protected], privately


Eleven years and nine months from Hello world! to 2.0.0. Thank you for being here for it, whether you arrived last week or have been waiting since the very first beta.

Now go upgrade your forum. 🚀

Celebrate the Flarum 2.0 launch with downloadable goodies!

flarum-20-downloads-2400x800.png
To celebrate Flarum 2.0, we've made a set of downloads for you: wallpapers for your desktop, laptop, tablet and phone, backgrounds for your video calls, a screen saver, and the animations we made for the launch.
  • Wallpapers: six designs, most in light and dark, every one in six screen sizes
  • Video-call backgrounds for Zoom, Teams and Meet
  • Screen saver for macOS, Windows, Linux and KDE Plasma
  • Animations as video and GIF
Every wallpaper and animation zip includes a contents sheet so you can see what's inside, and every screen saver zip includes install notes.

Wallpapers

Download a single design, the phone pack, or every wallpaper at once.

Which file do I need?

Every file name ends in its size. Pick the one that matches your screen:
  • 4K desktop: …-3840x2160.png (also scales cleanly to 2560×1440 and 1920×1080)
  • Laptop: …-2560x1600.png (16:10, such as a MacBook)
  • Ultrawide: …-3440x1440.png
  • Tablet: …-2732x2732.png (square, so it fits either orientation)
  • iPhone: …-1290x2796.png
  • Android: …-1440x3200.png
Screen not listed? Choose the closest shape, and your device will scale it to fit.

Blank page

The Flarum bubble as a fresh page, its corner turning over. In orange, light and dark.
flarum-20-wallpapers-blank-page-contents.png
Blank Page
2MB

Blueprint

Big 2.0 numerals on a drafting grid, with the stack it runs on.
flarum-20-wallpapers-blueprint-contents.png
Blueprint
1MB

Bubbles

A field of speech bubbles, a few of them lit.
flarum-20-wallpapers-bubbles-contents.png
Bubbles
3MB

Launch day

The 2.0 logo and the launch date: a keepsake for the day.
flarum-20-wallpapers-launch-day-contents.png
Launch Day
1MB

Velocity

The Flarum bubble at speed.
flarum-20-wallpapers-velocity-contents.png
Velocity
2MB

People

The bubble field, lit with the avatar of everyone who built 2.0. If you contributed, look for yourself, and thank you.
flarum-20-wallpapers-people-contents.png
People
8MB

Phone pack

Every design and theme at iPhone and Android sizes, 26 images.
flarum-20-wallpapers-phone-contents.png
Phone Pack
5MB

Every wallpaper

All six designs in every theme and size, 78 images, one folder per design.
flarum-20-wallpapers-all-contents.png
All Wallpapers
17MB

Video-call backgrounds

Every design at 1920×1080 for Zoom, Teams and Meet, with the logo top left so you don't cover it. Each comes standard and mirrored: most apps flip your own preview, so the contents sheet explains which one to pick.
flarum-20-video-call-backgrounds-contents.png
Video Call Pack
3MB

Screen saver

The Bubbles wallpaper, brought to life: orange light ripples across the field, and the 2.0 logo drifts slowly around the screen, so nothing burns in.
flarum-20-screensaver-contents.png
macOS 11 or later on Apple silicon, 13 or later on Intel.
MacOS Screen saver
109kB
Windows 10 and 11, on x64 and ARM.
Windows screen saver
2MB
Linux with XScreenSaver or xfce4-screensaver, on X11.
Linux XFE4 screen saver
3MB
KDE Plasma 6, on Wayland or X11. Plasma doesn't run screen savers, so this one is a wallpaper for your lock screen, and your desktop too if you like.
Linux KDE Plasma 6
7kB
The screen savers aren't signed by Apple or Microsoft, so your computer may warn you the first time you open one. The install notes in each zip explain how to allow it. GNOME doesn't run third-party screen savers, sorry.

Animations

The animations we made for the launch, ready for your own videos, slides and chats: the flag rippling in the wind, every 1.x release ticking up to 2.0, the bubble at speed, the blueprint drawing itself, the bundled extensions with Deck landing, the credits for everyone who built 2.0, and the bubble ripple. Eleven in all, and the loops repeat seamlessly.
flarum-20-animations-gif-contents.png
Video: MP4 at 1920×1200, 15 MB. The best quality and the smallest download.
Flarum 2.0 Animations (MP4)
15MB
GIF: 960×600, 57 MB. For chat apps and anywhere that plays GIFs but not video.
Flarum 2.0 Animations (GIF)
56MB

Using one? Post a screenshot of your setup below. We'd love to see them.

Relive the Flarum 2.0 launch event

Hello Community,
It was amazing to see everyone who joined the Discord stage and YouTube livestream for our big announcements yesterday. Flarum 2.0, new core extensions, plans for 2.1 and more! Thanks to everyone who made this possible!
If you were not able to join, or want to rewatch the event, the replay is available on YouTube:

For more details, check the dedicated threads:

Our partners

Built with the best tools

We’re grateful to these companies who generously donate their products to the Flarum project.

Funded by

Flarum 2.0 was made possible with financial support from the NLnet Foundation through the NGI Zero grant programme.