Skip to main content
If Discord crashes or Unbound doesn’t load, start with the first section. To clear out addons, see An addon keeps breaking the app. If nothing here helps, report a bug.

Discord crashes or Unbound won’t load

On iOS, open the toolbox and work through the fixes in it. On Android, match the error dialog against the Android error messages. Unbound itself is a single JavaScript file called the bundle. The loader downloads it and runs it inside Discord. Most of these fixes replace or reset that file.

Open the toolbox on iOS

Use either gesture. Both are on by default, and both give a short haptic tap when they fire.
  • Shake the device continuously for 0.5 to 2 seconds, then stop. A shake shorter than half a second does nothing. A shake longer than two seconds is ignored, so ordinary jostling in a pocket or a car doesn’t open the menu.
  • Hold three fingers anywhere on screen for 0.5 seconds. The toolbox opens as soon as the half second is up. You don’t need to lift your fingers.
The toolbox is a menu built into the iOS loader. Discord and Unbound’s JavaScript don’t draw it, so it opens even when the bundle failed to download, failed to run, or crashes the app on launch. You can use it to undo the damage without reinstalling. Destructive actions are shown in red and ask for confirmation before they run. Most actions restart the app when they finish.

Fix it from the toolbox

Work through these in order and stop once the app works again.
1

Refetch the Bundle

In the Bundle section, tap Refetch Bundle. It checks the current source, downloads the bundle only if it changed, and restarts the app. Try this first when Unbound loads but misbehaves.
2

Turn On Recovery Mode

In the Utilities section, tap Enable Recovery Mode. The app restarts. This only helps if the bundle itself runs, as the warning below explains.While recovery mode is on, the label reads Disable Recovery Mode. Tap it again to turn recovery mode off.
3

Go Back to the Official Bundle

If you loaded a custom bundle, tap Delete Bundle in the Bundle section. It deletes the downloaded bundle and clears your custom bundle source, which puts you back on the official bundle.
4

Remove Your Addons

If an addon is still breaking the app, wipe it with the actions in An addon keeps breaking the app.
Recovery mode won’t help if the bundle itself is broken. Use Refetch Bundle, Delete Bundle, or the wipe actions instead.On its own, the iOS loader changes only one thing when recovery mode is on: it stops theming the interface’s system colors.Everything else recovery mode does happens in Unbound’s JavaScript. Addons load as no-ops instead of running, and addon cards can’t be interacted with. All of that depends on the bundle running in the first place.

Bundle actions

The toolbox’s Bundle section has these actions.
Checks the currently configured source, downloads the bundle only if it changed, and restarts. It won’t replace a damaged copy if the source hasn’t changed; use Delete Bundle for that.
Destructive. Deletes the downloaded bundle and clears your custom loader.update.url and loader.update.force settings, which puts you back on the official bundle. Use this to undo a bad custom bundle.
Lists the branches of Unbound’s builds repository. After you pick a branch, it lists that branch’s last 10 commits by short commit hash and date. Pick a commit to pin that exact build.
Asks for a URL, downloads the bundle from it, and pins you to that source. Mainly used to test your own builds. Use Delete Bundle to go back to the official bundle.

Toolbox settings

The toolbox’s own Settings section has these switches.
Turns the shake gesture on or off.
Turns the three finger press gesture on or off.
Replaces the app icon with Unbound’s. Only shown when the app was not installed from the App Store or TestFlight, because alternate icons aren’t available there.
You can turn off either gesture, but not both. Turning one off automatically turns the other back on, so you can’t lock yourself out of the toolbox.

Android shows an Unbound error dialog

Find the message in the table below. When a message asks you to report it, tap Discord Server or follow Report a bug. The Android loader doesn’t have a toolbox yet. When something goes wrong while loading the bundle, it shows a dialog titled Unbound with an Okay button and a Discord Server button that opens Unbound’s Discord invite.

An addon keeps breaking the app

On iOS, the toolbox’s Addons section deletes every addon of one type at once. To remove only one addon, see Remove a single addon on iOS.
There is no undo, and installed addons are not backed up anywhere.
Destructive. Deletes every installed plugin.
Destructive. Deletes every installed theme.
Destructive. Deletes every installed font pack.
Destructive. Deletes every installed icon pack.
The Utilities section has one more reset.
Destructive. Deletes the entire Unbound folder: every addon, your settings.json, and the bundle. Use it only as a last resort, since nothing is kept.

Remove a single addon on iOS

1

Open the Unbound Folder

In the toolbox’s Utilities section, tap Open App Folder.On a jailbroken device with Filza installed, the folder opens in Filza. Otherwise it opens in the Files app, under On My iPhone -> <App Name> -> Unbound.
2

Delete the Addon

Plugins are in Plugins, themes in Themes, and icon packs in Icons, each in a folder named after the addon’s id. Delete that folder.Fonts are stored directly in Fonts, so delete the font file itself.
3

Restart the App

Unbound only looks for addons when the app starts, so the change takes effect after a restart.
On Android, addons are stored in Discord’s private data folder. You need root access to browse it.

Report a bug

Include logs from the moment the problem happened. Neither loader writes a log file, so you need a computer to read the logs.
You need a Mac. The iOS loader sends its logs to Apple’s unified logging system under the subsystem app.unbound, and you read them with Console.app.
1

Connect the Device to a Mac

Connect your device to the Mac.
2

Start Streaming in Console.app

Open Console.app, select your device in the sidebar, and press Start streaming.
3

Filter for Unbound

Filter on the subsystem app.unbound.Each message also has a category that shows which part of the loader logged it: plugins, themes, settings, filesystem, updater, utilities, toolbox, fonts, chatui, pluginapi, or default.
4

Reproduce the Problem

Trigger the problem while the stream is running, then copy out the relevant messages.
5

Open a New Issue

In the toolbox’s Utilities section, tap Open GitHub Issue. It opens a new issue on the loader repository in an in-app browser, already filled in with:
  • Device model
  • iOS version
  • App version and build
  • App source
  • Whether the app is registered as a system or user app
  • The app’s entitlements
6

Fill In the Issue

Add a title, paste the logs, and describe what happened.