In a discussion titled “Mobile-first (or ‘mobile only’)” under the Support category, mfan inquires about implementing a mobile-only experience in Discourse, ideally starting from the mobile theme and applying it universally — even on desktop. They ask whether there’s a built-in option or plugin to disable the desktop theme entirely. codinghorror strongly advises against this, noting it’s not currently possible in the codebase and would cause significant pain. sam adds that even a “mobile-first” approach in Discourse would inherently begin with desktop HTML (which is richer), and warns that removing core CSS would require a major plugin project — estimated at 2–12 months of full-time work. mfan acknowledges the challenges and decides to proceed with a desktop-first approach. Johani cautions that the mobile theme isn’t just CSS — it includes structural differences like dropdowns for long lists and a distinct composer, and warns that using the desktop composer on mobile would not work well. The consensus is that a true mobile-only setup is impractical in Discourse without extensive custom development, and even a desktop-first path presents mobile compatibility hurdles.
I’m working on a site that uses a mobile-first design. This means starting from the smallest mobile experience, and scaling up. Putting aside the merits of this approach vs the opposite (“responsive”), I’m wondering what the best way to accomplish this in Discourse is.
In the Discourse admin, there’s a checkbox to disable mobile themes:
I’m wondering if there’s a way to do the opposite: to “disable” the desktop theme. In other words, having the users always experience the mobile version, regardless of whether they are on desktop or mobile.
What would be the best way to accomplish this sort of approach, if I wanted to use the current Discourse mobile experience as my basis for a new theme? Would I just take the mobile templates, and use them as the “desktop” templates of a new theme?
Alternatively, is there an admin option to always serve the mobile version? Or could this be accomplished via plugin?
Note, you would always start from desktop HTML markup anyway, cause it is richer. So your “mobile first” approach would actually be “desktop” first.
We have no option to “disable core CSS”, so you would have to build a plugin of sorts for that, also, warning, if you start from 0 CSS expect this to be about a 2-12 month full time project.
I feel that I should point out that the mobile “theme” in Discourse involves more than meets the eye. The html layout is different, long lists in the UI switch to dropdowns and most importantly the composer is different
I think this will also not be easy as the desktop composer won’t work well on mobile.