Skip to content

Repository files navigation

BetterDiscord Installer

Overview | Compatibility | Downloads | FAQ | Development | Contributing


Preview
A simple standalone program which automates the installation, removal and maintenance of BetterDiscord.

Chat Downloads License


Overview

This repository contains the source code for the BetterDiscord installer. The app is built with Wails (Go backend + Svelte frontend) and ships as a native desktop application.

Compatibility Matrix

Platform Minimum Version Support Status Notes
Windows Windows 10+ x64. Uses the system WebView2 runtime.
macOS macOS 12+ (Monterey) Universal binary (Intel + Apple Silicon).
Linux Any x64 distro with WebKitGTK 4.1 (e.g. Ubuntu 22.04+, Debian 12+, Fedora 37+) See Linux install support notes below.

Linux install support:

  • Native Discord install: ✅ Supported
  • Flatpak Discord install: ✅ Supported for per-user installs; ⚠️ system-wide/global installs need elevated write access and aren't supported yet
  • Snap Discord install: ❌ Unsupported; snap mounts Discord's files read-only, so the installer can't modify the app

Downloads

These links point to the latest builds in the releases tab of this repository.

Platform Download
Windows BetterDiscord-Installer-Windows.exe
macOS BetterDiscord-Installer-Mac.zip
Linux (AppImage) BetterDiscord-Installer-Linux.AppImage.zip
Linux (zip) BetterDiscord-Installer-Linux.zip

Or install via a package manager:

# Windows
winget install BetterDiscord.Installer

# macOS
brew install --cask betterdiscord/tap/betterdiscord-installer

FAQ

Windows says "Windows protected your PC" when I run the installer

The installer is currently not code-signed, so SmartScreen warns on new downloads. Click More infoRun anyway. Installing via winget avoids the prompt since winget verifies the download hash.

macOS says the app "cannot be opened because it is from an unidentified developer"

The app is not yet notarized with Apple. Right-click the app and choose Open (on newer macOS versions you may need to allow it under System Settings → Privacy & Security → Open Anyway). Alternatively, remove the quarantine flag:

xattr -d com.apple.quarantine "/Applications/BetterDiscord Installer.app"

Does the installer support Flatpak Discord on Linux?

Yes, for per-user Flatpak installs (the default flatpak install --user …). System-wide/global Flatpak installs live under /var/lib/flatpak, which is root-owned; the installer needs to write into the app to inject BetterDiscord, and it doesn't request elevation yet, so global Flatpak installs aren't supported for now.

Why is Snap Discord unsupported on Linux?

Snap mounts Discord's application files as a read-only squashfs. The installer injects BetterDiscord by modifying files inside the Discord app, which isn't possible on a read-only mount, so Snap can't be supported.

How does the installer add BetterDiscord to Discord?

It places a small loader inside Discord's own app files (a resources/app folder) and preserves Discord's original app.asar next to it. Because this loads before Discord's updater runs, BetterDiscord can keep itself injected across Discord updates, so you generally only need to run the installer once. Uninstalling restores Discord's original files.

I'm running the installer under WSL, do I need to do anything special?

Yes: fully close Discord before installing, repairing, or uninstalling. WSL support targets a Windows Discord install, but the installer can't see or manage the Windows Discord process from the Linux side, so it can't stop Discord for you. If Discord is still running it holds a lock on app.asar and the operation will fail. In this case, close Discord and try again. (For headless or CLI-based workflows, the BetterDiscord CLI is a better fit.)

How can I use the global BetterDiscord folder with Flatpak?

  1. Grant the Flatpak app access to the BetterDiscord config directory:
flatpak --user override com.discordapp.Discord --filesystem=xdg-config/BetterDiscord:rw
  1. Symlink the BetterDiscord folder into the Flatpak app config:
ln -s "${XDG_CONFIG_HOME:-$HOME/.config}/BetterDiscord" "$HOME/.var/app/com.discordapp.Discord/config/BetterDiscord"

Replace com.discordapp.Discord with your Discord Flatpak app ID if it differs on your system.

Development

Codebase Overview

Show Codebase Structure
.
├── api                     // Wails bindings and backend runtime helpers.
├── betterdiscord           // BetterDiscord install/repair/uninstall logic.
├── build                   // Build assets and platform-specific packaging files.
├── discord                 // Discord installation discovery.
├── frontend                // Svelte UI bundled by Vite (Bun-powered).
├── scripts                 // Build/release helper scripts (frontend, AppImage, winres).
├── types                   // Shared Go types used by bindings.
├── utils                   // Backend utilities.
├── wsl                     // WSL detection and path helpers.
├── main.go                 // Wails application entry point.
├── wails.json              // Wails configuration + frontend hooks.
├── Taskfile.yml            // Common dev/build tasks (https://taskfile.dev).
├── .goreleaser.yaml        // Release build + publishing configuration.

Prerequisites

  • Git
  • Go (matches go.mod)
  • Bun
  • Wails CLI
  • Task (optional, for the shortcuts below)
  • GoReleaser (optional, for local release snapshots)
  • Command line of your choice

Linux Prerequisites

Wails requires additional system packages on Linux (GTK/WebKit and build tooling). See the official Wails Linux dependencies guide: https://wails.io/docs/gettingstarted/installation#linux

Fedora note: you may need to set PKG_CONFIG_PATH to include system pkgconfig directories:

export PKG_CONFIG_PATH="/usr/lib64/pkgconfig:/usr/share/pkgconfig"

Building

Quick Start

# Clone and navigate to the repository
git clone https://github.com/BetterDiscord/Installer && cd installer

# Run in development mode with backend bindings
task dev        # or: wails dev (add -tags webkit2_41 on Linux)

# Build a distributable binary
task build      # or: wails build (add -tags webkit2_41 on Linux)

Checks and Tests

task check      # frontend typecheck + lint, go vet, go test

# Or run pieces individually:
cd frontend && bun install && bun run check && bun run lint && bun run test
go test ./...

Release Snapshots

Releases are built and published by GoReleaser when a v* tag is pushed (prerelease tags like v2.0.0-alpha.1 skip the winget/homebrew publishing). To build a local snapshot of the release artifacts for your platform:

task snapshot   # output lands in dist/

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'feat: add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

For information on contributing to this project, please see CONTRIBUTING.md.


Made with ❤️ by the BetterDiscord Team

About

A simple standalone program which automates the installation, removal and maintenance of BetterDiscord.

Topics

Resources

Contributing

Stars

1.8k stars

Watchers

60 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages