2 minute read

Update: This guide is no longer needed! Discord now has official M1 support, and it’s much better than this workaround. As expected, performance and battery life on M1 Macs has greatly improved. Just download Discord from the official website.

Discord is an Electron app. Electron apps are super portable and can run on every platform without having to change any code. However, Discord’s MacOS app doesn’t support ARM64 (Apple M1) CPUs natively, which means it has to go through Apple’s Rosetta 2, which allows x86_64 applications to run on ARM64 processors.

This introduces some graphical bugs and massively slows down the application, which makes it less responsive and use more battery than it should. Discord has neglected to create a ARM64 version of their app even after more than 8 months of M1 users asking for it, and probably won’t do it for the forseeable future.

This means we have to take the problem into our own hands. Luckily, there’s already a tool for making Electron apps from webpages, and it just so happens that Discord has a fully-functioning web app…

Enter Nativefier. Nativefier creates an Electron app from a webpage, which is already amazing, but it also allows us to inject our own code! This will allow us to imitate pretty much all features in the actual MacOS version and add them to our web version.

Time to get started. You will need:

  1. Open up a terminal

  2. cd to where you downloaded the icon and discord.js (probably ~/Downloads)

  3. Install Nativefier brew install nativefier

  4. Run the following command:

     nativefier \
     --background-color '#23272A' \
     --browserwindow-options '{ "fullscreenable": "true", "simpleFullscreen": "false" }' \
     --counter \
     --darwin-dark-mode-support \
     --enable-es3-apis \
     --icon discord.icns \
     --inject discord.js \
     --title-bar-style hiddenInset \
  5. Move Discord-darwin-arm64/Discord.app into your /Applications folder

  6. Run it!

Everything should work just like the desktop app, while being about 2 times faster. Notifications? Turn them on in the settings. Voice chat? Works great. Unfortunately, game statuses won’t work, and neither does screen sharing. You’ll have to keep nagging Discord to add M1 support before it all works smoothly.

One thing to note, though; sometimes the Discord web app will update itself and break read functionality (specifically, it won’t mark a channel as ‘read’ when you scroll to the very bottom). This can be fixed by simply running Nativefier again and installing the newly generated app. I don’t know why, or how, but whatever.