← Back to Arcade← Back to Blog

Why I had to learn Rust to play 32-bit games on macOS

#development#rust#tauri#macos

If you use a Mac, you probably remember the "App-pocalypse" of macOS Catalina. Overnight, Apple dropped all support for 32-bit applications. For most people, it just meant updating Microsoft Office. For me, it meant a massive chunk of gaming history—specifically classic web arcade games and older standalone titles—was instantly unplayable.

I was building Arcade-Verse, and I realized that while modern browsers can handle a lot, there is a specific era of gaming that just doesn't feel right (or perform well) trapped inside a standard Chrome tab, especially on Apple Silicon.

The Failed Attempts

My first thought was the industry standard: Electron. I spun up a quick wrapper to encapsulate the games. It worked, but it was brutal. Shipping a 150MB Chromium instance just to play a lightweight 2D game felt like a crime against my MacBook's battery life. The fans were spinning up for games built in 2008.

I needed something closer to the metal.

The Solution: Enter Tauri and Rust

I kept hearing about Tauri—a framework that lets you build desktop apps using web frontend technologies, but swaps out the heavy Chromium backend for the OS's native webview (WebKit on Mac). The catch? The backend logic had to be written in Rust.

I had never written a line of Rust in my life. The borrow checker humbled me immediately.

But as I started wiring up the bridging between my Next.js frontend and the Rust backend, something clicked. I was able to manage file streaming and memory allocation so much more efficiently.

The "Aha!" Moment

The breakthrough happened when I compiled the first native .dmg. The binary size was unbelievably small—under 10MB compared to Electron's massive footprint. I fired up a classic 32-bit era title, and it ran flawlessly. No fan noise. Minimal RAM usage. It felt like a native macOS app.

Moving Forward

Solving this for Arcade-Verse made me realize how many other Mac users are probably locked out of their old game libraries. Instead of keeping the wrapper to myself, I polished the UI, abstracted the core engine, and spun it out into its own tool.

If you are on a Mac and want to run these classic environments natively without cooking your CPU, I packaged the final build into Nexus Retro.

As for Arcade-Verse, the web library is currently sitting at over 3,500 games, managed entirely via edge computing. But that's a post for next week.

Want to build this yourself?

Check out Nexus Hub and Nexus Retro for the tools mentioned in this article.