29 Mar 2026

Salesforce: Can it run Doom?

Salesforce: Can it run Doom?

Introduction

There are questions that matter to enterprise architecture, and then there are questions that matter to the human spirit. “Can it run Doom?” belongs firmly in the second category. For this project, the goal was simple: answer the question Salesforce: Can it run Doom? Not in theory, not in a screenshot, and not behind a login wall. The goal was to make Doom actually playable on a publicly accessible Salesforce Digital Experience site.

The answer is yes. Yes, it can.

SALESFORCE. DOOM. PUBLIC INTERNET.

Play It

The easiest way to try the project is the live public site:

Click here to play Doom on Salesforce

That site is a public Salesforce Digital Experience, so anyone can load it in a browser and start playing. There is also an internal Salesforce custom app named Doom, but the Digital Experience is the fastest path for someone who just wants to see the project in action.

Controls are classic Doom controls. Click into the game canvas, use the arrow keys to move, Ctrl to fire, Shift to run, and Space to use doors and switches.

Why Build Doom On Salesforce?

Because “can it run Doom?” is the eternal compatibility benchmark, and Salesforce is usually discussed as a CRM platform rather than a place to host a 1993 first-person shooter. That contrast is exactly what makes the project fun. It is half technical experiment, half stunt, and fully sincere in what it asks:

Can a platform built for records, workflows, permissions, and customer experiences also host a playable copy of Doom?

This project exists to answer that question as clearly as possible. It is not a mockup. It is not a video. It is Doom running in a Lightning Web Component, served by Salesforce, and exposed through a public Digital Experience site.

How It Was Made

The technical path came down to one important constraint from Salesforce Lightning Web Security: WebAssembly is not the easy path here. Because of CSP restrictions, the project uses Emscripten asm.js output instead of WASM. That means the original Doom C source was compiled into JavaScript that can run inside the Salesforce runtime without tripping wasm-unsafe-eval restrictions.

At a high level, the application works like this:

  • A Lightning Web Component named doom renders a <canvas>.

  • Salesforce static resources host the compiled Doom engine and the shareware DOOM1.WAD.

  • The LWC loads the engine with platformResourceLoader, pulls in the WAD data, mounts it into Emscripten’s virtual filesystem, and then calls into the Doom runtime.

  • The same component is surfaced both inside the internal Salesforce app and on the public LWR Digital Experience site.

The project also had to account for differences between the internal Lightning app runtime and the public Experience Cloud runtime. Getting the Digital Experience version working required extra hardening around Lightning Web Security behavior, startup timing, and public-site runtime constraints.

For the full technical walkthrough, build notes, and metadata details, see the repository README:

GitHub Repository

What’s In The Salesforce App

The project includes a custom Lightning app, a Doom tab, a Doom LWC, static resources for the engine and WAD, a permission set, and a public Digital Experience site that hosts the game on its home page.

In other words, this is not just Doom embedded somewhere inside Salesforce. It is a small Salesforce application whose main purpose is to answer a ridiculous but important question with total clarity.

Doom Logo

The Result

The result is a live, publicly accessible Salesforce site where Doom runs in the browser. That sentence still sounds fake, which is part of the charm.

This project ended up being a good demonstration of what Salesforce can do when treated less like a business application framework and more like a programmable runtime with opinions. Those opinions matter. Security policy matters. Experience Cloud behaves differently than the internal app shell. Static resources, LWC lifecycle behavior, and Digital Experience runtime restrictions all matter. But after working through those constraints, Doom still boots.

And that means the answer is settled.

Conclusion

Salesforce: Can it run Doom?

Yes.

It can run Doom in a custom app. It can run Doom on a public Digital Experience. And it can make every serious platform engineer pause for a second and admit that this is, at the very least, deeply funny.

If you want to explore the source, deployment metadata, and technical notes, the full project is here:

https://github.com/AceMcCoyMac/Salesforce-Can-it-run-Doom

And if you just want to play:

https://doom-dev-ed.develop.my.site.com