BetterDiscord Addon Analysis

Official store corpus · report generated 2026-08-31 · addon data updated 2026-08-31

Plugins analyzed
209
no change since 2026-08-24
Themes analyzed
115
+1 since 2026-08-24
Authors
130
no change since 2026-08-24
Corpus size
16.8 MB
+284.7 KB since 2026-08-24
Cumulative downloads
55.7M
+239.9K since 2026-08-24
Deprecated-surface downloads
38.6M
+131.2K since 2026-08-24
Abandoned share
17.6%
+0.3pp since 2026-08-24
Parse errors
0
✓ full AST coverage
Legacy API uses
0
✓ old-old APIs are gone
Uncalled API members
27
no change since 2026-08-24
Using require()
56
no change since 2026-08-24
Bundled / packed code
13
no change since 2026-08-24
Hardcoding classes
102
no change since 2026-08-24
Resilient selectors
88
no change since 2026-08-24
Malformed meta
10
no change since 2026-08-24
Self-installing
48
no change since 2026-08-24

require() usage — polyfill retirement list

BetterDiscord has no real require; these modules are served by the polyfill. Each list names the plugins to migrate before it can be removed. Plugins also reach the same environment without require — see Environment coupling below. Downloads is the combined cumulative lifetime store downloads of the plugins listed — the installed-base weight of each migration, not active users.

ModulePluginsDownloadsCallsΔ calls
require("fs")
5216.8M530
Plugins requiring fs
  • Dastan / FavoriteMedia
  • DevilBro / 0BDFDB
  • DevilBro / BetterFriendList
  • DevilBro / BetterNsfwTag
  • DevilBro / BetterSearchPage
  • DevilBro / CharCounter
  • DevilBro / ChatAliases
  • DevilBro / ChatFilter
  • DevilBro / ClickableMentions
  • DevilBro / CompleteTimestamps
  • DevilBro / CustomQuoter
  • DevilBro / CustomStatusPresets
  • DevilBro / DisplayServersAsChannels
  • DevilBro / EditChannels
  • DevilBro / EditRoles
  • DevilBro / EditServers
  • DevilBro / EditUsers
  • DevilBro / FriendNotifications
  • DevilBro / GameActivityToggle
  • DevilBro / GoogleSearchReplace
  • DevilBro / HideMutedCategories
  • DevilBro / ImageUtilities
  • DevilBro / LastMessageDate
  • DevilBro / MessageUtilities
  • DevilBro / NotificationSounds
  • DevilBro / OldTitleBar
  • DevilBro / OpenSteamLinksInApp
  • DevilBro / PersonalPins
  • DevilBro / PinDMs
  • DevilBro / QuickMention
  • DevilBro / ReadAllNotificationsButton
  • DevilBro / RemoveBlockedUsers
  • DevilBro / RemoveNicknames
  • DevilBro / RevealAllSpoilers
  • DevilBro / ServerCounter
  • DevilBro / ServerDetails
  • DevilBro / ServerFolders
  • DevilBro / ServerHider
  • DevilBro / ShowBadgesInChat
  • DevilBro / ShowConnections
  • DevilBro / SpellCheck
  • DevilBro / SplitLargeMessages
  • DevilBro / SpotifyControls
  • DevilBro / StaffTag
  • DevilBro / TimedLightDarkMode
  • DevilBro / TopRoleEverywhere
  • DevilBro / Translator
  • DevilBro / UserNotes
  • DevilBro / WriteUpperCase
  • Riolubruh / VoiceMessages
  • Yentis / EmoteReplacer
  • arg0NNY / BetterAnimations
require("path")
5116.8M520
Plugins requiring path
  • Dastan / FavoriteMedia
  • DevilBro / 0BDFDB
  • DevilBro / BetterFriendList
  • DevilBro / BetterNsfwTag
  • DevilBro / BetterSearchPage
  • DevilBro / CharCounter
  • DevilBro / ChatAliases
  • DevilBro / ChatFilter
  • DevilBro / ClickableMentions
  • DevilBro / CompleteTimestamps
  • DevilBro / CustomQuoter
  • DevilBro / CustomStatusPresets
  • DevilBro / DisplayServersAsChannels
  • DevilBro / EditChannels
  • DevilBro / EditRoles
  • DevilBro / EditServers
  • DevilBro / EditUsers
  • DevilBro / FriendNotifications
  • DevilBro / GameActivityToggle
  • DevilBro / GoogleSearchReplace
  • DevilBro / HideMutedCategories
  • DevilBro / ImageUtilities
  • DevilBro / LastMessageDate
  • DevilBro / MessageUtilities
  • DevilBro / NotificationSounds
  • DevilBro / OldTitleBar
  • DevilBro / OpenSteamLinksInApp
  • DevilBro / PersonalPins
  • DevilBro / PinDMs
  • DevilBro / QuickMention
  • DevilBro / ReadAllNotificationsButton
  • DevilBro / RemoveBlockedUsers
  • DevilBro / RemoveNicknames
  • DevilBro / RevealAllSpoilers
  • DevilBro / ServerCounter
  • DevilBro / ServerDetails
  • DevilBro / ServerFolders
  • DevilBro / ServerHider
  • DevilBro / ShowBadgesInChat
  • DevilBro / ShowConnections
  • DevilBro / SpellCheck
  • DevilBro / SplitLargeMessages
  • DevilBro / SpotifyControls
  • DevilBro / StaffTag
  • DevilBro / TimedLightDarkMode
  • DevilBro / TopRoleEverywhere
  • DevilBro / Translator
  • DevilBro / UserNotes
  • DevilBro / WriteUpperCase
  • Riolubruh / VoiceMessages
  • arg0NNY / BetterAnimations
require("electron")
3795.5K30
Plugins requiring electron
  • KingGamingYT / ActivityFeed
  • arg0NNY / BetterAnimations
  • programmer2514 / MessageScanAI
require("events")
31.1M30
Plugins requiring events
  • Zerebos / BlurNSFW
  • arg0NNY / BetterAnimations
  • samfundev / ChannelTabs
require("(dynamic)")
1415.0K10
Plugins requiring (dynamic)
  • DevilBro / 0BDFDB

Δ compares against the 2026-08-24 snapshot.

Environment coupling

The rest of what plugins reach for outside the addon sandbox: Node/Electron globals touched directly rather than through the require polyfill, and the React entry points that break on a Discord React bump.

Node/Electron globals

Direct access to the bridged environment, shown as root plus one segment. A file that binds one of these names locally (function f(process)) is skipped entirely rather than guessed at, so these are floor values.

GlobalPluginsCalls
DiscordNative.clipboard
1526
process.env
45
DiscordNative
45
process
33
global
27
global.document
26
process.versions
25
DiscordNative.fileManager
23
DiscordNative.nativeModules
22
DiscordNative.app
14
Buffer.from
12
process.exit
11
global.ZeresPluginLibrary
11
global.Object
11

React-upgrade hazards

Entry points that break when Discord bumps React: render, findDOMNode and unmountComponentAtNode were removed in React 19, hydrate in 18. createRoot is the opposite signal — plugins already on the modern root API.

MethodPluginsCalls
getInternalInstance hazard
89
unmountComponentAtNode hazard
12
render hazard
12
findDOMNode hazard
12
createRoot modern
810

Style injection — API vs hand-rolled API winning

The same question createRoot answers for React, for stylesheets: are plugins using the API BD offers, or doing it by hand? BdApi.DOM.addStyle injects a managed <style> that BD removes on unload; a hand-rolled document.createElement("style") is the plugin's own to clean up. Here the API is ahead — the healthy direction. (React's virtual createElement("style") is not counted; only a real DOM node is.)

ApproachPlugins
BdApi.DOM.addStyle API
73
document.createElement("style") hand-rolled
3

BdApi usage by namespace

Calls resolved through aliases, destructuring, and new BdApi() instances. Use this to weigh the impact of API changes.

NamespaceCallsPlugins
BdApi.React
5,349128
BdApi.Webpack
2,278145
BdApi.Data
593114
BdApi.UI
587155
BdApi.Patcher
416112
BdApi.ContextMenu
27251
BdApi.DOM
25682
BdApi.Components
24853
BdApi.Logger
22852
BdApi.Utils
18370
BdApi.Plugins
9862
BdApi.Net
7964
BdApi.Hooks
7521
BdApi.ReactUtils
6029
BdApi.Themes
214
BdApi.ReactDOM
1611
BdApi.settings
41
BdApi.Commands
41
BdApi.isSettingEnabled
21
BdApi.disableSetting
21
BdApi.enableSetting
21
Top individual APIs (304 distinct)
APICallsPluginsΔ
BdApi.React.createElement
4,5541010
BdApi.Webpack.Filters.byStrings
388580
BdApi.Data.load
3011070
BdApi.Webpack.getByKeys
252650
BdApi.Data.save
2421060
BdApi.Webpack.getModule
23879+2
BdApi.UI.showToast
231900
BdApi.Webpack.Filters.byKeys
217540
BdApi.React.Fragment
172310
BdApi.Patcher.after
162720
BdApi.Webpack.Filters.bySource
16042+3
BdApi.Webpack.getStore
149440
BdApi.React.useState
134510
BdApi.Webpack.getByStrings
131290
BdApi.Patcher.unpatchAll
1241020
BdApi.Webpack.waitForModule
10535−1
BdApi.DOM.removeStyle
104720
BdApi.React
99830
BdApi.UI.showConfirmationModal
98700
BdApi.DOM.addStyle
97730
BdApi.Webpack
92720
BdApi.Logger.error
90290
BdApi.Net.fetch
77630
BdApi.Utils.findInTree
6835+1
BdApi.React.Component
65360
BdApi.UI.buildSettingsPanel
64570
BdApi.React.useEffect
64380
BdApi.UI.alert
64600
BdApi.Hooks.useStateFromStores
62140
BdApi.Logger.info
60210
Show all 274 remaining APIs
BdApi.ContextMenu.patch
57310
BdApi.UI.showChangelogModal
56520
BdApi.Plugins.folder
56520
BdApi.React.useRef
55310
BdApi.ContextMenu.buildItem
45220
BdApi.React.memo
4550
BdApi.Patcher
45450
BdApi.Webpack.getWithKey
44250
BdApi.Webpack.getMangled
41180
BdApi.Patcher.before
40260
BdApi.Webpack.getBySource
4023−1
BdApi.Data
39390
BdApi.UI
39390
BdApi.Webpack.Filters
37370
BdApi.Logger.warn
37160
BdApi.Patcher.instead
33240
BdApi.ContextMenu.open
33120
BdApi.Utils.className
3380
BdApi.DOM
32320
BdApi.Webpack.Filters.byStoreName
3170
BdApi.ContextMenu
29280
BdApi.ContextMenu.Item
29120
BdApi.Webpack.getBulk
28280
BdApi.Components.SettingItem
28110
BdApi.Utils.extend
28140
BdApi.Components.Tooltip
26220
BdApi.React.createRef
2660
BdApi.ContextMenu.buildMenu
2590
BdApi.React.useMemo
25130
BdApi.Components.Button
24110
BdApi.React.useCallback
22160
BdApi.Utils
21210
BdApi.Logger
21210
BdApi.ReactUtils.getOwnerInstance
20140
BdApi.Webpack.Stores.UserStore.getUser
1960
BdApi.React.useLayoutEffect
1790
BdApi.Components.DropdownInput
1780
BdApi.Components.SwitchInput
17140
BdApi.Webpack.Filters.byPrototypeKeys
1680
BdApi.ContextMenu.unpatch
1590
BdApi.Utils.Store
15120
BdApi.UI.createTooltip
1450
BdApi.Components.Text
1490
BdApi.Webpack.Stores.UserStore.getCurrentUser
1370
BdApi.Webpack.Stores.ChannelStore.getChannel
1360
BdApi.ContextMenu.buildMenuChildren
1330
BdApi.Plugins.get
1360
BdApi.Webpack.Stores.UserStore
12120
BdApi.React.cloneElement
12110
BdApi.Components
12120
BdApi.DOM.createElement
1250
BdApi.React.useSyncExternalStore
1270
BdApi.Webpack.Stores
11110
BdApi.ReactUtils
11110
BdApi.ContextMenu.Menu
1160
BdApi.ReactUtils.wrapInHooks
1160
BdApi.Plugins.isEnabled
1170
BdApi.Webpack.Stores.ChannelStore
10100
BdApi.Logger.log
1070
BdApi.Data.delete
1090
BdApi.ReactUtils.getInternalInstance
980
BdApi.DOM.parseHTML
960
BdApi.Components.Button.Sizes.SMALL
960
BdApi.Plugins
940
BdApi.ReactDOM
990
BdApi.Components.TextInput
960
BdApi.Components.ErrorBoundary
870
BdApi.Webpack.Stores.GuildStore.getGuild
850
BdApi.Webpack.Stores.GuildStore
880
BdApi.Webpack.getBulkKeyed
880
BdApi.Components.Button.Colors.RED
850
BdApi.Hooks
880
BdApi.Components.Spinner
860
BdApi.Webpack.Filters.combine
750
BdApi.Patcher.*
760
BdApi.Logger.debug
710
BdApi.ReactDOM.createRoot
770
BdApi.Webpack.Stores.MessageStore.getMessage
720
BdApi.Themes
730
BdApi.React.forwardRef
770
BdApi.Webpack.Stores.SelectedGuildStore.getGuildId
730
BdApi.Webpack.Stores.PermissionStore.can
640
BdApi.Webpack.Stores.SelectedChannelStore
660
BdApi.Webpack.Stores.UserStore._dispatcher.unsubscribe
620
BdApi.Webpack.Stores.UserStore._dispatcher.subscribe
620
BdApi.React.useReducer
660
BdApi.React.isValidElement
660
BdApi.Components.RadioInput
650
BdApi.Components.SettingGroup
650
BdApi.Webpack.Stores.GuildMemberStore
550
BdApi.Webpack.Stores.PresenceStore
550
BdApi.Utils.mapObject
550
BdApi.UI.openDialog
520
BdApi.Webpack.Stores.UserStore._dispatcher
540
BdApi.Components.Flex
540
BdApi.React.createContext
540
BdApi.Patcher.getPatchesByCaller
550
BdApi.ContextMenu.Group
550
BdApi.Utils.semverCompare
550
BdApi.ReactUtils.createNodePatcher
550
BdApi.Webpack.getByPrototypeKeys
550
BdApi.Components.Text.Sizes.SIZE_16
530
BdApi.Webpack.Stores.GuildRoleStore
440
BdApi.UI.buildSettingItem
430
BdApi.Utils.forceLoad
440
BdApi.UI.showInviteModal
420
BdApi.Utils.debounce
440
BdApi.UI.showNotice
440
BdApi.ContextMenu.close
440
BdApi.React.useContext
430
BdApi.Webpack.Stores.MessageStore
440
BdApi.UI.showNotification
430
BdApi.Webpack.Stores.LocaleStore.locale
330
BdApi.Webpack.Stores.LocaleStore
330
BdApi.Webpack.Stores.PermissionStore
330
BdApi.Webpack.Stores.RelationshipStore
330
BdApi.Hooks.useData
330
BdApi.Webpack.Stores.UserStore._dispatcher.dispatch
320
BdApi.React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.H
320
BdApi.Webpack.Stores.PresenceStore.getStatus
310
BdApi.Webpack.Stores.GuildRoleStore.getRolesSnapshot
330
BdApi.Webpack.getById
330
BdApi.Themes.disable
320
BdApi.Themes.isEnabled
320
BdApi.Plugins.disable
320
BdApi.Plugins.enable
320
BdApi.Plugins.reload
320
BdApi.Themes.folder
310
BdApi.Webpack.Stores.SelectedChannelStore.getCurrentlySelectedChannelId
320
BdApi.Components.Flex.Justify.END
320
BdApi.Webpack.Stores.SortedGuildStore
330
BdApi.Components.ColorInput
330
BdApi.ReactUtils.wrapElement
310
BdApi.Components.Button.Colors.GREEN
320
BdApi.Components.Spinner.Type.*
310
BdApi.React.useId
330
BdApi.Logger.stacktrace
320
BdApi.React.useTransition
330
BdApi.ContextMenu.Separator
320
BdApi.Webpack.Stores.SelectedGuildStore
330
BdApi.Webpack.Stores.LocaleStore.removeChangeListener
220
BdApi.Webpack.Stores.LocaleStore.addChangeListener
220
BdApi.Webpack.Stores.VoiceStateStore.getDiscoverableVoiceStateForUser
210
BdApi.Webpack.Stores.UserGuildSettingsStore
220
BdApi.Webpack.Stores.PresenceStore.emitChange
210
BdApi.Webpack.Stores.PresenceStore.getClientStatus
220
BdApi.Webpack.Stores.MessageStore.emitChange
210
BdApi.Components.Flex.Align.CENTER
220
BdApi.ContextMenu.CheckboxItem
220
BdApi.Webpack.Stores.ReferencedMessageStore.getMessageByReference
220
BdApi.Webpack.Stores.MessageStore.getMessages
210
BdApi.Webpack.Stores.ReferencedMessageStore
220
BdApi.Webpack.Stores.GuildMemberStore.getMember
220
BdApi.Webpack.Stores.SelectedChannelStore.getChannelId
220
BdApi.Webpack.Stores.GuildStore.getGuildsArray
220
BdApi.Webpack.modules.*
220
BdApi.Webpack.Stores.IdleStore
220
BdApi.settings.map
210
BdApi.settings
210
BdApi.isSettingEnabled
210
BdApi.disableSetting
210
BdApi.enableSetting
210
BdApi.Themes.get
210
BdApi.Themes.enable
210
BdApi.Net
220
BdApi.Components.Text.Sizes.SIZE_12
210
BdApi.Hooks.useForceUpdate
220
BdApi.Components.SliderInput
220
BdApi.Webpack.getModules
220
BdApi.Webpack.getAllByKeys
210
BdApi.React.lazy
220
BdApi.Webpack.Filters.byComponentType
220
BdApi.Components.Text.Colors.HEADER_PRIMARY
210
BdApi.Components.Spinner.Type.SPINNING_CIRCLE
210
BdApi.Webpack.Stores.SortedGuildStore.getFlattenedGuildIds
220
BdApi.Webpack.Filters.not
210
BdApi.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED
210
BdApi.Webpack.Stores.GuildMemberCountStore.getMemberCount
220
BdApi.Webpack.Stores.GuildMemberCountStore
220
BdApi.Webpack.Stores.GuildMemberStore.getMembers
210
BdApi.Components.Button.Looks.FILLED
210
BdApi.Webpack.Stores.GuildChannelStore
110
BdApi.Webpack.Stores.VoiceStateStore
110
BdApi.Webpack.Stores.TypingStore
110
BdApi.Webpack.Stores.JoinedThreadsStore
110
BdApi.Data.save.bind
110
BdApi.Components.Flex.Child
110
BdApi.ReactUtils.getOwnerInstance.bind
110
BdApi.Webpack.Stores.WindowStore.isVisible
110
BdApi.Webpack.Stores.IdleStore.isAFK
110
BdApi.Webpack.Stores.SpeakingStore.isSpeaking
110
BdApi.Webpack.Stores.PresenceStore.isVROnline
110
BdApi.Webpack.Stores.PresenceStore.isMobileOnline
110
BdApi.Webpack.Stores.RelationshipStore.getNickname
110
BdApi.Webpack.Stores.ChannelStore.getChannelIds
110
BdApi.Webpack.Stores.UserGuildSettingsStore.getNewForumThreadsCreated
110
BdApi.Webpack.Stores.WindowStore
110
BdApi.Webpack.Stores.SpeakingStore
110
BdApi.Webpack.Stores.PendingReplyStore.getPendingReply
110
BdApi.Webpack.Stores.PendingReplyStore
110
BdApi.Components.Button.Sizes.ICON
110
BdApi.Components.Button.Colors.TRANSPARENT
110
BdApi.Components.Flex.Direction.HORIZONTAL
110
BdApi.Components.Text.Colors.LINK
110
BdApi.Components.Text.Colors.MUTED
110
BdApi.Webpack.Stores.ReadStateStore._dispatcher
110
BdApi.Webpack.Stores.RunningGameStore
110
BdApi.Webpack.Stores.ConsentStore
110
BdApi.Webpack.Stores.ActivityTrackingStore
110
BdApi.Webpack.Stores.AccessibilityStore.removeChangeListener
110
BdApi.Webpack.Stores.AccessibilityStore.addChangeListener
110
BdApi.Webpack.Stores.AccessibilityStore.zoom
110
BdApi.Webpack.Stores.AccessibilityStore
110
BdApi.Webpack.Stores.RecentMentionsStore
110
BdApi.Webpack.Stores.RecentMentionsStore.emitChange
110
BdApi.Webpack.Stores.GuildReadStateStore
110
BdApi.Webpack.Stores.ReadStateStore
110
BdApi.Webpack.getAllByStrings
110
BdApi.Webpack.modules.*.toString
110
BdApi.Components.Button.Colors.CUSTOM
110
BdApi.Webpack.Stores.A._dispatcher.dispatch
110
BdApi.Webpack.Stores.UserProfileStore
110
BdApi.React.use
110
BdApi.Webpack.Stores.GuildStore.getGuilds
110
BdApi.Webpack.Stores.RawGuildEmojiStore.getGuildEmojis
110
BdApi.Webpack.Stores.RawGuildEmojiStore
110
BdApi.Webpack.Stores.UserStore.emitChange
110
BdApi.Components.Spinner.Type
110
BdApi.Components.Button.Sizes.MEDIUM
110
BdApi.Webpack.Stores.RelationshipStore.getFriendIDs
110
BdApi.Themes.getAll
110
BdApi.ContextMenu.RadioItem
110
BdApi.Webpack.Filters.byDisplayName
110
BdApi.Components.Spinner.Type.SPINNING_CIRCLE_SIMPLE
110
BdApi.React.useImperativeHandle
110
BdApi.Webpack.Stores.StickersStore.getStickersByGuildId
110
BdApi.Webpack.Stores.EmojiStore.getGuildEmoji
110
BdApi.Webpack.Stores.StickersStore
110
BdApi.Webpack.Stores.EmojiStore
110
BdApi.Components.Text.Colors.ERROR
110
BdApi.Components.Text.Sizes.SIZE_14
110
BdApi.Webpack.Stores.StickersStore.getStickerById
110
BdApi.Components.SearchInput
110
BdApi.React.PureComponent
110
BdApi.React.Children.only
110
BdApi.Webpack.Filters.byRegex
110
BdApi.Webpack.Stores.GuildMemberCountStore.getOnlineCount
110
BdApi.Components.Text.Colors.HEADER_SECONDARY
110
BdApi.Components.Button.Looks.BLANK
110
BdApi.Components.NumberInput
110
BdApi.React.useInsertionEffect
110
BdApi.DOM.animate
110
BdApi.DOM.onRemoved
110
BdApi.Components.Flex.Direction.VERTICAL
110
BdApi.Commands.unregisterAll
110
BdApi.Commands.register
110
BdApi.Components.Button.Looks.OUTLINED
110
BdApi.Components.Flex.Justify.BETWEEN
110
BdApi.Components.Text.Sizes.SIZE_20
110
BdApi.Components.Flex.Justify.START
110
BdApi.Components.Button.Colors.BRAND
110
BdApi.Commands.Types.OptionTypes.BOOLEAN
110
BdApi.Commands.Types
110
BdApi.React.Children.map
110
BdApi.Webpack.Stores.SearchQueryStore
110
BdApi.Webpack.Stores.SearchAutocompleteStore
110
BdApi.Webpack.Stores.RunningGameStore.getGamesSeen
110
BdApi.Webpack.Stores.UserSettingsProtoStore
110
BdApi.Webpack.Stores.ThreadMemberListStore.getMemberListSections
110
BdApi.Webpack.Stores.PrivateChannelSortStore.getSortedChannels
110
BdApi.Webpack.Stores.ChannelMemberStore.getProps
110
BdApi.Webpack.Stores.ChannelMemberStore
110
BdApi.Webpack.Stores.PrivateChannelSortStore
110
BdApi.Webpack.Stores.ThreadMemberListStore
110

Removal shortlist — 27 of 150 declared members go uncalled

The usage table above measures how big a change's blast radius is; this one asks whether there is any blast radius at all. BdApi's declared surface comes from a manifest generated from BetterDiscord core (v1.13.14, commit 5f9d3b0f, read 2026-07-16) by scripts/surface.ts, and is diffed against what the corpus actually calls. Members are the names addons type, not the classes behind them — AddonAPI is exposed twice, as BdApi.Plugins and BdApi.Themes, and both are counted. Names outside BD's own classes (BdApi.React, BdApi.ReactDOM) are opaque and never judged here; their members are Discord's.

NamespaceMembers nothing callsCount
BdApi.Webpack getAllByPrototypeKeysgetAllByRegexgetAllBySourcegetByRegexgetMangledProxygetProxy
6
BdApi.Commands getCommandsByCallerTypes.CommandTypesTypes.InputTypesTypes.MessageEmbedTypesunregister
5
BdApi.DOM onAddedscreenHeightscreenWidth
3
BdApi.Utils cacheescapeHTMLgetNestedValue
3
BdApi.Plugins getAlltoggle
2
BdApi.ReactUtils getTyperootInstance · deprecated
2
BdApi.Themes reloadtoggle
2
BdApi.Components KeybindInput
1
BdApi.ContextMenu ControlItem
1
BdApi.Data recache
1
BdApi.version (whole namespace)
1

Uncalled in the store corpus only — plugins outside the store, and the private plugins every user writes, are not visible to this analysis. Read it as "no store addon would notice", not "nothing would break". Two known blind spots keep this list honest: plugins built on BDFDB or ZeresPluginLibrary route calls through the library, and BdApi.Patcher.* computes its member name at runtime, so no member of that namespace can be credited from it.

Calls to members that do not exist

The other direction: chains the corpus calls that BD core does not declare. This replaces a hand-maintained list, which could only ever drift out of sync with core.

Called pathCallsPlugins
BdApi.settings41
Which plugins
  • DevilBro / 0BDFDB
BdApi.isSettingEnabled21
Which plugins
  • DevilBro / 0BDFDB
BdApi.disableSetting21
Which plugins
  • DevilBro / 0BDFDB
BdApi.enableSetting21
Which plugins
  • DevilBro / 0BDFDB

This is dead code, not live breakage. All of it is one library — DevilBro/0BDFDB — and every call sits behind a feature-detection guard (typeof BdApi.enableSetting == "function", or an is-array check for BdApi.settings), so the code path is simply never taken. Nothing is broken today and removing these names from core would change nothing. A headline of the form "N plugins call a removed API" would be wrong.

Plugin shape — the v1 lifecycle BD still honors

What plugins define, counted at definition sites via the AST rather than by name: grep -l getName finds 66 plugins, but 11 of those are .getName() calls on Discord modules, which are not plugin lifecycle at all. A plugin that defines a member on a nested helper class as well as on itself is counted once. Downloads weighs each member by the cumulative lifetime store downloads of its defining plugins — the installed base a removal would touch, not active users.

MemberStatusPlugins defining itDownloads
getNamedeprecated
5516.1M
getAuthordeprecated
5216.6M
getDescriptiondeprecated
5115.9M
getVersiondeprecated
5115.9M
loadremoval candidate
7020.1M
onSwitchremoval candidate
9539.9K
observerremoval candidate
6361.3K
startcurrent
19327.5M
stopcurrent
19027.5M
getSettingsPanelcurrent
13721.7M

observer is the one to act on. To serve the 6 plugins that define it, core constructs a document-wide MutationObserver (observe(document, {childList: true, subtree: true})) and dispatches every mutation to every loaded plugin — a cost every user pays on every DOM change, whether or not they run any of those 6. observer, onSwitch and load are marked removal candidates, not deprecated: BD has not deprecated them, and this report is not the place to announce that it has. (load is redundant — a plugin's code already runs at require/eval time and in its constructor, so anything it does can move there — but many plugins never migrated.) The get-family is genuinely deprecated — the meta block supersedes it, and core only consults these overrides if the instance defines them.

Discord internals reliance

What the ecosystem pulls out of Discord's webpack (module keys, exported strings, prototype keys, stores, display names) and which methods it patches. This is the surface that breaks on Discord updates — the highest-demand entries are candidates for a stable CommonModules offering.

These are floors, not totals. 48 of 209 plugins reach Discord through a library object rather than BdApi directly (BDFDB 47 · 15.4M downloads, ZeresPluginLibrary 1 · 37.9K downloads) — their webpack lookups and patches are attributed to the library, so they are invisible to the tables below. In installed-base terms the blind spot is 15.4M of the corpus's 55.7M cumulative downloads — 28% of every copy ever installed routes its Discord access through a library these tables cannot see into. Detection is a runtime read of the library global, not a string mention: the four ex-dependents whose changelogs still say "no longer relies on ZeresPluginLibrary" are correctly excluded. Both libraries are unmaintained — ZeresPluginLibrary was deprecated over a year ago — so every dependent is also a plugin that will need rewriting when the library finally breaks.

Webpack lookup targets

TargetPluginsCalls
dispatch key
2425
subscribe key
2424
UserStore store
2222
ChannelStore store
1515
RelationshipStore store
1111
useStateFromStores string
1111
GuildStore store
1111
Store key
1012
SelectedChannelStore store
1010
SelectedGuildStore store
1010
getLocale key
910
GuildMemberStore store
910
openModal key
99
(dynamic) key
88
sendMessage key
88
Modal key
77
Unsupported animation config: string
66
getCurrentUser key
66
getGuildIconURL key
66
connectStores key
66
container key
56
GuildRoleStore store
55
.getState();for string
55
selectionMode:"single",onSelectionChange: string
55
isSelected: string
55
Show 1150 more
stickToMarkers string
55
PresenceStore store
55
openUserProfileModal key
55
MediaEngineStore store
55
parseTopic key
55
message key
55
icon key
47
intl key
45
getNickname string
45
button key
45
MessageStore store
45
chat key
44
register key
44
channel key
44
RTCConnectionStore store
44
parse key
44
iconContainer key
44
scroller key
44
base key
44
VoiceStateStore store
44
_sendMessage key
44
onCloseRequest string
44
onCloseCallback string
44
locale key
44
initialize key
44
MANAGE_CHANNELS string
37
guildId string
37
grow key
35
onClose string
35
LocalActivityStore store
34
checked string
34
content key
34
filesMetadata: string
33
requireConfirm: string
33
showNotification key
33
Icon key
33
getStateFromStores string
33
fetchMessage key
33
deleteMessage key
33
statusColor string
33
USER_UPDATE string
33
Promise.resolve string
33
ApplicationStreamingStore store
33
getUserAvatarURL key
33
editMessage key
33
anchor key
33
anchorUnderlineOnHover key
33
jumpToMessage key
33
channelTextArea key
33
title key
33
GuildChannelStore store
33
UserProfileStore store
33
thin key
33
instant string
33
backdropStyle string
33
innerClassName string
33
.modalKey? string
33
,instant: string
33
.onCloseCallback() string
33
section string
33
GUILD_EMOJI key
33
GUILD_EMOJIS key
33
root key
33
stickToMarkers key
33
initialValue key
33
data-text-variant string
33
Animation key
33
renderPopout string
33
label string
33
description string
33
data-direction string
33
data-justify string
33
shouldIndicateNewChannel string
33
ThemeStore store
33
messageType string
33
sidebar key
33
channel string
33
sanitizeUrl string
33
PLAYING string
33
(dynamic) undefined
33
.BUTTON_LOADING_STARTED_LABEL, string
33
activity string
26
circleIcon key
24
layer key
24
platform=== string
24
spotifyData string
24
colorPrimary key
24
isGroupDM string
23
USER_MENTION string
23
inlinePreview string
23
wrapper key
23
avatarWrapper key
23
gameState key
23
clickableImage key
23
gameProfileModalChecks string
23
onOpened string
23
embeddedActivity string
23
.09v4.91a3.09 string
23
LocaleStore store
22
TypingStore store
22
isNonUserBot string
22
(dynamic) string
22
getTypingUsers string
22
getRecipientId string
22
isGuildStageVoice string
22
canRemoveAnyRoles string
22
navigationDescription key
22
scrollerInner key
22
messageListItem key
22
threadMessageAccessoryContentLeadingIcon key
22
getUserMaxFileSize string
22
padding-size-sm key
22
buttons key
22
trailing key
22
isMobile string
22
.setState string
22
.getState()[ string
22
username key
22
relationshipType string
22
trackUserProfileAction string
22
displayProfile string
22
unreadMentionsIndicatorBottom key
22
tutorialContainer key
22
listItemWrapper key
22
lowerBadge key
22
startTyping key
22
decorator key
22
hovered key
22
requestPermission key
22
iconWrapper key
22
transitionTo - Transitioning to string
22
getVoiceChannelId key
22
getLastSelectedGuildId key
22
Divider key
22
hasAvatarForGuild string
22
isTyping string
22
transitionToGuild - Transitioning to string
22
bar key
22
app key
22
avatarContainer key
22
getSendMessageOptionsForReply key
22
,scrollbarType: string
22
RunningGameStore store
22
UserGuildSettingsStore store
22
UserSettingsProtoStore store
22
_dispatch key
22
createRoot key
22
AnalyticEventConfigs key
22
getDiscordUtils key
22
ack key
22
fetchMessages key
22
getLastSelectedChannelId key
22
buttonWrapper key
22
buttonContent key
22
emojiButton key
22
stickerButton key
22
trinketsIcon key
22
getDisambiguatedEmojiContext key
22
getEmojiUnavailableReason key
22
selected key
22
getMessage key
22
getMessages key
22
getChannel key
22
setBadge key
22
getObscureReason string
22
uploadFileToCloud string
22
textArea key
22
numpad plus string
22
inner key
22
Looks key
22
Link key
22
useSpring key
22
openPrivateChannel key
22
(dynamic) store
22
"M15.16 16.51c-.57.28-1.16-.2-1.16-.83v-.14c0-.43.28-.8.63-1.02a3 3 0 0 0 0-5.04c-.35-.23-.63-.6-.63-1.02v-.14c0-.63.59-1.1 1.16-.83a5 5 0 0 1 0 9.02Z string
22
.ImpressionTypes.MODAL,"aria-labelledby": string
22
"M15.62 17.03a9 9 0 1 1 1.41-1.41l4.68 4.67a1 1 0 0 1-1.42 1.42l-4.67-4.68ZM17 10a7 7 0 1 1-14 0 7 7 0 0 1 14 0Z string
22
"M4 4a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h11a3 3 0 0 0 3-3v-2.12a1 1 0 string
22
"text-input" string
22
GuildMemberCountStore store
22
PermissionStore store
22
defaultRules key
22
WindowStore store
22
small key
22
preload key
22
guild string
22
button string
22
hasText string
22
expressiveWrapper string
22
WebkitLineClamp string
22
),style:{marginTop: string
22
helperTextId string
22
errorMessage string
22
hasActiveThreads string
22
isGuildVocal string
22
GUILD_TEXT key
22
decorations string
22
containerProps string
22
Provider string
22
emojiId string
22
emojiName string
22
animated string
22
shouldAnimate string
22
WARNING key
22
ERROR key
22
.controlId string
22
SWITCH_BACKGROUND_DEFAULT string
22
INVERTED key
22
"fieldset" string
22
"legend" string
22
must not be a thread starter message string
22
openUserSettings key
22
useContext string
22
CHANNEL_THREAD_VIEW string
22
GUILD_DISCOVERY string
22
getStageInstanceByChannel string
22
getState key
22
onExitComplete string
22
standardSidebarView key
22
baseLayer key
22
layerContainer key
22
FocusRing was given a focusTarget string
22
moveGrabber string
22
.PlatformTypes.WINDOWS string
22
leading: string
22
display string
22
getUserOutbox string
22
translateSurrogatesToInlineEmoji string
22
timestamps string
22
.TEXT_FEEDBACK_POSITIVE string
22
start string
22
end string
22
duration string
22
percentage string
22
USER_PROFILE_ACTIVITY_BUTTONS string
22
PRESS_PLAY_ON_SPOTIFY_BUTTON string
22
PRESS_JOIN_CALL_BUTTON string
22
maxUsers string
22
.CONNECT string
22
hasIcon string
22
switchIconsEnabled string
22
NewGameStore store
22
ApplicationStore store
22
alpha2 string
22
embeddedActivityConfig string
22
ctaConfig string
22
flatMap string
22
parentId string
22
disableFetch string
22
"PRESS_CLOUD_PLAY_BUTTON" string
22
.EMBEDDED string
22
{return(0, string
22
META_QUEST string
22
supported_platforms string
22
distributorCTAConfigs string
22
PLAY_CTA_DISPLAYED string
22
.CUSTOM_STATUS&&(null string
22
.XBOX string
22
.PS5 string
22
M8.95185131 string
22
M17.7516 string
22
Array.isArray(e)?e.some( string
22
JOIN)&& string
22
&&!!(0, string
22
.INSTANCE&&null!=e string
22
e?.application_id=== string
22
SS string
22
USER_ACTIVITY_METADATA string
22
ACTIVITY_METADATA_UPDATE string
22
formatPathWithQuery key
22
contextKey string
22
.POPOUT string
22
contextless string
22
DispatchApplicationStore string
22
data string
22
getOfficialGame string
22
:null! string
22
7.61c-.25.95.31 string
22
launch key
22
reportUnverifiedGame key
22
asContainer string
22
keyboardShortcut string
22
"string"==typeof string
22
18.5V22a1 string
22
2.4l.57-.58a.74.74 string
22
14.99a3.17 string
22
USER_ACTIVITY_PLAY string
22
USER_ACTIVITY_SYNC string
22
LISTENING string
22
SPOTIFY).name string
22
M12.7609503,7.08043507 string
22
0Zm-2.77-.2-3.33-2.5a.25 string
22
className string
22
tabularNumbers key
22
separator key
22
statusPickerModalMenu key
22
defaultColor key
22
onClickContainer: string
22
user: string
22
.isNonUserBot()? string
22
colorBrandInverted key
15
plateMuted key
13
autocomplete key
13
setState key
13
lottieIcon key
12
readyState string
12
zoomable string
12
minHeight string
12
autocompleteInner key
12
disableReturnRef string
12
children string
12
"tooltip" string
12
submenuPaddingContainer string
12
.MODAL_ROOT_LEGACY, string
12
tooltipText string
12
layoutContainer key
12
profileAppConnections key
12
colorClass string
12
stopPropagation string
12
upperContainer key
12
targetIsUser string
12
controlIcon key
12
onHide string
11
getAvatarURL string
11
Refetch string
11
typingUsers: string
11
"svg" string
11
isMultiUserDM string
11
peopleListItemRef string
11
VIEW_CREATOR_MONETIZATION_ANALYTICS key
11
getDiscoverableVoiceState string
11
getDiscoverableVoiceStateForUser string
11
isPrivate string
11
transitionTo - string
11
onExpand string
11
onCollapse string
11
canAddRoles string
11
renderGIF() string
11
imagePool string
11
uploadArea key
11
textAreaSlate key
11
winButton key
11
PlatformTypes.WINDOWS string
11
getFrequentlyUsedReactionEmojisWithoutFetchingLatest string
11
loadIfNecessary string
11
EMOJI_NAME_RE key
11
RawGuildEmojiStore store
11
paste key
11
getSetting key
11
highlight key
11
hasLanguage key
11
iterations! string
11
insertFragment string
11
Math.ceil string
11
.STREAMING string
11
.ONLINE string
11
.IDLE string
11
_channelMessages key
11
embed_ string
11
["children","className","element"] string
11
),style: string
11
.divider, string
11
reducedMotion: string
11
transitionState: string
11
small string
11
dialog string
11
focusProps: string
11
,tooltipNote: string
11
?.stackNextByDefault string
11
.analyticsLocation, string
11
,friendToken: string
11
unsubscribe key
11
usernameFont key
11
.pronouns string
11
UserProfilePopoutBody string
11
.hidePersonalInformation string
11
QuickSwitcher string
11
.searchableTitles string
11
panels key
11
accountPopoutButtonWrapper key
11
SessionsStore store
11
useSyncExternalStore key
11
unsafe_rawColors key
11
userInfo key
11
getGuildFolderById key
11
clickable key
11
browser key
11
toolbar key
11
iconBadge key
11
getChannelId key
11
getGuildId key
11
.BOT string
11
.ORIGINAL_POSTER string
11
]:!0,interactive: string
11
SUPPRESS_NOTIFICATIONS string
11
SELF_MENTIONABLE_SYSTEM string
11
percent string
11
foregroundGradientColor string
11
message_reference string
11
isProbablyAValidSnowflake string
11
appAsidePanelWrapper key
11
hasThread key
11
messageSpine key
11
repliedMessageClickableSpine key
11
type:"CHANNEL_ACK",channelId string
11
type:"BULK_ACK",channels: string
11
SpeakingStore store
11
"SENDING"=== string
11
renderUserGuildPopout: channel should never be string
11
preloadUserProfileForPopout string
11
Invalid arguments string
11
getGuildMemberAvatarURLSimple string
11
userAvatar key
11
audienceContainer key
11
audienceIcon key
11
overlap key
11
avatarSmall key
11
getEchoCancellation key
11
fromTimestamp key
11
fullscreenOnMobile string
11
scale(1) string
11
Wrap.NO_WRAP,className: string
11
let{headerId: string
11
grow:0 string
11
useDefaultUnderlineStyles string
11
getDefaultLinkInterceptor string
11
enabled key
11
lookBlank key
11
colorBrand key
11
NO_WRAP string
11
flexShrink: string
11
SpotifyStore store
11
PLAYER_PAUSE string
11
StreamRTCConnectionStore store
11
STREAM_START string
11
GUILD string
11
CALL string
11
OVERLAY string
11
"STREAM_STOP" string
11
labelWrapper key
11
rtcConnectionStatusConnected key
11
voiceButtonsContainer key
11
default key
11
evenodd string
11
M12 22a10 10 0 1 string
11
speechSynthesis.speak string
11
speechSynthesis.cancel string
11
setTTSType string
11
FriendsStore store
11
Pages key
11
Sections key
11
Objects key
11
ObjectTypes key
11
defaultProps key
11
marginBottom40 key
11
marginTop4 key
11
search-google string
11
stopTyping key
11
getSuperProperties key
11
getSuperPropertiesBase64 key
11
getDebugOptionsHeaderValue key
11
increment key
11
distribution key
11
Request key
11
post key
11
get key
11
del key
11
Thread must have a parent ID string
11
FORM key
11
SIDEBAR key
11
open key
11
close key
11
setAlwaysOnTop key
11
PopoutWindowStore store
11
embedFull key
11
embedVideoActions key
11
iconWrapperActive key
11
PUBLIC_THREAD key
11
GUILD_FORUM key
11
THREAD_CREATED key
11
SUPPRESS_NOTIFICATIONS key
11
EPHEMERAL key
11
ALL_MESSAGES key
11
ONLY_MENTIONS key
11
parent_id string
11
isGuildOrCategoryOrChannelMuted string
11
ReadStateStore store
11
closeModal key
11
closeAllModals key
11
searchWithoutFetchingLatest key
11
parsePreprocessor key
11
unparse key
11
getDMFromUserId key
11
type:"CREATE_PENDING_REPLY" string
11
receiveMessage key
11
embedMedia key
11
embedVideo key
11
embedSuppressButton key
11
SearchMessageStore store
11
safeDispatch key
11
dispatchToLastSubscribed key
11
FORUM_CHANNEL_GUIDELINES key
11
CREATE_FORUM_POST key
11
computePermissions key
11
ADD_REACTIONS key
11
addFiles key
11
fileName string
11
fileSize string
11
renderAdjacentContent string
11
onContextMenu string
11
mediaLayoutType string
11
sendBotMessage key
11
hasChannel key
11
changeDraft key
11
getDraft key
11
getRecentlyEditedDrafts key
11
getChannelPermissions key
11
PREMIUM_LOCKED key
11
canUseCustomStickersEverywhere string
11
STANDARD key
11
GUILD key
11
getStickerById key
11
getStickersByGuildId key
11
editor key
11
placeholder key
11
autocompleteRowVertical key
11
autocompleteAttached key
11
isFocused key
11
isElementFullScreen key
11
.join("+") string
11
labelRow string
11
titleId string
11
errorId string
11
setIsFocused string
11
sidebarList key
11
sidebarListRounded key
11
selectChannel key
11
e.value string
11
e.disabled string
11
e.hideBorder string
11
e.tooltipNote string
11
e.onChange string
11
e.className string
11
e.style string
11
.duration_secs string
11
.waveform string
11
.url string
11
onCloseRequest:null!= string
11
actionLogger key
11
Colors key
11
showRemainingCharacterCount string
11
colorDefault key
11
submenu key
11
spacingTop key
11
scrollerBase key
11
fade key
11
animated key
11
Easing key
11
isFirstMessageInForumPost protoKey
11
isSystemDM protoKey
11
addReaction protoKey
11
uaUU/g string
11
BAN_MEMBERS key
11
showMentionToggle string
11
FOCUS_CHANNEL_TEXT_AREA string
11
stopPropagation(), string
11
onClick: string
11
dangerous string
11
renderUsers protoKey
11
renderMoreUsers protoKey
11
.guildbar.AVATAR_SIZE string
11
backgroundStyle string
11
dI3q4h string
11
disableColor string
11
autocompleteQuerySymbol key
11
.isGroupDM() string
11
refresh_sm string
11
interactiveClassName string
11
PendingReplyStore store
11
horizontalControlColumnWidth:`min($ string
11
dI3q4u string
11
"M5 18a1 1 0 0 0-1 1 3 3 0 0 0 3 3h10a3 3 0 0 0 3-3 1 1 0 0 0-1-1H5ZM3.04 string
11
headingColor: string
11
heading: string
11
extractTimestamp key
11
.getImageData(0,0, string
11
.shouldHideMediaOptions string
11
hasMediaOptions: string
11
numMediaItems: string
11
ChannelMemberStore store
11
EmojiStore store
11
}=window.GLOBAL_ENV;return string
11
StickersStore store
11
SoundboardStore store
11
MANAGE_GUILD_EXPRESSIONS key
11
"M14.24 1.03a1 1 0 0 1 .73 1.21l-1 4a1 1 0 0 1-1.94-.48l1-4a1 1 0 0 1 1.21 string
11
requestMembersById key
11
"data-mana-component":"select" string
11
ConfirmModal key
11
mobileApp key
11
combokeys key
11
disable key
11
rules key
11
getDefaultLocale key
11
toggleSelfDeaf key
11
toggleSelfMute key
11
getSoundpack string
11
play string
11
KEYBOARD_MODIFIER_KEY string
11
UNK string
11
hasPermission key
11
APP string
11
data-app-not-dev-tools string
11
AppTitleBar string
11
tooltip string
11
HEADER_BAR_BADGE_BOTTOM string
11
hasLayers string
11
isAuthenticated string
11
statusOffline key
11
guildDetail key
11
closePrivateChannel key
11
__unsupportedReactNodeAsText string
11
isViewingRoles string
11
checkbox string
11
animated.rect string
11
getSocket key
11
role:"img" string
11
icon` string
11
REPLY key
11
USER_JOIN key
11
t key
11
isRepliedMessage string
11
userOverride string
11
trailingIconClass string
11
CHANNEL_PINNED_MESSAGE string
11
tabIndex string
11
orientation string
11
SortedVoiceStateStore store
11
permissionOverwrites string
11
VIEW_CHANNEL string
11
CONNECT string
11
ActiveThreadsStore store
11
DevToolsDesignTogglesStore store
11
pickerIntention string
11
GUILD_STICKER_RELATED_EMOJI key
11
SOUNDBOARD key
11
referencedMessage string
11
USER_JOIN string
11
createMessage: author cannot be undefined string
11
unread key
11
link key
11
repliedTextPreview key
11
repliedTextContent key
11
layers key
11
dm key
11
bannerImage key
11
bannerImg key
11
nameTag key
11
diversitySelectorOptions key
11
variant string
11
data-excessive-heading-level string
11
renderBreadcrumb string
11
"eyebrow" string
11
query string
11
"aria-label": string
11
clearable:null string
11
WANDERING_CUBES key
11
CHANNEL_THREAD_VIEW key
11
GUILD_DISCOVERY key
11
ROLE_SUBSCRIPTIONS key
11
CHANNEL_BROWSER key
11
ENTER key
11
LEAVE key
11
textButton string
11
textVariant string
11
fullWidth string
11
wrap string
11
"horizontal" string
11
APP_NOT_OPENED key
11
RESOLVING key
11
"input" string
11
prefixElement string
11
panels string
11
ACCOUNT_PANEL string
11
GUILD_ROLE_SUBSCRIPTIONS key
11
CHANNELS_AND_ROLES key
11
CHANNEL_TEXT_AREA string
11
markdown string
11
EXPRESSION_PICKER string
11
positionContainer string
11
appLauncher string
11
sticker string
11
gif string
11
badgeStrokeColor key
11
animate key
11
timestampFormat string
11
"LLLL" string
11
theme- string
11
images- string
11
ENTERING key
11
EXITING key
11
messageDisplayCompact string
11
providedChannel string
11
"span" string
11
isUnread string
11
|\\d+ string
11
shouldConfirm string
11
setTimeout string
11
Anchor key
11
setEnableHardwareAcceleration key
11
releaseChannel key
11
Invite Button Embed string
11
getInvite string
11
resolveInvite key
11
createInvite key
11
ImpressionNames key
11
colors key
11
modules key
11
humanize key
11
filesize key
11
focusLastVisibleItem string
11
"focus" string
11
SortedGuildStore store
11
PrivateChannelSortStore store
11
LayerStore store
11
InviteStore store
11
stackingBehavior string
11
onCloseCallback() string
11
filter string
11
popout: string
11
.at(-1) string
11
currentToastMap.has string
11
type key
11
type string
11
position string
11
props.computedMatch string
11
props.path string
11
props.location string
11
cloneElement string
11
strict string
11
isExact string
11
).location string
11
.match string
11
.params string
11
AppLayer displayName
11
ChannelSectionStore store
11
"single" string
11
clear:()=> string
11
"LAYER_PUSH" string
11
"LAYER_POP" string
11
"LAYER_POP_ALL" string
11
MODAL_ROOT_LEGACY string
11
MEDIUM key
11
LARGE key
11
headerIdIsManaged string
11
HORIZONTAL string
11
separator string
11
HORIZONTAL_REVERSE string
11
scrollbarType string
11
"listitem" string
11
"list" string
11
.Provider string
11
containerRef string
11
sortedThreadIds string
11
"group" string
11
MATCHES key
11
STARTS_WITH key
11
copyValue string
11
TEXT_COPIED string
11
setSelectedSearchContext key
11
VIEW_THREAD key
11
VIEW_MOD_REPORT key
11
isRichTooltip string
11
scrim string
11
isVisible string
11
.delete string
11
getContextMenu string
11
isOpen string
11
subMenuClassName string
11
menuSubmenuProps string
11
listClassName string
11
TRANSLATE key
11
SCALE key
11
modalKey string
11
"instant" string
11
getLayers string
11
hasFullScreenLayer string
11
getGuild string
11
postSidebarWidth string
11
dontCloseOnActionIfHoldingShiftKey string
11
data-menu-item string
11
profileEffect string
11
animationType string
11
useReducedMotion string
11
isIntersecting string
11
arguments.length string
11
useRootElementContext string
11
transitionState string
11
padding-size- string
11
popoverGradientWrapper string
11
spacing string
11
standardSidebarView string
11
onSaveText string
11
EMPHASIZE_NOTICE string
11
MEMBER_SAFETY_PAGE string
11
closeGuildSidebar string
11
"showNavigationMobile" string
11
MODAL string
11
headingId string
11
theme string
11
"dialog" string
11
CallChatSidebar string
11
chatInputType string
11
CHANNEL_CALL string
11
chatLayerWrapper key
11
chatTarget key
11
contentRegion key
11
section key
11
nav key
11
rootWithShadow key
11
appMount key
11
chatContent key
11
containerDefault key
11
channelInfo key
11
groupStart key
11
toast key
11
disableScrollAnchor key
11
select key
11
measurement key
11
actionBar key
11
headerTrailing key
11
inactive key
11
botTagCozy key
11
botTagVerified key
11
getVoiceStatesForChannel key
11
withMentionPrefix string
11
cozyMessage key
11
divider key
11
unreadPill key
11
messagesPopoutWrap key
11
interactive key
11
typing key
11
ellipsis key
11
guilds key
11
messagesWrapper key
11
scrollerContent key
11
useImperativeHandle string
11
getScrollerState string
11
isScrolling string
11
thread string
11
getVoiceStatesForChannel string
11
fontSize key
11
fontScale key
11
must be a thread starter message string
11
canManageRoles string
11
IS_JOIN_REQUEST_INTERVIEW_CHANNEL string
11
typingUsers string
11
isThreadCreation string
11
channelStream string
11
oldestUnreadMessageId string
11
MESSAGE key
11
DIVIDER key
11
"separator" string
11
isBeforeGroup string
11
obscurityControlClassName string
11
renderAuthor protoKey
11
renderMedia protoKey
11
focusProps string
11
"li" string
11
getUser key
11
getUserIds key
11
getStatus key
11
isMute key
11
isDeaf key
11
isSelfMute key
11
isSelfDeaf key
11
getGuild key
11
getGuilds key
11
bg key
11
trapClicks key
11
markup key
11
originalLink key
11
label key
11
startingIndex?? string
11
"data-mana-component":"text-area" string
11
tooltipId string
11
.searchParams.delete("width"), string
11
disableReturnRef: string
11
defaultMarginlegend key
11
messagesPopout key
11
header key
11
disable-adaptive-theme string
11
sourceWidth: string
11
sourceHeight: string
11
toolbarClassName string
11
"stack":"replace" string
11
.onCloseCallback(), string
11
onCloseCallback?.()} string
11
dangerous key
11
switchContainer key
11
setFile key
11
canSaveImage string
11
if(null!= string
11
searchParams string
11
.HORIZONTAL_REVERSE, string
11
.attachmentItemSmall]: string
11
renderLeading: string
11
,onChange: string
11
.premiumFeatures?.additionalEmojiSlots??0 string
11
.GuildFeatures.MORE_STICKERS)&& string
11
.GUILD_EMOJIS( string
11
EMOJI_UPLOAD_START string
11
sanitizeEmojiName key
11
MESSAGE_CROSSPOST key
11
CREATE_GUILD_EXPRESSIONS key
11
horizontalControlColumnWidth:`min( string
11
"data-mana-component":"text-input" string
11
"top",badgeStrokeColor: string
11
.HEADER_BAR) string
11
getPlaceholder protoKey
11
channelWithIcon string
11
fetchApplication key
11
onOpenProfile string
11
avatar string
11
STREAMING string
11
isVROnline string
11
isDM string
11
name string
11
setPopoutRef string
11
fetchGuildProfile string
11
showSubtext string
11
caretConfig string
11
connectionsRoleId string
11
USER_PROFILE_FETCH_START string
11
.metadata)?void string
11
.EPISODE? string
11
data-username-with-effects string
11
popAll key
11
getMatchingInboxEntry string
11
getMatchingOutboxEntry string
11
delay string
11
lineClamp string
11
warn string
11
preview string
11
instanceof string
11
widget string
11
transitionTo - Transitioning to string
11
Replacing route with string
11
.goBack() string
11
.goForward() string
11
aria-label string
11
roles string
11
map(e string
11
AccessibilityStore store
11
AuthenticationStore store
11
ApplicationStreamPreviewStore store
11
StreamerModeStore store
11
let{userId string
11
,{variant string
11
"primary", string
11
userId string
11
tooltipText: string
11
,variant string
11
{text string
11
menuItems string
11
popoutTargetRef string
11
{userId: string
11
EDIT_PROFILE string
11
"user-bot-profile-add-app" string
11
userBio string
11
disableAnimations string
11
hidePersonalInformation string
11
onUpdate string
11
placeholder string
11
connectedAccount string
11
connectedAccountOpenIcon string
11
CONNECTED_ACCOUNT_VIEWED string
11
data-scroller string
11
fade:!0, string
11
.ADMINISTRATOR string
11
.MANAGE_MESSAGES string
11
MODAL_V2 string
11
discriminatorClass string
11
nick string
11
.test string
11
.url)) string
11
;return(0,i.jsx)("div",{className: string
11
overflowCount key
11
circle key
11
clamp key
11
hideRestrictedProfile string
11
outer key
11
overlay key
11
disabledButtonWrapper key
11
sizeSmall key
11
focusLock key
11
fullscreenOnMobile key
11
bannerButton key
11
progress key
11
lineClamp2Plus key
11
badgeContainer key
11
badgesContainer key
11
background key
11
safetyTable key
11
"data-toggleable-component":"switch" string
11
layout:"horizontal" string
11
oneByOneGrid key
11
.toString.toString().includes("[native code]") string
11
itemsForLayout string
11
isSingleMosaicItem string
11
imageZoom key
11
imageWrapper key
11
loadingOverlay key
11
mediaArea key
11
wrapperControlsHidden key
11
hoverButtonGroup key
11
visualMediaItemContainer key
11
dimensionlessImage key
11
onCloseProfile: string
11
trackUserProfileAction: string
11
PRESS_CLEAR_CUSTOM_STATUS string
11
rtcConnectionStatus key
11
ping key
11
connection key
11
SENT_BY_SOCIAL_LAYER_INTEGRATION string
11
src string
11
size string
11
lookFilled key
11
caret key
11
caret--center key
11
navigator.clipboard.write string
11
Clipboard API not supported. string
11
M19.73 string
11
setContainer string
11
getApplicationsForGuild key
11
"USER_ACTIVITY_STATISTICS_FETCH_SUCCESS" string
11
fetchProfile error string
11
USER_PROFILE_FETCH_FAILURE string
11
grow string
11
shrink string
11
align string
11
basis string
11
PersistedStore key
11
darken string
11
ConnectedAppsStore string
11
branchId string
11
user string
11
onAction string
11
themeType string
11
Anchor string
11
href string
11
route string
11
iconClassName string
11
linkButtonIcon key
11
shape string
11
.ROUND string
11
throttle key
11
M10.04 string
11
.ALBUM string
11
.EPISODE string
11
"no artist ids in metadata" string
11
UserProfile string
11
application string
11
void string
11
getWindowOpen string
11
CHANNEL_CALL_POPOUT string
11
.TRACK string
11
isProtocolRegistered string
11
noWrap key
11
a key
11
customTheme key
11
"rtl" string
11
getComputedStyle string
11
document.body.appendChild( string
11
offsetWidth string
11
arguments[2]:"scroll" string
11
popoutWrapper key
11
size24 key
11
="wanderingCubes string
11
transitionAppear string
11
.canBasicChannel string
11
previewUrl: string
11
getVoiceChannelId string
11
22.95c-1.7-.16-3.4-.77-4.88-1.73-1.24-.8-1.52-1.13-1.52-1.8 string
11
null string
11
ACTIVITY_FEED_GUILD_VISITED string
11
webBuildOverride string
11
isLoading string
11
Array.isArray string
11
GLOBAL_FEED string
11
application_id string
11
useMemo string
11
ConnectedAppsStore store
11
ContentInventoryStore store
11
DispatchApplicationStore store
11
GameStore store
11
LaunchableGameStore store
11
LibraryApplicationStatisticsStore store
11
LibraryApplicationStore store
11
NowPlayingViewStore store
11
POPOUT string
11
"contextless" string
11
entry string
11
sourceUserId string
11
.PLAYING} string
11
svg key
11
mask key
11
customButtons key
11
absolute key
11
popoutContentWrapper key
11
GUILD_MEMBER_VERIFICATION string
11
M7 1a1 1 0 0 1 1 1v.75c0 string
11
SingleSelect string
11
selectionMode string
11
"useStateFromStores" string
11
sliderClassName: string
11
onDragEnd:this.handleDragEnd string
11
handleValueChange string
11
videoButton key
11
popoutOpen key
11
guildIcon key
11
getEmojiURL key
11
interactive string
11
iconType string
11
isEmojiDisabled key
11
isEmojiFiltered key
11
topEmojis string
11
getDisambiguatedEmojiContext string
11
useEmojiCategories string
11
getSrc protoKey
11
getRatio protoKey
11
generateGuildPermissionSpec key
11
roleCircle key
11
role key
11
roleTag key
11
eyebrow key
11
moreUsers key
11
emptyUser key
11
clickableAvatar key
11
this.context?this.renderNonInteractive(): string
11
closeUserProfileModal key
11
defaultRenderUser string
11
showDefaultAvatarsForNullUsers string
11
fetchChannel key
11
unread string
11
.ALL_MESSAGES string
11
createFriendInvite key
11
heading-lg/semibold key
11
GuildFeatures key
11
setSearchQuery key
11

Patched methods

MethodPluginsCalls
(dynamic)
3655
render
2638
type
2428
A
1719
Ay
67
sendMessage
66
children
57
Z
35
componentDidMount
33
showNotification
23
renderElement
22
componentWillUnmount
22
Avatar
12
renderSection
12
buildLayout
12
getDiscoverableVoiceState
11
RolesListWithOverflow
11
isMobileOnline
11
handle
11
useCallback
11
useState
11
startTyping
11
default
11
react
11
cq
11
Show 44 more
getSpeakingWhileMuted
11
updateAsync
11
wasAutoPaused
11
handleVoiceConnect
11
handleBlockedOrIgnoredUserVoiceChannelJoin
11
action
11
renderEmbeds
11
getUserAvatarURL
11
searchWithoutFetchingLatest
11
parse
11
getEmojiUnavailableReason
11
renderContent
11
getActiveSocketAndDevice
11
getActivities
11
getUserProfile
11
_sendMessage
11
isFocused
11
get
11
getRowHeight
11
onMouseDown
11
onAuxClick
11
onMouseUp
11
onMouseEnter
11
onMouseLeave
11
renderAttachments
11
renderNameZone
11
messageHeader
11
E
11
Button
11
ContentInventoryCardHeader
11
GameProfileV2Trailing
11
getWidth
11
renderControls
11
track
11
ensureModule
11
setObservedGamesCallback
11
isEmojiFiltered
11
setBadge
11
setSystemTrayIcon
11
f5
11
editMessage
11
getEmojiURL
11
Nameplate
11
useGradientStyle
11

Hardcoded Discord class names

Discord ships hashed CSS classes in two styles — wrapper_a1b2c3 and name__2ea32 — and rehashes them on class churn. Every token counted here is a selector that silently stops matching when that happens; the fix is a class-module lookup such as BdApi.Webpack.getByKeys(…). Counts are occurrences, not distinct classes: a vendored class-name map inflates a single addon fast.

Remote CSS is now counted. Most themes are a thin @import wrapper whose real CSS lives on a host like *.github.io; that content is fetched, cached, and analysed here, attributed to the importing theme — so shared remote CSS imported by N themes counts under each of the N. This lands a one-time jump in these totals versus older snapshots: a measurement change, not the ecosystem regressing, which is why the tile's delta is neutralised for this data date.

The two columns read differently: Hardcoded classes is raw occurrences — the total blast radius, and the ranking key — while per KB normalizes against analyzed size (store file plus the theme's remote CSS, the same content the tokens were counted over) to show how riddled an addon is regardless of how big it is. A small theme with a handful of hardcoded classes can be denser per KB than a large one that merely vendors a whole class map.

The resilient counterpart within selectors: 62 themes and 26 plugins instead target classes by stable prefix — attribute-substring selectors ([class*="wrapper_"], [class^=; 3,496 selectors in all) that match the name and ignore the hash, so they survive rehashing. Counted over the same content as the tables above: store file plus remote @import CSS attributed per importing theme, and for plugins string literals only (embedded CSS and querySelector arguments), never raw JS text. The other class-attribute operators ($=, ~=, |=) are deliberately excluded — in this corpus they are code-block language matching ([class$="python" i]), not churn resilience.

Themes

ThemeHardcoded classesper KB
vozy 🎀 / surCord
62,81211.6
Theo EwzZer / roundmoledV2
62,32711.6
DevilBro / EmojiReplace
61,39311.7
wq_qt / chillax
59,02911.1
zuzumi / Discord11
57,34010.8
11pixels / dtm-16
16,2555.3
CapnKitten / Material-Discord
11,66813.0
JustCursedRedLuigi / SkeuoCord
10,01812.1
KillYoy / DiscordNight
7,66922.2
11pixels / dtm-08
7,1114.5
Saltssaumure / Tritone
5,36922.8
DevilBro / BasicBackground
4,68610.4
Saltssaumure / NineX
4,34913.9
Eight_P / T1
3,81725.0
Nebulys / WizardUI
3,56611.8
Show 83 more
lolpowerluke / alanWalker
3,53310.1
Elisniper / Glass Wave
3,2298.9
DevilBro / DiscordRecolor
2,60810.0
Gibbu / Fluent
2,3685.1
milbit / OldCord
2,3525.1
SyndiShanX / discorddark
2,34015.8
LeafyLuigi / pyrite
2,04611.1
Izy / Discord Reborn
2,0054.6
ShadowDevilsAvenged / NewAkameGaKill
1,97218.1
ShadowDevilsAvenged / Old-AkameGaKill-Theme
1,95017.6
cruxie / nocturnal
1,92811.0
CapnKitten / Translucence
1,89011.8
CapnKitten / Spotify-Discord
1,88813.2
ShadowDevilsAvenged / Youtube_Nation
1,83017.7
ShadowDevilsAvenged / NewKemonoFriends
1,80117.7
ShadowDevilsAvenged / NewBNHA
1,79917.8
ShadowDevilsAvenged / NewRemTheme
1,76417.5
Izy / Quiet
1,7294.7
ShadowDevilsAvenged / Old-BNHA-Theme
1,72817.2
cruxie / neutron
1,62210.5
DevEvil / RosyNight
1,53513.1
epic1online / Nox
1,53111.8
Zacam / PurpleOnyx
1,35711.7
DevEvil / Azurite
1,3486.7
NyxIsBad / ClearVision-v7-BetterDiscord
1,29514.3
HawkRatio / OperaGX
1,2373.0
FeoreV / FVUI
1,1637.0
Saltssaumure / Exponent
1,10615.3
GH0STP4WZ / virtual-boy
1,08615.4
Saltssaumure / Synthesis
1,01916.4
DevEvil / Dark+
1,0144.7
Saltssaumure / Pesterchum
99428.3
accrazed / NieR-Light-Source
97710.8
snajper.exe / tokyo_midnight
9496.8
DevilBro / BlurpleRecolor
9238.7
Tropical / DarkMatter
9237.4
Gibbu / FrostedGlass
8629.1
cavw / AlternativeVistaAutoUpdate
8457.1
malasangre / roundmoled
8437.1
Saltssaumure / Neobrutal
81117.5
refact0r / system24
7846.7
markchan0225 / RoundedDiscord
77935.4
VaporousCreeper / GGO_Kirito
76314.7
LuckFire / amoled-cord
66811.3
dav#8444 / dtm-18
6510.9
refact0r / midnight
6296.7
Gibbu / MinimalCord
62012.6
ungiglio / discordia
6019.3
bielak / cyberpunk2077
60013.2
Saltssaumure / piOS
56112.5
Mixter213 / MixPack
54819.3
zuzumi / Moon-Rabbits-Dream-About-Virtual
51510.1
DevEvil / Neptune
5135.5
Insta / DiscordPlus
4435.7
snajper.exe / gxcord
4321.3
orblazer / nordic
4128.5
the.rabbit.disabler / aider
3914.0
tnt4me / SleekCord
37411.4
Gibbu / SoftX
3717.9
Sappy / SpotiCord
3615.2
DevEvil / Ocean
3533.6
Elisniper / Material Blue Discord
3351.1
The Commie Axolotl / MaterialDesign
3074.9
DevilBro / ServerColumns
25515.0
the.rabbit.disabler / shine
2306.4
cursedelectric / CursedCord
2240.6
the.rabbit.disabler / ddex4
1994.8
The Commie Axolotl / Ultra
1968.1
puckzxz / NotAnotherAnimeTheme
18014.7
Rock#5429 / Eris
1668.6
DevilBro / SettingsModal
15312.6
Bates / DarkNeon
1346.0
Bates / Fallout4Terminal
1205.2
coolkie / discord-mica
10510.5
programmer2514 / UIRefreshRefresh
10410.9
Gibbu / RadialStatus
858.2
The Commie Axolotl / OSX
844.7
Ashtrath / tokyo-night
482.8
Pix / spectra
480.5
Alex / amethyst
480.1
Alex / kaleidoscope
480.6
Gibbu / HorizontalServerList
299.9
Kaynooo / glass_local
50.8

Plugins

PluginHardcoded classesper KB
KingGamingYT / ActivityFeed
6281.5
Knew / EmbedMoreImages
281.4
programmer2514 / CollapsibleUI
30.0
Zerebos / BetterFormattingRedux
10.0

CSS custom properties — the resilient counterpart

The healthy inverse of hardcoded classes. A theme built on Discord's CSS variables (var(--background-base-low)) rides out class churn; one built on .wrapper_a1b2c3 does not. 159 addons consume at least one of Discord's 4,945 live variables; 99 define (reskin) one of those names, and 128 define custom properties at all (6,623 distinct names — overwhelmingly their own palettes). Consumption and definition are measured from the corpus; the overlap column is diffed against a checked-in manifest of Discord's current variables (captured 2026-07-19).

Consuming Discord variables resilient

Live Discord custom properties read via var(), by addon. These survive class-name rehashing.

VariableAddons
--text-muted
49
--background-base-lower
30
--font-primary
30
--text-strong
29
--text-default
29
--border-subtle
29
--space-xs
28
--font-display
27
--background-accent
26
--background-secondary-alt
26
--status-danger
26
--channels-default
23
--elevation-high
22
--custom-app-top-bar-height
21
--radius-sm
21
Show 517 more
--custom-guild-list-width
21
--custom-guild-sidebar-width
19
--background-base-low
19
--interactive-muted
17
--text-subtle
16
--white
16
--brand-500
15
--background-base-lowest
15
--interactive-text-default
14
--space-8
13
--text-link
13
--channeltextarea-background
12
--space-md
12
--background-surface-high
12
--elevation-low
11
--elevation-stroke
10
--custom-channel-header-height
10
--interactive-text-hover
10
--background-mod-subtle
10
--interactive-text-active
10
--font-code
10
--background-mod-strong
10
--status-positive
9
--scrollbar-auto-thumb
9
--space-12
9
--guildbar-avatar-size
9
--space-16
9
--primary-300
9
--space-sm
9
--input-border-default
9
--input-background-default
9
--white-500
8
--primary-500
8
--space-xxs
8
--spine-width
8
--scrollbar-thin-thumb
8
--background-surface-highest
8
--white-500-hsl
7
--scrollbar-auto-track
7
--space-4
7
--custom-guild-list-padding
7
--space-32
7
--control-primary-background-default
7
--status-positive-background
7
--radius-xs
7
--scrollbar-thin-track
7
--elevation-medium
7
--background-surface-higher
7
--border-normal
7
--black-500-hsl
6
--space-24
6
--background-mod-normal
6
--radius-md
6
--border-strong
6
--guild-boosting-pink
6
--custom-member-list-width
6
--status-warning
6
--interactive-background-hover
6
--brand-560
5
--green-360
5
--primary-660-hsl
5
--custom-emoji-sprite-bg-position
5
--custom-emoji-sprite-bg-size
5
--custom-panels-spacing
5
--custom-channel-textarea-text-area-height
5
--custom-button-button-sm-height
5
--channel-icon
5
--icon-muted
5
--custom-message-margin-horizontal
5
--decoration-to-avatar-ratio
5
--tooltip-pointer-bg
5
--border-muted
5
--background-gradient-highest
5
--control-primary-background-hover
5
--control-primary-background-active
5
--primary-600
4
--black-500
4
--primary-800-hsl
4
--brand-360
4
--primary-700-hsl
4
--background-feedback-warning
4
--chat-avatar-size
4
--user-profile-border
4
--control-primary-text-default
4
--control-secondary-background-default
4
--interactive-background-selected
4
--custom-theme-base-color
4
--radius-round
4
--space-lg
4
--primary-600-hsl
4
--font-weight-semibold
4
--radius-lg
4
--input-border-hover
4
--background-mod-muted
4
--chat-resize-handle-width
4
--red-400
3
--primary-830-hsl
3
--red-400-hsl
3
--primary-630
3
--red-500
3
--primary-430
3
--primary-400
3
--blue-345
3
--primary-500-hsl
3
--brand-200
3
--chat-markup-line-height
3
--status-positive-text
3
--bar-offset
3
--space-xl
3
--control-secondary-text-default
3
--custom-premium-colors-premium-gradient-tier-2-diagonal
3
--custom-standard-sidebar-view-sidebar-content-scrollbar-padding
3
--text-feedback-critical
3
--text-brand
3
--mention-foreground
3
--mention-background
3
--modal-background
3
--space-xxl
3
--message-highlight-background-default
3
--custom-status-bubble-background-color
3
--custom-emoji-picker-border-radius
3
--custom-user-profile-banner-height
3
--neutral-40
3
--neutral-1
3
--brand-700
3
--brand-600
3
--background-gradient-low
3
--font-weight-bold
3
--black-hsl
3
--input-border-active
3
--primary-900-hsl
3
--icon-subtle
3
--user-profile-overlay-background
3
--primary-630-hsl
3
--control-primary-border-default
3
--control-primary-border-hover
3
--control-primary-text-hover
3
--control-primary-border-active
3
--control-primary-text-active
3
--app-frame-border
3
--interactive-icon-default
3
--control-secondary-background-hover
3
--icon-feedback-warning
3
--custom-input-text-color
3
--primary-700
2
--red-430
2
--red-460
2
--green-430
2
--primary-200
2
--brand-500-hsl
2
--brand-530-hsl
2
--brand-530
2
--primary-530
2
--primary-800
2
--primary-660
2
--background-feedback-critical
2
--shadow-ledge
2
--gutter
2
--guild-boosting-purple
2
--user-profile-background-hover
2
--neutral-9
2
--divider-color
2
--reply-spacing
2
--modal-footer-background
2
--__current--spoiler-background-color
2
--custom-theme-base-color-amount
2
--modal-vertical-padding
2
--modal-horizontal-padding
2
--premium-tier-0-header-gradient-1
2
--premium-tier-0-header-gradient-2
2
--premium-tier-0-header-gradient-3
2
--premium-tier-0-header-gradient-4
2
--premium-tier-0-header-gradient-5
2
--custom-message-spacing-vertical-container-cozy
2
--custom-preview-background
2
--app-border-frame
2
--custom-channel-textarea-text-area-max-height
2
--opacity-black-16
2
--control-critical-primary-border-default
2
--control-critical-primary-background-active
2
--custom-folder-background
2
--bar-size
2
--grabber-size
2
--guildbar-folder-size
2
--space-6
2
--chat-background-default
2
--neutral-97-hsl
2
--neutral-97
2
--neutral-83-hsl
2
--neutral-83
2
--neutral-76-hsl
2
--neutral-76
2
--neutral-72-hsl
2
--neutral-72
2
--neutral-69-hsl
2
--neutral-69
2
--neutral-66-hsl
2
--neutral-66
2
--neutral-49-hsl
2
--neutral-49
2
--neutral-45-hsl
2
--neutral-45
2
--neutral-40-hsl
2
--neutral-31-hsl
2
--neutral-31
2
--neutral-19-hsl
2
--neutral-19
2
--neutral-15-hsl
2
--neutral-15
2
--neutral-12-hsl
2
--neutral-9-hsl
2
--neutral-8-hsl
2
--neutral-4-hsl
2
--neutral-1-hsl
2
--blurple-49-hsl
2
--blurple-49
2
--blurple-54-hsl
2
--blurple-54
2
--blurple-65-hsl
2
--blurple-87-hsl
2
--blurple-37-hsl
2
--blurple-37
2
--blurple-1-hsl
2
--blurple-4-hsl
2
--blurple-4
2
--green-new-61-hsl
2
--red-new-61-hsl
2
--yellow-new-57-hsl
2
--blue-new-31-hsl
2
--blue-new-35-hsl
2
--neutral-4
2
--neutral-16
2
--brand-400
2
--control-critical-primary-background-default
2
--shadow-high
2
--custom-theme-text-color
2
--opacity-white-8
2
--border-focus
2
--custom-folder-item-animation-duration
2
--custom-standard-sidebar-view-standard-padding
2
--control-brand-foreground
2
--primary-300-hsl
2
--background-gradient-high
2
--background-gradient-higher
2
--background-gradient-lowest
2
--neutral-80
2
--neutral-95
2
--legacy-elevation-high
2
--background-gradient-lower
2
--shadow-low
2
--background-brand
2
--interactive-background-active
2
--control-critical-primary-text-default
2
--icon-strong
2
--black
2
--neutral-79
2
--status-warning-text
2
--message-mentioned-background-default
2
--control-overlay-secondary-background-default
2
--primary-130
2
--space-40
2
--platform-spotify
2
--blue-500
2
--blue-530
2
--primary-530-hsl
2
--primary-560-hsl
2
--primary-730-hsl
2
--primary-760-hsl
2
--primary-860-hsl
2
--control-secondary-border-default
2
--control-secondary-border-hover
2
--control-secondary-text-hover
2
--control-secondary-background-active
2
--control-secondary-border-active
2
--control-secondary-text-active
2
--text-feedback-warning
2
--background-feedback-info
2
--icon-feedback-info
2
--text-feedback-info
2
--primary-830
1
--red-530
1
--green-530
1
--green-500
1
--primary-900
1
--transparent-hsl
1
--blue-345-hsl
1
--green-360-hsl
1
--brand-260
1
--primary-560
1
--primary-730
1
--green-460
1
--brand-330
1
--yellow-300
1
--primary-360
1
--red-345
1
--green-330
1
--brand-700-hsl
1
--brand-800-hsl
1
--shadow-medium
1
--background-feedback-positive
1
--guild-boosting-blue
1
--custom-modal-padding-top
1
--custom-modal-padding-md
1
--opacity-white-12
1
--user-profile-toolbar-background
1
--custom-folder-padding
1
--status-warning-background
1
--premium-tier-2-purple-hsl
1
--__current--spoiler-content-opacity
1
--premium-tier-2-purple-for-gradients
1
--yellow-300-hsl
1
--red-new-28
1
--background-gradient-chat
1
--custom-forum-composer-attachments-attachment-size
1
--font-headline
1
--hypesquad-house-1
1
--hypesquad-house-2
1
--hypesquad-house-3
1
--custom-standard-sidebar-view-sidebar-total-width
1
--opacity-red-12
1
--custom-horizontal-padding
1
--card-background-default
1
--custom-game-widget-grid-row-size
1
--custom-category-channel-space-before-category
1
--blurple-1
1
--icon-status-idle
1
--neutral-11-hsl
1
--neutral-2-hsl
1
--blurple-70-hsl
1
--neutral-35
1
--neutral-23
1
--brand-460
1
--custom-message-margin-left-content-cozy
1
--custom-message-avatar-decoration-size
1
--custom-message-avatar-size
1
--spine-default
1
--brand-800
1
--radius-xxl
1
--red-800
1
--red-300
1
--red-360
1
--red-700
1
--red-600
1
--red-100
1
--brand-100
1
--brand-300
1
--font-weight-normal
1
--size-sm
1
--custom-emoji-picker-constants-unicode-category-shortcut-height
1
--space-0
1
--radius-none
1
--input-placeholder-text-default
1
--brand-430
1
--notice-background-critical
1
--custom-guild-settings-roles-intro-roles-transition
1
--custom-guild-settings-roles-intro-pause-transition
1
--custom-guild-settings-roles-intro-background-transition
1
--custom-button-link-underline-width
1
--custom-button-link-underline-offset
1
--premium-tier-2-purple
1
--premium-tier-2-pink
1
--custom-standard-sidebar-view-sidebar-content-width
1
--primary-230
1
--custom-theme-text-color-amount
1
--neutral-22
1
--neutral-84
1
--neutral-89
1
--neutral-5
1
--neutral-87
1
--neutral-96
1
--neutral-98
1
--neutral-100
1
--legacy-elevation-border
1
--legacy-elevation-low
1
--font-weight-medium
1
--space-20
1
--shadow-border
1
--custom-emoji-picker-constants-emoji-picker-height
1
--custom-emoji-picker-constants-min-emoji-picker-width
1
--opacity-black-8
1
--opacity-black-28
1
--opacity-black-60
1
--custom-go-live-modal-art-height
1
--opacity-black-20
1
--control-critical-primary-background-hover
1
--control-critical-primary-border-hover
1
--control-critical-primary-text-hover
1
--control-critical-primary-border-active
1
--control-critical-primary-text-active
1
--space-30
1
--background-scrim
1
--custom-theme-base-color-hsl
1
--custom-chat-input-margin-bottom
1
--opacity-8
1
--opacity-4
1
--opacity-16
1
--opacity-20
1
--neutral-88
1
--opacity-12
1
--opacity-24
1
--neutral-95-hsl
1
--devtools-sidebar-width
1
--blue-430
1
--chat-text-muted
1
--brand-05a
1
--message-mentioned-background-hover
1
--brand-10a
1
--message-background-hover
1
--custom-menu-viewport-padding
1
--control-overlay-secondary-background-hover
1
--user-profile-overlay-background-hover
1
--custom-user-profile-top-layer-z-index
1
--checkbox-background-default
1
--checkbox-border-default
1
--checkbox-background-selected-default
1
--checkbox-border-selected-default
1
--blurple-50
1
--profile-gradient-start
1
--profile-gradient-end
1
--interactive-icon-hover
1
--blue-560
1
--border-width
1
--brand-160
1
--icon-default
1
--font-weight-semibold-1x-light-theme
1
--size-xxs
1
--custom-poll-style-vote-percentage
1
--custom-input-background-color
1
--custom-input-border-color
1
--select-option-height
1
--custom-input-hover-border-color
1
--custom-input-focus-border-color
1
--red-100-hsl
1
--red-130-hsl
1
--red-160-hsl
1
--red-200-hsl
1
--red-230-hsl
1
--red-260-hsl
1
--red-300-hsl
1
--red-330-hsl
1
--red-345-hsl
1
--red-360-hsl
1
--red-430-hsl
1
--red-460-hsl
1
--red-500-hsl
1
--red-530-hsl
1
--red-560-hsl
1
--red-600-hsl
1
--red-630-hsl
1
--red-660-hsl
1
--red-700-hsl
1
--red-730-hsl
1
--red-760-hsl
1
--red-800-hsl
1
--red-830-hsl
1
--red-860-hsl
1
--red-900-hsl
1
--white-hsl
1
--primary-100-hsl
1
--primary-130-hsl
1
--primary-160-hsl
1
--primary-200-hsl
1
--primary-230-hsl
1
--primary-260-hsl
1
--primary-330-hsl
1
--primary-345-hsl
1
--primary-360-hsl
1
--primary-400-hsl
1
--primary-430-hsl
1
--primary-460-hsl
1
--primary-645-hsl
1
--custom-margin-margin-small
1
--custom-notice-text
1
--custom-app-top-bar-item-radius
1
--text-feedback-positive
1
--status-online
1
--interactive-icon-active
1
--user-profile-note-background-focus
1
--orange-360
1
--custom-emoji-picker-constants-emoji-size-medium
1
--custom-emoji-picker-constants-emoji-container-padding-vertical
1
--custom-guild-banner-height
1
--orange-330
1
--neutral-8
1
--neutral-36-hsl
1
--neutral-36
1
--neutral-63-hsl
1
--neutral-79-hsl
1
--green-new-61
1
--green-new-87-hsl
1
--green-new-87
1
--green-new-91-hsl
1
--green-new-91
1
--red-new-61
1
--red-new-70-hsl
1
--red-new-70
1
--red-new-78-hsl
1
--red-new-78
1
--yellow-new-57
1
--blue-new-31
1
--blue-new-35
1
--blurple-87
1
--neutral-99
1
--blurple-65
1
--green-new-25
1
--orange-new-63
1
--green-new-62
1
--green-new-55-hsl
1
--blurple-58
1
--blurple-52
1
--blurple-48
1
--brand-900
1
--message-highlight-background-hover
1
--green-new-44-hsl
1
--green-560
1
--green-760
1
--orange-500
1

Reskinning Discord variables overlap

Addons that define a name Discord also ships — the mechanism themes use to retheme Discord, and the thing that breaks silently when Discord renames or drops the variable.

VariableAddons
--text-link
51
--text-muted
47
--background-secondary-alt
47
--background-accent
44
--font-primary
41
--scrollbar-auto-thumb
40
--font-display
40
--channels-default
39
--interactive-muted
39
--scrollbar-auto-track
39
--text-brand
38
--channeltextarea-background
37
--scrollbar-thin-thumb
36
--modal-background
34
--scrollbar-thin-track
30
Show 1447 more
--scrollbar-auto-scrollbar-color-thumb
29
--control-brand-foreground
29
--modal-footer-background
29
--scrollbar-auto-scrollbar-color-track
27
--status-danger
26
--brand-500
25
--channel-icon
24
--background-surface-high
23
--background-base-low
22
--background-base-lower
21
--background-base-lowest
21
--background-surface-higher
20
--elevation-low
19
--logo-primary
19
--font-code
19
--text-default
19
--elevation-high
18
--border-subtle
18
--control-brand-foreground-new
18
--status-positive-background
18
--mention-background
17
--mention-foreground
17
--status-positive
16
--background-mod-normal
16
--background-surface-highest
16
--brand-360
16
--elevation-stroke
15
--textbox-markdown-syntax
15
--button-outline-brand-background-hover
15
--button-outline-brand-border-active
15
--status-warning
15
--status-warning-background
15
--background-mod-subtle
15
--elevation-medium
15
--blurple-50
15
--font-headline
14
--custom-channel-textarea-text-area-height
14
--background-brand
14
--chat-background-default
14
--custom-app-top-bar-height
14
--home-background
13
--status-positive-text
13
--status-warning-text
13
--text-strong
13
--control-primary-background-default
13
--control-primary-background-hover
13
--channel-text-area-placeholder
12
--interactive-text-default
12
--input-border-active
12
--background-mod-strong
12
--message-highlight-background-default
12
--border-strong
11
--button-danger-background-disabled
11
--user-profile-overlay-background
11
--text-subtle
11
--icon-muted
11
--green-360
11
--card-background-default
11
--checkbox-background-selected-default
11
--message-mentioned-background-hover
11
--brand-530
11
--background-code
11
--brand-260
11
--brand-600
11
--button-outline-primary-text
10
--chat-border
10
--spoiler-hidden-background
10
--radius-sm
10
--icon-strong
10
--button--underline-color
10
--control-primary-text-default
10
--brand-560
10
--message-mentioned-background-default
10
--guild-header-text-shadow
9
--chat-background
9
--radius-round
9
--interactive-icon-default
9
--divider-color
9
--border-normal
9
--custom-guild-list-width
9
--control-primary-background-active
9
--brand-160
9
--brand-300
9
--brand-460
9
--brand-630
9
--brand-660
9
--brand-700
9
--brand-730
9
--brand-800
9
--brand-900
9
--brand-10a
9
--blurple-60
9
--spoiler-revealed-background
8
--radius-xs
8
--radius-md
8
--radius-lg
8
--selected-tab-item-color
8
--icon-subtle
8
--primary-630
8
--background-mod-muted
8
--bg-surface-raised
8
--interactive-background-hover
8
--chat-text-muted
8
--red-400
8
--guild-boosting-blue
8
--guild-boosting-purple
8
--icon-default
8
--text-feedback-critical
8
--interactive-text-active
8
--tooltip-pointer-bg
8
--border-focus
8
--icon-link
8
--control-primary-text-active
8
--control-primary-text-hover
8
--brand-100
8
--brand-130
8
--brand-200
8
--brand-230
8
--brand-330
8
--brand-400
8
--brand-430
8
--brand-760
8
--brand-830
8
--brand-860
8
--premium-tier-2-pink-for-gradients
8
--premium-tier-2-purple-for-gradients
8
--premium-tier-2-purple-for-gradients-2
8
--guild-boosting-pink
8
--blurple-1
8
--message-background-hover
8
--white
8
--radius-xl
7
--radius-xxl
7
--control-secondary-background-default
7
--control-secondary-background-hover
7
--app-border-frame
7
--white-500
7
--text-feedback-positive
7
--notice-text-warning
7
--background-feedback-notification
7
--interactive-text-hover
7
--input-background-default
7
--input-border-default
7
--checkbox-border-selected-default
7
--brand-345
7
--brand-05a
7
--brand-15a
7
--brand-20a
7
--brand-25a
7
--brand-30a
7
--brand-35a
7
--brand-40a
7
--brand-45a
7
--brand-50a
7
--brand-55a
7
--brand-60a
7
--brand-65a
7
--brand-70a
7
--brand-75a
7
--brand-80a
7
--brand-85a
7
--brand-90a
7
--brand-95a
7
--premium-perk-blue
7
--premium-perk-pink
7
--opacity-blurple-32
7
--blurple-4
7
--blurple-8
7
--blurple-10
7
--blurple-25
7
--blurple-26
7
--blurple-27
7
--blurple-28
7
--blurple-29
7
--blurple-37
7
--blurple-44
7
--blurple-48
7
--blurple-49
7
--blurple-52
7
--blurple-54
7
--blurple-58
7
--blurple-59
7
--blurple-65
7
--blurple-70
7
--blurple-87
7
--custom-chat-input-margin-bottom
6
--gutter
6
--primary-500
6
--radio-background-selected-default
6
--input-border-hover
6
--text-feedback-warning
6
--icon-feedback-warning
6
--notice-text-positive
6
--notice-text-critical
6
--notice-text-info
6
--badge-notification-background
6
--interactive-icon-active
6
--interactive-icon-hover
6
--app-frame-border
6
--premium-tier-0-blue
6
--premium-tier-0-blue-for-gradients
6
--premium-tier-0-purple
6
--premium-tier-0-purple-for-gradients
6
--premium-tier-1-blue-for-gradients
6
--premium-tier-1-dark-blue-for-gradients
6
--premium-tier-2-pink
6
--premium-tier-2-pink-for-gradients-2
6
--premium-tier-2-purple
6
--guild-boosting-blue-for-gradients
6
--guild-boosting-purple-for-gradients
6
--opacity-blurple-8
6
--opacity-blurple-16
6
--opacity-blurple-24
6
--opacity-blurple-60
6
--interactive-background-selected
6
--control-secondary-text-default
6
--primary-600
5
--status-online
5
--shadow-medium
5
--primary-700
5
--radio-background-selected-hover
5
--checkbox-background-selected-hover
5
--radius-none
5
--guildbar-avatar-size
5
--custom-poll-style-vote-percentage
5
--yellow-360
5
--border-muted
5
--card-secondary-bg
5
--shadow-border
5
--shadow-low
5
--premium-tier-1-blue
5
--premium-tier-1-purple
5
--opacity-blurple-1
5
--opacity-blurple-4
5
--opacity-blurple-12
5
--opacity-blurple-20
5
--opacity-blurple-28
5
--opacity-blurple-36
5
--opacity-blurple-40
5
--opacity-blurple-44
5
--opacity-blurple-48
5
--opacity-blurple-52
5
--opacity-blurple-56
5
--opacity-blurple-64
5
--opacity-blurple-68
5
--opacity-blurple-72
5
--opacity-blurple-76
5
--opacity-blurple-80
5
--opacity-blurple-84
5
--opacity-blurple-88
5
--opacity-blurple-92
5
--opacity-blurple-96
5
--blurple-2
5
--blurple-3
5
--blurple-5
5
--blurple-6
5
--blurple-7
5
--blurple-9
5
--blurple-11
5
--blurple-12
5
--blurple-13
5
--blurple-14
5
--blurple-15
5
--blurple-16
5
--blurple-17
5
--blurple-18
5
--blurple-19
5
--blurple-20
5
--blurple-21
5
--blurple-22
5
--blurple-23
5
--blurple-24
5
--blurple-30
5
--blurple-31
5
--blurple-32
5
--blurple-33
5
--blurple-34
5
--blurple-35
5
--blurple-36
5
--blurple-38
5
--blurple-39
5
--blurple-40
5
--blurple-41
5
--blurple-42
5
--blurple-43
5
--blurple-45
5
--blurple-46
5
--blurple-47
5
--blurple-51
5
--blurple-53
5
--blurple-55
5
--blurple-56
5
--blurple-57
5
--blurple-61
5
--blurple-62
5
--blurple-63
5
--blurple-64
5
--blurple-66
5
--blurple-67
5
--blurple-68
5
--blurple-69
5
--blurple-71
5
--blurple-72
5
--blurple-73
5
--blurple-74
5
--blurple-75
5
--blurple-76
5
--blurple-77
5
--blurple-78
5
--blurple-79
5
--blurple-80
5
--blurple-81
5
--blurple-82
5
--blurple-83
5
--blurple-84
5
--blurple-85
5
--blurple-86
5
--blurple-88
5
--blurple-89
5
--blurple-90
5
--blurple-91
5
--blurple-92
5
--blurple-93
5
--blurple-94
5
--blurple-95
5
--blurple-96
5
--blurple-97
5
--blurple-98
5
--blurple-99
5
--primary-400
5
--spine-default
5
--interactive-background-active
5
--message-highlight-background-hover
5
--background-code-addition
5
--background-code-deletion
5
--custom-theme-base-color-amount
5
--custom-theme-text-color-amount
5
--background-feedback-critical
5
--notice-background-critical
5
--notice-background-info
5
--notice-background-warning
5
--checkbox-border-default
5
--checkbox-background-default
5
--profile-gradient-role-pill-background
4
--brand-500-hsl
4
--brand-700-hsl
4
--brand-800-hsl
4
--custom-channel-header-height
4
--custom-user-profile-theme-padding
4
--grabber-size
4
--user-profile-overlay-background-hover
4
--__header-bar-background
4
--green-330
4
--custom-status-bubble-background
4
--custom-status-bubble-background-color
4
--icon-feedback-positive
4
--control-critical-secondary-text-default
4
--card-primary-pressed-bg
4
--card-secondary-pressed-bg
4
--shadow-border-filter
4
--shadow-button-overlay
4
--shadow-high
4
--shadow-high-filter
4
--shadow-ledge
4
--shadow-ledge-filter
4
--shadow-low-filter
4
--shadow-low-active
4
--shadow-low-active-filter
4
--shadow-low-hover
4
--shadow-low-hover-filter
4
--shadow-medium-filter
4
--shadow-mobile-navigator-x
4
--shadow-mobile-navigator-x-filter
4
--shadow-top-high
4
--shadow-top-high-filter
4
--shadow-top-ledge
4
--shadow-top-ledge-filter
4
--shadow-top-low
4
--shadow-top-low-filter
4
--guildbar-folder-size
4
--control-overlay-secondary-background-default
4
--black-500
4
--custom-member-list-width
4
--custom-theme-base-color
4
--custom-theme-text-color
4
--control-secondary-background-active
4
--red-430
4
--border-feedback-critical
4
--input-placeholder-text-default
4
--custom-channel-members-bg
4
--text-feedback-info
4
--background-feedback-positive
4
--background-feedback-warning
4
--background-feedback-info
4
--icon-feedback-critical
4
--notice-background-positive
4
--icon-voice-muted
4
--checkbox-icon-active
4
--radio-thumb-background-active
4
--yellow-300
4
--red-500
4
--primary-800
4
--progressbar-indicator-background
4
--spoiler-hidden-background-hover
4
--primary-630-hsl
3
--black
3
--profile-gradient-note-background
3
--profile-gradient-overlay
3
--profile-gradient-overlay-synced-with-user-theme
3
--profile-gradient-role-pill-border
3
--profile-gradient-section-box
3
--bar-size
3
--spine-width
3
--user-profile-toolbar-background
3
--user-profile-background-hover
3
--legacy-elevation-high
3
--legacy-elevation-border
3
--custom-poll-style-border
3
--status-speaking
3
--custom-guild-list-padding
3
--custom-horizontal-padding
3
--control-overlay-secondary-background-hover
3
--primary-600-hsl
3
--gradient-progress-pill-background
3
--neutral-76
3
--neutral-72
3
--neutral-47
3
--neutral-9
3
--white-500-hsl
3
--black-500-hsl
3
--control-overlay-secondary-background-active
3
--reaction-border-reacted-default
3
--reaction-background-reacted-default
3
--reaction-text-reacted-default
3
--badge-background-brand
3
--control-primary-border-hover
3
--text-overlay-light
3
--app-frame-background
3
--text-status-online
3
--text-status-idle
3
--text-status-dnd
3
--text-status-offline
3
--control-secondary-border-default
3
--control-secondary-text-hover
3
--control-critical-primary-background-default
3
--control-critical-primary-background-hover
3
--control-critical-primary-background-active
3
--control-critical-primary-text-default
3
--control-critical-primary-text-hover
3
--control-critical-secondary-background-default
3
--control-critical-secondary-background-hover
3
--control-critical-secondary-background-active
3
--control-critical-secondary-border-default
3
--control-critical-secondary-border-hover
3
--control-critical-secondary-border-active
3
--control-critical-secondary-text-hover
3
--control-critical-secondary-text-active
3
--icon-status-online
3
--icon-status-idle
3
--icon-status-dnd
3
--icon-status-offline
3
--icon-feedback-info
3
--message-automod-background-default
3
--message-automod-background-hover
3
--__spoiler-background-color--hidden
3
--input-text-default
3
--primary-660
3
--badge-background-default
3
--custom-notice-text
3
--__spoiler-background-color--revealed
3
--polls-victor-fill
3
--polls-voted-fill
3
--custom-icon-offset
3
--badge-expressive-text-default
3
--content-inventory-media-seekbar-container
3
--content-inventory-overlay-text-primary
3
--content-inventory-overlay-text-secondary
3
--control-expressive-text-default
3
--control-overlay-primary-background-default
3
--control-overlay-primary-background-hover
3
--control-overlay-primary-border-default
3
--control-overlay-primary-border-hover
3
--control-overlay-primary-text-default
3
--control-overlay-primary-text-hover
3
--brand-100-hsl
3
--brand-130-hsl
3
--brand-160-hsl
3
--brand-200-hsl
3
--brand-230-hsl
3
--brand-260-hsl
3
--brand-300-hsl
3
--brand-330-hsl
3
--brand-345-hsl
3
--brand-360-hsl
3
--brand-400-hsl
3
--brand-430-hsl
3
--brand-460-hsl
3
--brand-530-hsl
3
--brand-560-hsl
3
--brand-600-hsl
3
--brand-630-hsl
3
--brand-660-hsl
3
--brand-730-hsl
3
--brand-760-hsl
3
--brand-830-hsl
3
--brand-860-hsl
3
--brand-900-hsl
3
--red-new-50
3
--primary-645
2
--custom-input-border-color
2
--reply-spacing
2
--space-4
2
--space-8
2
--__current--spoiler-content-opacity
2
--__current--spoiler-text-color
2
--neutral-97-hsl
2
--neutral-97
2
--neutral-99-hsl
2
--neutral-99
2
--neutral-83-hsl
2
--neutral-83
2
--neutral-84-hsl
2
--neutral-84
2
--neutral-87-hsl
2
--neutral-87
2
--neutral-91-hsl
2
--neutral-91
2
--neutral-92-hsl
2
--neutral-92
2
--neutral-95-hsl
2
--neutral-95
2
--neutral-76-hsl
2
--neutral-75-hsl
2
--neutral-75
2
--neutral-79-hsl
2
--neutral-79
2
--neutral-72-hsl
2
--neutral-73-hsl
2
--neutral-73
2
--neutral-74-hsl
2
--neutral-74
2
--neutral-69-hsl
2
--neutral-69
2
--neutral-70-hsl
2
--neutral-70
2
--neutral-71-hsl
2
--neutral-71
2
--neutral-66-hsl
2
--neutral-66
2
--neutral-62-hsl
2
--neutral-62
2
--neutral-63-hsl
2
--neutral-63
2
--neutral-64-hsl
2
--neutral-64
2
--neutral-65-hsl
2
--neutral-65
2
--neutral-49-hsl
2
--neutral-49
2
--neutral-50-hsl
2
--neutral-50
2
--neutral-59-hsl
2
--neutral-59
2
--neutral-60-hsl
2
--neutral-60
2
--neutral-45-hsl
2
--neutral-45
2
--neutral-46-hsl
2
--neutral-46
2
--neutral-47-hsl
2
--neutral-40-hsl
2
--neutral-40
2
--neutral-36-hsl
2
--neutral-36
2
--neutral-37-hsl
2
--neutral-37
2
--neutral-38-hsl
2
--neutral-38
2
--neutral-39-hsl
2
--neutral-39
2
--neutral-31-hsl
2
--neutral-31
2
--neutral-32-hsl
2
--neutral-32
2
--neutral-34-hsl
2
--neutral-34
2
--neutral-19-hsl
2
--neutral-19
2
--neutral-22-hsl
2
--neutral-22
2
--neutral-23-hsl
2
--neutral-23
2
--neutral-27-hsl
2
--neutral-27
2
--neutral-28-hsl
2
--neutral-28
2
--neutral-29-hsl
2
--neutral-29
2
--neutral-15-hsl
2
--neutral-15
2
--neutral-16-hsl
2
--neutral-16
2
--neutral-12-hsl
2
--neutral-12
2
--neutral-11-hsl
2
--neutral-11
2
--neutral-9-hsl
2
--neutral-8-hsl
2
--neutral-8
2
--neutral-4-hsl
2
--neutral-4
2
--neutral-2-hsl
2
--neutral-2
2
--neutral-1-hsl
2
--neutral-1
2
--blurple-49-hsl
2
--blurple-50-hsl
2
--blurple-52-hsl
2
--blurple-54-hsl
2
--blurple-58-hsl
2
--blurple-59-hsl
2
--blurple-60-hsl
2
--blurple-65-hsl
2
--blurple-70-hsl
2
--blurple-87-hsl
2
--blurple-37-hsl
2
--blurple-44-hsl
2
--blurple-48-hsl
2
--blurple-25-hsl
2
--blurple-26-hsl
2
--blurple-27-hsl
2
--blurple-28-hsl
2
--blurple-29-hsl
2
--blurple-1-hsl
2
--blurple-4-hsl
2
--blurple-8-hsl
2
--blurple-10-hsl
2
--green-new-61-hsl
2
--green-new-61
2
--red-new-61-hsl
2
--red-new-61
2
--yellow-new-57-hsl
2
--yellow-new-57
2
--blue-new-31-hsl
2
--blue-new-31
2
--blue-new-35-hsl
2
--blue-new-35
2
--custom-message-margin-left-content-cozy
2
--font-weight-light
2
--font-weight-semibold
2
--font-weight-bold
2
--__spoiler-warning-background-color
2
--badge-text-brand
2
--green-300
2
--blue-500
2
--blue-530
2
--primary-100
2
--primary-200
2
--primary-300
2
--premium-perk-yellow
2
--premium-perk-purple
2
--premium-perk-dark-blue
2
--premium-perk-light-blue
2
--premium-perk-green
2
--premium-perk-orange
2
--legacy-elevation-low
2
--shadow-button-overlay-filter
2
--blue-345
2
--custom-notice-background
2
--__spoiler-background-color--hidden--hover
2
--app-message-embed-secondary-text
2
--background-scrim
2
--background-scrim-lightbox
2
--badge-expressive-background-default
2
--badge-text-default
2
--checkbox-background-active
2
--checkbox-background-hover
2
--checkbox-border-active
2
--checkbox-border-hover
2
--checkbox-border-selected-hover
2
--chip-blurple-dark-background
2
--chip-blurple-dark-text
2
--chip-blurple-light-background
2
--chip-blurple-light-text
2
--chip-blurple-medium-background
2
--chip-blurple-medium-text
2
--chip-gray-dark-background
2
--chip-gray-dark-text
2
--chip-gray-light-background
2
--chip-gray-light-text
2
--chip-gray-medium-background
2
--chip-gray-medium-text
2
--chip-green-dark-background
2
--chip-green-dark-text
2
--chip-green-light-background
2
--chip-green-light-text
2
--chip-green-medium-background
2
--chip-green-medium-text
2
--chip-orange-dark-background
2
--chip-orange-dark-text
2
--chip-orange-light-background
2
--chip-orange-light-text
2
--chip-orange-medium-background
2
--chip-orange-medium-text
2
--chip-pink-dark-background
2
--chip-pink-dark-text
2
--chip-pink-light-background
2
--chip-pink-light-text
2
--chip-pink-medium-background
2
--chip-pink-medium-text
2
--chip-purple-dark-background
2
--chip-purple-dark-text
2
--chip-purple-light-background
2
--chip-purple-light-text
2
--chip-purple-medium-background
2
--chip-purple-medium-text
2
--chip-red-dark-background
2
--chip-red-dark-text
2
--chip-red-light-background
2
--chip-red-light-text
2
--chip-red-medium-background
2
--chip-red-medium-text
2
--chip-yellow-dark-background
2
--chip-yellow-dark-text
2
--chip-yellow-light-background
2
--chip-yellow-light-text
2
--chip-yellow-medium-background
2
--chip-yellow-medium-text
2
--context-menu-backdrop-background
2
--control-critical-primary-border-active
2
--control-critical-primary-border-default
2
--control-critical-primary-border-hover
2
--control-critical-primary-icon-active
2
--control-critical-primary-icon-default
2
--control-critical-primary-icon-hover
2
--control-critical-primary-text-active
2
--control-critical-secondary-icon-active
2
--control-critical-secondary-icon-default
2
--control-critical-secondary-icon-hover
2
--control-expressive-background-active
2
--control-expressive-background-default
2
--control-expressive-background-hover
2
--control-expressive-border-active
2
--control-expressive-border-default
2
--control-expressive-border-hover
2
--control-expressive-icon-active
2
--control-expressive-icon-default
2
--control-expressive-icon-hover
2
--control-expressive-text-active
2
--control-expressive-text-hover
2
--control-icon-only-background-active
2
--control-icon-only-background-hover
2
--control-icon-only-border-active
2
--control-icon-only-border-hover
2
--control-icon-only-icon-active
2
--control-icon-only-icon-default
2
--control-icon-only-icon-hover
2
--control-overlay-primary-background-active
2
--control-overlay-primary-border-active
2
--control-overlay-primary-icon-active
2
--control-overlay-primary-icon-default
2
--control-overlay-primary-icon-hover
2
--control-overlay-primary-text-active
2
--control-overlay-secondary-border-active
2
--control-overlay-secondary-border-default
2
--control-overlay-secondary-border-hover
2
--control-overlay-secondary-icon-active
2
--control-overlay-secondary-icon-default
2
--control-overlay-secondary-icon-hover
2
--control-overlay-secondary-text-active
2
--control-overlay-secondary-text-default
2
--control-overlay-secondary-text-hover
2
--control-primary-border-active
2
--control-primary-border-default
2
--control-primary-icon-active
2
--control-primary-icon-default
2
--control-primary-icon-hover
2
--control-secondary-border-active
2
--control-secondary-border-hover
2
--control-secondary-icon-active
2
--control-secondary-icon-default
2
--control-secondary-icon-hover
2
--control-secondary-text-active
2
--creator-revenue-icon-gradient-end
2
--creator-revenue-icon-gradient-start
2
--creator-revenue-info-box-background
2
--creator-revenue-info-box-border
2
--creator-revenue-locked-channel-icon
2
--creator-revenue-progress-bar
2
--embed-background
2
--embed-background-alternate
2
--experimental-avatar-embed-bg
2
--icon-invert
2
--icon-transparent
2
--input-background-error-default
2
--input-border-error-default
2
--input-border-readonly
2
--input-icon-default
2
--input-text-error-default
2
--mobile-background-scrim-opaque
2
--mobile-expression-picker-background-default
2
--mobile-text-heading-primary
2
--navigator-header-tint
2
--overlay-backdrop-lightbox
2
--panel-bg
2
--polls-normal-image-background
2
--progressbar-track-background
2
--radio-background-active
2
--radio-background-default
2
--radio-background-hover
2
--radio-border-active
2
--radio-border-default
2
--radio-border-hover
2
--radio-border-selected-default
2
--radio-border-selected-hover
2
--radio-foreground-active
2
--radio-foreground-default
2
--radio-foreground-hover
2
--reaction-background-active
2
--reaction-background-default
2
--reaction-background-hover
2
--reaction-background-reacted-hover
2
--reaction-border-active
2
--reaction-border-default
2
--reaction-border-hover
2
--reaction-text-active
2
--reaction-text-default
2
--reaction-text-hover
2
--redesign-button-premium-primary-pink-for-gradient
2
--redesign-button-premium-primary-pressed-background
2
--redesign-button-premium-primary-purple-for-gradient
2
--redesign-button-premium-primary-purple-for-gradient-2
2
--redesign-button-tertiary-background
2
--redesign-button-tertiary-pressed-background
2
--redesign-button-tertiary-pressed-text
2
--redesign-button-tertiary-text
2
--switch-background-active
2
--switch-background-default
2
--switch-background-hover
2
--switch-background-selected-default
2
--switch-background-selected-hover
2
--switch-border-default
2
--switch-border-hover
2
--switch-border-selected-default
2
--switch-border-selected-hover
2
--switch-thumb-background-default
2
--switch-thumb-background-selected-default
2
--switch-thumb-icon-active
2
--switch-thumb-icon-default
2
--text-invert
2
--text-overlay-dark
2
--thread-channel-spine
2
--user-profile-activity-toolbar-background
2
--user-profile-border
2
--user-profile-note-background-focus
2
--user-profile-toolbar-border
2
--profile-gradient-start
2
--profile-gradient-end
2
--blue-100-hsl
2
--blue-130-hsl
2
--blue-160-hsl
2
--blue-200-hsl
2
--blue-230-hsl
2
--blue-260-hsl
2
--blue-300-hsl
2
--blue-330-hsl
2
--blue-345-hsl
2
--blue-360-hsl
2
--blue-400-hsl
2
--blue-430-hsl
2
--blue-460-hsl
2
--blue-500-hsl
2
--blue-530-hsl
2
--blue-560-hsl
2
--blue-600-hsl
2
--blue-630-hsl
2
--blue-660-hsl
2
--blue-700-hsl
2
--blue-730-hsl
2
--blue-760-hsl
2
--blue-800-hsl
2
--blue-830-hsl
2
--blue-860-hsl
2
--blue-900-hsl
2
--primary-530
2
--primary-560
2
--primary-730
2
--primary-760
2
--primary-830
2
--primary-860
2
--primary-900
2
--primary-500-hsl
2
--primary-530-hsl
2
--primary-560-hsl
2
--primary-660-hsl
2
--primary-700-hsl
2
--primary-730-hsl
2
--primary-760-hsl
2
--primary-800-hsl
2
--primary-830-hsl
2
--primary-860-hsl
2
--primary-900-hsl
2
--red-new-46
2
--red-new-60
2
--red-new-65
2
--select-option-height
2
--text-code-addition
2
--text-code-builtin
2
--text-code-bullet
2
--text-code-comment
2
--text-code-deletion
2
--text-code-keyword
2
--text-code-section
2
--text-code-string
2
--text-code-tag
2
--text-code-title
2
--text-code-variable
2
--blue-new-27
2
--wrapper-padding-left
1
--space-32
1
--custom-folder-preview-guild-size
1
--custom-preview-background
1
--chat-input-icon-size
1
--space-6
1
--custom-folder-padding
1
--neutral-43
1
--neutral-41
1
--chat-avatar-size
1
--custom-message-avatar-size
1
--custom-message-margin-horizontal
1
--font-weight-normal
1
--custom-base-tile-border-radius
1
--opacity-white-12
1
--background-gradient-highest
1
--control-connected-background-default
1
--control-connected-background-hover
1
--control-connected-background-active
1
--control-connected-border-default
1
--control-connected-border-hover
1
--control-connected-border-active
1
--icon-feedback-notification
1
--__adaptive-focus-ring-color
1
--plum-23
1
--expressive-gradient-nitro-pink-start
1
--expressive-gradient-nitro-pink-end
1
--custom-notice-button-hover
1
--custom-guild-sidebar-width
1
--custom-add-permissions-modal-focus-ring-width
1
--custom-custom-role-icon-form-item-role-icon-preview-size
1
--custom-guild-settings-roles-edit-shared-sidebar-width
1
--custom-guild-settings-roles-intro-roles-transition
1
--custom-guild-settings-roles-intro-pause-transition
1
--custom-guild-settings-roles-intro-background-transition
1
--custom-guild-settings-roles-intro-banner-transition-delay
1
--custom-guild-settings-roles-intro-roles-transition-delay
1
--custom-guild-settings-community-intro-content-spacing
1
--custom-guild-settings-community-intro-hover-distance
1
--custom-guild-settings-community-intro-text-spacing
1
--custom-guild-settings-discovery-landing-page-max-width-tab
1
--custom-guild-settings-discovery-landing-page-settings-max-width
1
--custom-guild-settings-partner-content-spacing
1
--custom-event-detail-info-tab-base-spacing
1
--custom-subscription-listing-previews-carousel-cards-get-cut-off-width
1
--custom-editable-benefits-list-emoji-size
1
--custom-edit-benefit-modal-emoji-size
1
--custom-edit-benefit-modal-emoji-margin
1
--custom-guild-settings-role-subscriptions-max-width
1
--custom-guild-settings-role-subscriptions-overview-settings-max-width
1
--custom-guild-settings-store-page-settings-max-width
1
--custom-importable-benefits-list-listing-image-size
1
--custom-import-benefits-modal-icon-size
1
--custom-import-benefits-modal-role-icon-size
1
--custom-role-icon-uploader-icon-size
1
--custom-guild-role-subscription-style-constants-cover-image-aspect-ratio
1
--custom-historic-earnings-table-toggle-expand-column-width
1
--custom-guild-role-subscription-card-basic-info-tier-image-size
1
--custom-guild-role-subscription-card-basic-info-tier-image-size-mobile
1
--custom-guild-role-subscriptions-overview-page-page-max-width
1
--custom-guild-dialog-popout-width
1
--custom-guild-dialog-splash-ratio
1
--custom-guild-dialog-icon-size
1
--custom-guild-dialog-icon-padding
1
--custom-guild-product-download-modal-header-image-width
1
--custom-guild-onboarding-home-page-max-page-width
1
--custom-guild-onboarding-home-page-max-single-column-width
1
--custom-home-resource-channels-obscured-blur-radius
1
--custom-guild-member-application-review-sidebar-width
1
--custom-featured-items-popout-featured-items-popout-footer-height
1
--custom-guild-boosting-sidebar-display-conditional-bottom-margin
1
--custom-guild-boosting-marketing-progress-bar-marker-dimensions
1
--custom-guild-boosting-marketing-progress-bar-end-markers-margin
1
--custom-guild-boosting-marketing-progress-bar-marker-marker-dimensions
1
--custom-guild-boosting-marketing-tier-cards-tier-card-border-radius
1
--custom-go-live-modal-art-height
1
--custom-gif-picker-gutter-size
1
--custom-gif-picker-search-results-desired-item-width
1
--custom-forum-composer-attachments-attachment-size
1
--custom-forum-post-obscured-blur-radius
1
--custom-forum-post-grid-view-obscured-blur-radius
1
--custom-demo-forum-channel-padding-large
1
--custom-demo-forum-channel-post-padding
1
--custom-demo-forum-channel-gap-size
1
--custom-feedback-modal-emoji-size
1
--custom-feedback-modal-close-button-margin
1
--custom-expression-suggestions-container-padding
1
--custom-expression-suggestions-sticker-suggestion-size
1
--custom-expression-suggestions-sticker-suggestion-margin
1
--custom-expression-picker-constants-expression-picker-list-section-heading-height
1
--custom-expression-picker-constants-expression-picker-inspector-bar-graphic-primary-dimensions
1
--custom-expression-picker-constants-expression-picker-inspector-bar-graphic-secondary-dimensions
1
--custom-expression-picker-constants-expression-picker-inspector-bar-height
1
--custom-emoji-picker-border-radius
1
--custom-emoji-picker-constants-min-emoji-picker-width
1
--custom-emoji-picker-constants-emoji-size-medium
1
--custom-emoji-picker-constants-emoji-size-large
1
--custom-emoji-picker-constants-emoji-container-padding-horizontal
1
--custom-emoji-picker-constants-emoji-container-padding-vertical
1
--custom-emoji-picker-constants-emoji-picker-height
1
--custom-emoji-picker-constants-emoji-section-margin-bottom
1
--custom-emoji-picker-constants-emoji-list-padding-top
1
--custom-emoji-picker-constants-emoji-list-padding-right
1
--custom-emoji-picker-constants-emoji-list-padding-bottom
1
--custom-emoji-picker-constants-emoji-list-padding-left
1
--custom-emoji-picker-constants-emoji-list-search-results-padding-top
1
--custom-emoji-picker-constants-unicode-category-icon-margin-vertical
1
--custom-emoji-picker-constants-unicode-category-icon-size
1
--custom-emoji-picker-constants-unicode-category-icon-padding
1
--custom-emoji-picker-constants-unicode-category-shortcut-height
1
--custom-emoji-picker-constants-guild-category-icon-size
1
--custom-emoji-picker-constants-guild-category-icon-margin-verical
1
--custom-emoji-picker-constants-category-separator-size
1
--custom-emoji-picker-constants-category-separator-margin-vertical
1
--custom-emoji-picker-constants-diversity-emoji-size
1
--custom-emoji-picker-constants-emoji-premium-upsell-height
1
--custom-emoji-picker-constants-emoji-premium-upsell-margin-top
1
--custom-emoji-picker-constants-newly-added-emoji-badge-height
1
--custom-discover-static-guild-card-card-height
1
--custom-discover-featured-guilds-section-card-height
1
--custom-discover-featured-guilds-section-min-card-width
1
--custom-discover-featured-guilds-section-gutter-size
1
--custom-discover-search-results-max-search-bar-width
1
--custom-guild-directory-min-card-width
1
--custom-guild-directory-gutter-size
1
--custom-guild-directory-min-content-width
1
--custom-guild-directory-max-page-width
1
--custom-guild-directory-entry-card-card-height
1
--custom-guild-directory-landing-min-header-height
1
--custom-guild-shop-page-two-column-max-width
1
--custom-aspect-stable-image-container-padding
1
--custom-monetization-info-table-expandable-rows-toggle-expand-column-width
1
--custom-guild-shop-content-width
1
--custom-guild-shop-content-width-reduced
1
--custom-guild-shop-content-width-minimum
1
--custom-guild-shop-channel-row-gradient
1
--custom-guild-shop-channel-row-gradient-hover
1
--custom-guild-shop-channel-row-border-gradient
1
--custom-guild-shop-channel-row-glow
1
--custom-guild-shop-preview-pill-shadow-dark
1
--custom-guild-shop-preview-pill-shadow-light
1
--custom-guild-shop-gradient-start
1
--custom-guild-shop-gradient-end
1
--custom-clips-enabled-indicator-medium-break-point
1
--custom-clips-enabled-indicator-badge-icon-dimension-override
1
--custom-channel-attachment-upload-spoiler-blur-radius
1
--custom-channel-attachment-upload-mini-attachment-size
1
--custom-channel-textarea-text-area-max-height
1
--custom-channel-call-participants-popout-padding-value
1
--custom-stream-upsell-modal-art-height
1
--custom-voice-channel-status-modal-emoji-size
1
--custom-voice-channel-status-modal-emoji-margin
1
--custom-broadcasting-tooltip-image-offset
1
--custom-application-directory-content-min-width
1
--custom-application-directory-content-max-width
1
--custom-guild-count-small-icon-size
1
--custom-guild-count-large-icon-size
1
--custom-collection-gallery-text-container-width
1
--custom-collection-gallery-media-breakpoint
1
--custom-collection-gallery-column-card-height
1
--custom-collection-gallery-row-card-height
1
--custom-collection-list-card-gap
1
--custom-collection-list-with-image-grid-gap
1
--custom-collections-collection-gap
1
--custom-application-directory-profile-sidebar-width
1
--custom-application-directory-profile-sidebar-margin-right
1
--custom-application-directory-profile-icon-size
1
--custom-application-directory-search-sidebar-width
1
--custom-application-directory-search-sidebar-margin-right
1
--custom-accept-invite-modal-invite-modal-height
1
--custom-accept-invite-modal-small-screen-width
1
--custom-avatar-avatar-decoration-border-position
1
--custom-button-button-xl-width
1
--custom-button-button-xl-height
1
--custom-button-button-lg-width
1
--custom-button-button-lg-height
1
--custom-button-button-md-width
1
--custom-button-button-md-height
1
--custom-button-button-sm-width
1
--custom-button-button-sm-height
1
--custom-button-button-tn-height
1
--custom-button-button-tn-width
1
--custom-button-link-underline-width
1
--custom-button-link-underline-offset
1
--custom-button-link-underline-stop
1
--custom-button-filled-hover
1
--custom-button-filled-active
1
--custom-button-transition-duration
1
--custom-modal-min-width-large
1
--custom-special-markdown-small-break-point
1
--custom-special-markdown-medium-break-point
1
--custom-user-profile-hype-squad-badge-icon-size
1
--custom-user-profile-hype-squad-badge-shine-size-offset
1
--custom-guild-discovery-gutter-size
1
--custom-guild-discovery-max-page-width
1
--custom-dropdown-button-small-dropdown-size
1
--custom-dropdown-button-medium-dropdown-size
1
--custom-dropdown-button-large-dropdown-size
1
--custom-dropdown-button-separator-padding
1
--custom-dropdown-button-hitbox-padding
1
--custom-responsive-embed-tile-loading-background-width
1
--custom-game-install-locations-item-padding
1
--custom-game-list-row-min-height
1
--custom-game-list-linked-to-glow-duration
1
--custom-application-store-home-store-home-width
1
--custom-application-store-listing-body-max-width
1
--custom-store-colors-primary-750
1
--custom-store-colors-premium-gradient
1
--custom-member-list-item-avatar-decoration-padding
1
--custom-messages-popout-messages-popout-footer-height
1
--custom-radio-image-border-thickness
1
--custom-standard-sidebar-view-sidebar-content-width
1
--custom-standard-sidebar-view-standard-padding
1
--custom-standard-sidebar-view-sidebar-content-scrollbar-padding
1
--custom-standard-sidebar-view-sidebar-total-width
1
--__spoiler-text-color--hidden
1
--__spoiler-warning-text-color
1
--__spoiler-warning-text-color--hover
1
--__spoiler-warning-background-color--hover
1
--__spoiler-container-box-shadow-color
1
--custom-folder-preview-padding
1
--custom-user-profile-base-layer-z-index
1
--blue-100
1
--blue-130
1
--blue-160
1
--blue-200
1
--blue-230
1
--blue-260
1
--blue-300
1
--blue-330
1
--blue-360
1
--blue-400
1
--blue-430
1
--blue-460
1
--blue-560
1
--blue-600
1
--blue-630
1
--blue-660
1
--blue-700
1
--blue-730
1
--blue-760
1
--blue-800
1
--blue-830
1
--blue-860
1
--blue-900
1
--border-width
1
--background-gradient-high
1
--background-gradient-chat
1
--background-gradient-app-frame
1
--custom-theme-base-color-hsl
1
--font-display-marketing-header
1
--font-display-marketing
1
--custom-party-avatars-avatar-diameter
1
--custom-lift-hover
1
--premium-tier-2-purple-for-gradients-hsl
1
--premium-tier-2-purple-for-gradients-2-hsl
1
--premium-tier-2-pink-for-gradients-hsl
1
--premium-tier-2-pink-for-gradients-2-hsl
1
--space-xxs
1
--space-12
1
--opacity-black-16
1
--custom-input-background-color
1
--custom-input-hover-border-color
1
--custom-input-focus-border-color
1
--custom-input-text-color
1
--red-100
1
--red-130
1
--red-160
1
--red-200
1
--red-230
1
--red-260
1
--red-300
1
--red-330
1
--red-345
1
--red-360
1
--red-460
1
--red-530
1
--red-560
1
--red-600
1
--red-630
1
--red-660
1
--red-700
1
--red-730
1
--red-760
1
--red-800
1
--red-830
1
--red-860
1
--red-900
1
--red-100-hsl
1
--red-130-hsl
1
--red-160-hsl
1
--red-200-hsl
1
--red-230-hsl
1
--red-260-hsl
1
--red-300-hsl
1
--red-330-hsl
1
--red-345-hsl
1
--red-360-hsl
1
--red-400-hsl
1
--red-430-hsl
1
--red-460-hsl
1
--red-500-hsl
1
--red-530-hsl
1
--red-560-hsl
1
--red-600-hsl
1
--red-630-hsl
1
--red-660-hsl
1
--red-700-hsl
1
--red-730-hsl
1
--red-760-hsl
1
--red-800-hsl
1
--red-830-hsl
1
--red-860-hsl
1
--red-900-hsl
1
--green-100
1
--green-100-hsl
1
--green-130
1
--green-130-hsl
1
--green-160
1
--green-160-hsl
1
--green-200
1
--green-200-hsl
1
--green-230
1
--green-230-hsl
1
--green-260
1
--green-260-hsl
1
--green-300-hsl
1
--green-330-hsl
1
--green-345
1
--green-345-hsl
1
--green-360-hsl
1
--green-400
1
--green-400-hsl
1
--green-430
1
--green-430-hsl
1
--green-460
1
--green-460-hsl
1
--green-500
1
--green-500-hsl
1
--green-530
1
--green-530-hsl
1
--green-560
1
--green-560-hsl
1
--green-600
1
--green-600-hsl
1
--green-630
1
--green-630-hsl
1
--green-660
1
--green-660-hsl
1
--green-700
1
--green-700-hsl
1
--green-730
1
--green-730-hsl
1
--green-760
1
--green-760-hsl
1
--green-800
1
--green-800-hsl
1
--green-830
1
--green-830-hsl
1
--green-860
1
--green-860-hsl
1
--green-900
1
--green-900-hsl
1
--white-hsl
1
--black-hsl
1
--primary-130
1
--primary-160
1
--primary-230
1
--primary-260
1
--primary-330
1
--primary-345
1
--primary-360
1
--primary-430
1
--primary-460
1
--primary-100-hsl
1
--primary-130-hsl
1
--primary-160-hsl
1
--primary-200-hsl
1
--primary-230-hsl
1
--primary-260-hsl
1
--primary-300-hsl
1
--primary-330-hsl
1
--primary-345-hsl
1
--primary-360-hsl
1
--primary-400-hsl
1
--primary-430-hsl
1
--primary-460-hsl
1
--primary-645-hsl
1
--modal-horizontal-padding
1
--modal-vertical-padding
1
--modal-width-medium
1
--__current--spoiler-background-color
1
--form-input-height
1
--custom-user-profile-banner-top
1
--space-xl
1
--__card-background-color
1
--blue-new-26
1
--neutral-6-hsl
1
--neutral-6
1
--green-new-23-hsl
1
--green-new-23
1
--green-new-24-hsl
1
--green-new-24
1
--green-new-25-hsl
1
--green-new-25
1
--green-new-26-hsl
1
--green-new-26
1
--green-new-30-hsl
1
--green-new-30
1
--green-new-31-hsl
1
--green-new-31
1
--green-new-38-hsl
1
--green-new-38
1
--green-new-40-hsl
1
--green-new-40
1
--green-new-44-hsl
1
--green-new-44
1
--green-new-50-hsl
1
--green-new-50
1
--green-new-52-hsl
1
--green-new-52
1
--green-new-60-hsl
1
--green-new-60
1
--green-new-65-hsl
1
--green-new-65
1
--green-new-72-hsl
1
--green-new-72
1
--green-new-76-hsl
1
--green-new-76
1
--green-new-77-hsl
1
--green-new-77
1
--green-new-87-hsl
1
--green-new-87
1
--green-new-91-hsl
1
--green-new-91
1
--red-new-22-hsl
1
--red-new-22
1
--red-new-23-hsl
1
--red-new-23
1
--red-new-29-hsl
1
--red-new-29
1
--red-new-38-hsl
1
--red-new-38
1
--red-new-45-hsl
1
--red-new-45
1
--red-new-50-hsl
1
--red-new-46-hsl
1
--red-new-47-hsl
1
--red-new-47
1
--red-new-60-hsl
1
--red-new-65-hsl
1
--red-new-70-hsl
1
--red-new-70
1
--red-new-75-hsl
1
--red-new-75
1
--red-new-78-hsl
1
--red-new-78
1
--yellow-new-22-hsl
1
--yellow-new-22
1
--yellow-new-24-hsl
1
--yellow-new-24
1
--yellow-new-28-hsl
1
--yellow-new-28
1
--yellow-new-31-hsl
1
--yellow-new-31
1
--yellow-new-36-hsl
1
--yellow-new-36
1
--yellow-new-39-hsl
1
--yellow-new-39
1
--yellow-new-46-hsl
1
--yellow-new-46
1
--yellow-new-54-hsl
1
--yellow-new-54
1
--yellow-new-75-hsl
1
--yellow-new-75
1
--yellow-new-84-hsl
1
--yellow-new-84
1
--orange-new-63-hsl
1
--orange-new-63
1
--blue-new-24-hsl
1
--blue-new-24
1
--blue-new-27-hsl
1
--opacity-4-hsl
1
--opacity-8-hsl
1
--opacity-12-hsl
1
--opacity-16-hsl
1
--opacity-20-hsl
1
--opacity-green-8-hsl
1
--opacity-green-12-hsl
1
--opacity-green-24-hsl
1
--opacity-green-36-hsl
1
--opacity-red-8-hsl
1
--opacity-red-12-hsl
1
--opacity-red-16-hsl
1
--opacity-red-24-hsl
1
--opacity-red-36-hsl
1
--opacity-yellow-8-hsl
1
--opacity-blue-8-hsl
1
--opacity-blurple-8-hsl
1
--opacity-blurple-16-hsl
1
--opacity-blurple-24-hsl
1
--illo-green-50-hsl
1
--illo-pink-50-hsl
1
--illo-pink-60-hsl
1
--illo-pink-70-hsl
1
--illo-purple-40-hsl
1
--illo-purple-60-hsl
1
--illo-nitro-blue-hsl
1
--premium-tier-0-header-gradient-1
1
--premium-tier-0-header-gradient-2
1
--premium-tier-0-header-gradient-3
1
--premium-tier-0-header-gradient-4
1
--premium-tier-0-header-gradient-5
1
--custom-premium-colors-premium-gradient-tier-2-diagonal
1
--premium-tier-2-purple-hsl
1
--premium-tier-2-pink-hsl
1
--premium-perk-blue-hsl
1
--premium-perk-dark-blue-hsl
1
--premium-perk-green-hsl
1
--premium-perk-light-blue-hsl
1
--premium-perk-orange-hsl
1
--premium-perk-pink-hsl
1
--premium-perk-purple-hsl
1
--premium-perk-yellow-hsl
1
--premium-nitro-pink-light-hsl
1
--premium-nitro-pink-light
1
--control-connected-text-default
1
--control-connected-text-hover
1
--control-connected-text-active
1

Overlap is against Discord's current variables, so it measures live reskins. Using a variable Discord has since renamed or removed (--text-normal--text-default) is the separate fragility signal below.

Outdated variables breaks silently

The CSS-variable analog of a stale hardcoded class. 109 addons still define or read a name from Discord's former semantic layer (--background-primary, --text-normal, --interactive-normal, the --brand-experiment-* scale…) — each now resolves to nothing, so the styling is dead. Matched against the manifest's deprecated list of Discord's removed names, never inferred from the corpus.

VariableAddons
--header-primary
68
--interactive-normal
59
--text-normal
57
--background-primary
56
--background-secondary
56
--background-tertiary
55
--interactive-active
53
--background-modifier-hover
51
--background-floating
49
--header-secondary
48
--background-modifier-selected
47
--interactive-hover
44
--background-modifier-accent
42
--background-modifier-active
37
--brand-experiment
37
Show 29 more
--text-positive
25
--background-message-hover
23
--text-danger
22
--deprecated-card-bg
20
--text-warning
19
--background-mobile-secondary
18
--info-warning-foreground
18
--brand-experiment-600
18
--background-mobile-primary
17
--brand-experiment-500
17
--text-link-low-saturation
15
--brand-experiment-400
15
--deprecated-store-bg
14
--brand-experiment-200
14
--deprecated-quickswitcher-input-background
13
--deprecated-card-editable-bg
12
--background-message-highlight
12
--info-danger-foreground
12
--info-help-foreground
12
--brand-experiment-100
12
--brand-experiment-300
12
--brand-experiment-700
12
--brand-experiment-800
12
--brand-experiment-900
12
--deprecated-text-input-bg
11
--info-positive-foreground
11
--deprecated-text-input-border
10
--background-message-automod
10
--background-nested-floating
10

Maintenance state × fragility — will the affected addons adapt?

Every removal decision above hinges on the same follow-up: do the affected addons still ship releases, or will they simply break? Addons bucket by last store release relative to the 2026-08-31 data week: active ≤ 6 months, aging 6–24 months, abandoned > 24 months. A release date measures store activity, not author intent — a stable, finished addon looks abandoned here — so staleness is never treated as a defect on its own; the readings below are conjunctions with a fragile or deprecated surface. Cells read addons · cumulative downloads (installed base, never active users).

SignalActive ≤ 6moAging 6–24moAbandoned > 24mo
Whole corpus159 · 23.2M108 · 21.9M57 · 10.6M
Hardcoded Discord classes20 · 3.4M42 · 14.1M40 · 9.5M
Outdated CSS variables32 · 6.3M33 · 8.8M44 · 8.4M
Deprecated lifecycle (get-family)32 · 12.2M24 · 4.6M0 · 0
Legacy ReactDOM entry points7 · 1.3M2 · 121.5K0 · 0
require() polyfill30 · 12.2M26 · 5.0M0 · 0

The observer memo sharpens: of the 6 plugins keeping core's document-wide MutationObserver alive, 0 are abandoned and 3 active.

Of the 57 addons first released within 12 months of the data date, 6 launched already touching a deprecated surface — deprecated patterns are still being adopted, not merely inherited.

Outreach shortlist active ∧ deprecated surface

Actively-maintained addons still on a deprecated surface: authors who plausibly respond, ranked by the installed base their fix would carry.

AddonDownloadsLast releaseSurface
DevilBro / Translator
1.8M2026-08-28get-family lifecycle
DevilBro / SpotifyControls
1.6M2026-05-28get-family lifecycleoutdated CSS variables
DevilBro / GameActivityToggle
1.5M2026-04-26get-family lifecycle
Strencher / InvisibleTyping
1.1M2026-07-03outdated CSS variables
CapnKitten / Translucence
863.7K2026-06-07outdated CSS variables
DevilBro / ImageUtilities
834.2K2026-06-08get-family lifecycle
arg0NNY / BetterAnimations
780.7K2026-07-09get-family lifecycle
DevilBro / ServerDetails
546.3K2026-05-01get-family lifecycle
DevilBro / ShowBadgesInChat
531.2K2026-05-31get-family lifecycle
DevilBro / NotificationSounds
520.8K2026-04-29get-family lifecycle
DevilBro / FriendNotifications
462.9K2026-04-29get-family lifecycle
refact0r / midnight
461.0K2026-06-04outdated CSS variables
DevilBro / BetterFriendList
427.9K2026-07-02get-family lifecycle
DevilBro / ShowConnections
420.3K2026-04-28get-family lifecycle
DevilBro / 0BDFDB
415.0K2026-08-29get-family lifecycle
Show 45 more
cruxie / neutron
398.9K2026-04-07outdated CSS variables
DevilBro / EditUsers
370.2K2026-04-28get-family lifecycle
DevilBro / StaffTag
343.5K2026-05-16get-family lifecycle
cruxie / nocturnal
342.7K2026-04-12outdated CSS variables
Strencher / APlatformIndicators
314.5K2026-07-31outdated CSS variables
wq_qt / chillax
257.6K2026-05-20outdated CSS variables
DevilBro / PinDMs
257.1K2026-07-16get-family lifecycle
Eight_P / T1
246.2K2026-05-28outdated CSS variables
DevilBro / LastMessageDate
236.1K2026-04-28get-family lifecycle
DevilBro / CustomStatusPresets
181.3K2026-06-11get-family lifecycle
DevilBro / WriteUpperCase
175.8K2026-04-28get-family lifecycle
arg0NNY / PasscodeLock
162.4K2026-06-04get-family lifecycle
DevilBro / BetterSearchPage
120.5K2026-06-04get-family lifecycle
Nebulys / WizardUI
116.0K2026-07-30outdated CSS variables
DevilBro / ServerFolders
110.4K2026-07-02get-family lifecycleoutdated CSS variables
DevilBro / CompleteTimestamps
106.9K2026-05-14get-family lifecycle
refact0r / system24
106.5K2026-08-17outdated CSS variables
Neodymium / VoiceActivity
100.6K2026-05-29outdated CSS variables
DevilBro / TopRoleEverywhere
74.4K2026-05-16get-family lifecycle
DevilBro / PersonalPins
56.6K2026-07-27get-family lifecycle
DevilBro / DisplayServersAsChannels
43.3K2026-05-01get-family lifecycle
domi.btnr / ShowSpectators
41.9K2026-05-19outdated CSS variables
lolpowerluke / alanWalker
41.6K2026-07-04outdated CSS variables
DevilBro / OldTitleBar
41.6K2026-03-13get-family lifecycle
domi.btnr / MessagePeek
37.3K2026-05-15outdated CSS variables
TheLazySquid / GifCaptioner
31.0K2026-08-27get-family lifecycle
dimden / LastFMRichPresence
30.0K2026-03-21get-family lifecycleoutdated CSS variables
iris!#2888 / RemovedConnectionAlerts
30.0K2026-05-21get-family lifecycle
arg0NNY / BetterChannelList
21.8K2026-06-04outdated CSS variables
tnt4me / SleekCord
21.5K2026-08-23outdated CSS variables
DaddyBoard / PingNotification
14.0K2026-07-21outdated CSS variables
DevilBro / TimedLightDarkMode
12.3K2026-05-01get-family lifecycle
programmer2514 / UIRefreshRefresh
12.2K2026-05-21outdated CSS variables
TheLazySquid / VideoCompressor
10.1K2026-08-27get-family lifecycle
Arven / LiveTyping
9.9K2026-08-28outdated CSS variables
domi.btnr / ReplaceTimestamps
8.8K2026-05-15outdated CSS variables
Arven / GuildProfile
7.1K2026-07-29get-family lifecycleoutdated CSS variables
Zacam / PurpleOnyx
5.7K2026-05-12outdated CSS variables
theholyonez / TheHolyOneZ-Dream
3.5K2026-03-10outdated CSS variables
cursedelectric / CursedCord
3.4K2026-03-25outdated CSS variables
KingGamingYT / NewOldProfiles
2.9K2026-07-31outdated CSS variables
domi.btnr / UnsuppressEmbeds
2.5K2026-05-15outdated CSS variables
domi.btnr / FriendCodes
2.5K2026-05-13outdated CSS variables
nicola02nb / ShortcutScreenshareScreen
2.4K2026-06-02outdated CSS variables
KingGamingYT / SimpleUserMenu
2.2K2026-05-07outdated CSS variables

Already silently degraded abandoned ∧ deprecated surface

44 addons (8.4M cumulative downloads) have not shipped in over two years and sit on a surface that already resolves to nothing. Their styling or overrides are degraded for every current install today; removing the surface costs them nothing further.

Show all 44
  • 11pixels / dtm-08
  • Alex / amethyst
  • Alex / kaleidoscope
  • Ashtrath / simplify
  • Ashtrath / tokyo-night
  • BigMeanie / Materialistic
  • CapnKitten / Spotify-Discord
  • Daggy1234 / Nord
  • Daggy1234 / Wildberry
  • DevilBro / BlurpleRecolor
  • Elisniper / Glass Wave
  • Elisniper / Material Blue Discord
  • FeoreV / FVUI
  • GH0STP4WZ / virtual-boy
  • Gibbu / Fluent
  • Gibbu / FrostedGlass
  • Gibbu / MinimalCord
  • Goslopo / noctis-viola
  • HawkRatio / OperaGX
  • Kaynooo / glass_local
  • KillYoy / DiscordNight
  • Mixter213 / MixPack
  • Pix / spectra
  • Rock#5429 / Eris
  • Saltssaumure / Exponent
  • Saltssaumure / Neobrutal
  • Saltssaumure / NineX
  • Saltssaumure / Pesterchum
  • Saltssaumure / Synthesis
  • Saltssaumure / Tritone
  • Saltssaumure / piOS
  • Sango / GitHub-Dark
  • Sappy / SpotiCord
  • ShadowDevilsAvenged / BubbleThemev2
  • Superuser / Unity
  • The Commie Axolotl / MaterialDesign
  • The Commie Axolotl / OSX
  • The Commie Axolotl / Ultra
  • Tropical / DarkMatter
  • accrazed / NieR-Light-Source
  • epic1online / Nox
  • malasangre / roundmoled
  • zuzumi / Discord11
  • zuzumi / Moon-Rabbits-Dream-About-Virtual

Network hosts — CSP planning

Sorted by how many addons reference each host. "Runtime calls" are URLs statically resolved into network sinks (connect-src candidates); CSS references cover @import and url() (style/img/font-src).

Runtime network calls

HostPluginsRefs
mwittrien.github.io
4747
github.com
22
raw.githubusercontent.com
11
thelazysquid.github.io
11
doggybootsy.github.io
11
api.github.com
11
api.streamelements.com
11
tiktok-tts.weilnet.workers.dev
11
gql.twitch.tv
11
ws.audioscrobbler.com
11
rules2.clearurls.xyz
11
timezonedb.catvibers.me
11
127.0.0.1
11
discord.com
11
nintendoeverything.com
11
news.xbox.com
11
unknownworlds-strapi.live.kraftonamericas.com
11
net-secondary.web.minecraft-services.net
11
fortnite-api.com
11
store.steampowered.com
11
shared.fastly.steamstatic.com
11
cdn.jsdelivr.net
11

CSS references

HostAddonsRefs
discord.com
32163,151
fonts.gstatic.com
3078
fonts.googleapis.com
2742
i.imgur.com
23164
mwittrien.github.io
1917,440
raw.githubusercontent.com
17179
cdn.discordapp.com
14143
discordstyles.github.io
1329
saltssaumure.github.io
735
discord-custom-covers.github.io
66
nyri4.github.io
5244
ptb.discord.com
525
discordapp.com
520
github.com
516
devevil99.github.io
57
raw.githack.com
55
media.discordapp.net
463
cdn.jsdelivr.net
441
blade04208.github.io
437
static.discord.com
417
i.ibb.co
46
davart154.github.io
45
capnkitten.github.io
3562
fonts.cdnfonts.com
330
thecommieaxolotl.github.io
313
Show 101 more hosts
crearts-community.github.io
311
upload.wikimedia.org
38
maendisease.github.io
37
dablulite.github.io
33
user-images.githubusercontent.com
33
mr-miner1.github.io
33
zuzumi-f.github.io
214
snajperexe.github.io
213
dyzean.github.io
210
cdn.rawgit.com
210
xcruxiex.github.io
28
minidiscordthemes.github.io
27
spinfish.github.io
27
tiredmala.github.io
27
refact0r.github.io
27
elisniper.github.io
26
ellexidecodes.github.io
26
gibbu.github.io
25
www.svgrepo.com
24
b4t3s.github.io
24
images.alphacoders.com
23
paz.pw
22
adx74.fr
22
media.tenor.com
22
ch3rry.red
22
teamcofh.com
22
rawgit.com
22
goose-nest.github.io
22
images3.alphacoders.com
22
images5.alphacoders.com
22
xyzenix.github.io
22
storage.googleapis.com
22
www.your-url-here.com
22
dagcord.github.io
22
feorev.github.io
1116
canary.discord.com
1110
files.catbox.moe
149
chillax-org.github.io
149
milbits.github.io
141
lukasvh.codeberg.page
135
ungiglio.github.io
125
goldenlys.github.io
123
leafyluigi.github.io
122
warrayquipsome.github.io
119
joshuah345.github.io
118
lolpowerluke.github.io
111
przemec.github.io
110
rockesv.github.io
110
clearvision.github.io
110
slddev.github.io
110
i.postimg.cc
19
accrazed.github.io
19
plusinsta.github.io
16
monstrousdev.github.io
15
eight-p.github.io
15
zacam.github.io
15
tnt4me.github.io
14
pixelmelt.github.io
14
p0rtl6.github.io
14
encore.scdn.co
14
riddim-glitch.github.io
13
slippinggittys-discord-themes.github.io
13
deadfrekk.github.io
12
external-content.duckduckgo.com
12
i.vgy.me
12
imgpile.com
12
forums.everybodyedits.com
12
rawcdn.githack.com
12
syndishanx.github.io
12
chaseingebritson.github.io
11
nexus-themes.github.io
11
cinnab0nbak3ry.github.io
11
killyoy.github.io
11
l-ratio.github.io
11
(dynamic)
11
zerebos.github.io
11
abs.twimg.com
11
purplewizard.space
11
mixter213.github.io
11
i.gifer.com
11
chloecinders.github.io
11
markchan0225.github.io
11
cursedelectric.github.io
11
cursedelectric.neocities.org
11
nfld99.github.io
11
multiplexurbangreen.com
11
cdn.custom-cursor.com
11
cdn-icons-png.flaticon.com
11
luckfire.github.io
11
puckzxz.github.io
11
discord-mica.pages.dev
11
winzoro.net
11
images7.alphacoders.com
11
wallpapers.com
11
images8.alphacoders.com
11
booglesmcgee.github.io
11
patrykbielanin.github.io
11
steamuserimages-a.akamaihd.net
11
imgur.com
11
dom1torii.github.io
11
marda33.github.io
11
All string-literal URLs in plugin code (context — includes changelogs, docs links, embedded data)
HostPluginsRefs
mwittrien.github.io
4852
www.w3.org
44169
github.com
4045
raw.githubusercontent.com
2831
cdn.discordapp.com
1560
(dynamic)
814
media.discordapp.net
623
discord.com
516
paypal.me
55
i.scdn.co
35
static-cdn.jtvnw.net
35
translate.googleapis.com
34
devevil.com
33
yandex.com
33
svelte.dev
242
cdn.jsdelivr.net
25
generativelanguage.googleapis.com
23
www.youtube.com
23
example.com
23
api.spotify.com
22
api.github.com
22
www.google.com
22
www.bing.com
22
regexr.com
22
duckduckgo.com
22
Show 121 more hosts
search.brave.com
22
api.openai.com
22
api.groq.com
22
discord.gg
22
i.ytimg.com
22
wikipedia.org
19,481
i.imgur.com
16
www.patreon.com
13
doggybootsy.com
12
open.spotify.com
12
images-ext-2.discordapp.net
12
images-ext-1.discordapp.net
12
openapi.naver.com
12
api.streamelements.com
12
startpage.com
12
tenor.com
12
console.groq.com
12
platform.openai.com
12
docs.betteranimations.net
12
shared.fastly.steamstatic.com
12
thelazysquid.github.io
11
doggybootsy.github.io
11
spotify.com
11
devevil99.github.io
11
makersuite.google.com
11
trace.moe
11
tineye.com
11
pic.sogou.com
11
saucenao.com
11
karmadecay.com
11
iqdb.org
11
imgops.com
11
lens.google.com
11
image.baidu.com
11
www.paypal.me
11
images-ext-2.discord
11
images-ext-1.discord
11
s.team
11
store.steampowered.
11
help.steampowered.
11
steamcommunity.
11
search.yahoo.com
11
www.wolframalpha.com
11
search.sethforprivacy.com
11
www.urbandictionary.com
11
www.startpage.com
11
stackoverflow.com
11
searx.info
11
www.qwant.com
11
www.quora.com
11
www.pinterest.com
11
www.linkedin.com
11
scholar.google.com
11
www.facebook.com
11
www.ecosia.org
11
www.dogpile.com
11
ask.com
11
www.amazon.com
11
translate.google.com
11
fanyi-api.baidu.com
11
translate.yandex.net
11
www.itranslate.com
11
web-api.itranslateapp.com
11
api.deepseek.com
11
api-free.deepl.com
11
api.deepl.com
11
api.cognitive.microsofttranslator.com
11
convertio.co
11
tiktok-tts.weilnet.workers.dev
11
undefined
11
search.aol.com
11
yahoo.com
11
perplexity.ai
11
bing.com
11
google.com
11
searx.be
11
gql.twitch.tv
11
player.twitch.tv
11
twitch.tv
11
translate-pa.googleapis.com
11
api-v2.soundcloud.com
11
ws.audioscrobbler.com
11
latex.codecogs.com
11
twitter.com
11
media.tenor.com
11
www.twitch.tv
11
api.supadata.ai
11
supadata.ai
11
rules2.clearurls.xyz
11
replacement.com
11
twenty-icons.com
11
fxbsky.app
11
yout-ube.com
11
tfxktok.com
11
tnktok.com
11
vxinstagram.com
11
twittpr.com
11
fixvx.com
11
vxtwitter.com
11
fixupx.com
11
fxtwitter.com
11
vxreddit.com
11
rxddit.com
11
timezonedb.catvibers.me
11
avatars.githubusercontent.com
11
gist.githubusercontent.com
11
betterdiscord.app
11
boosty.to
11
127.0.0.1
11
static.discord.com
11
static.wikia.nocookie.net
11
files.catbox.moe
11
store.steampowered.com
11
fortnite-api.com
11
net-secondary.web.minecraft-services.net
11
unknownworlds.com
11
unknownworlds-strapi.live.kraftonamericas.com
11
news.xbox.com
11
nintendoeverything.com
11
zerebos.com
11
xenoncolt.live
11

Meta health

Every addon opens with a JSDoc meta block, parsed by BetterDiscord's parseJsDoc. This table is what BD itself sees: the same parser runs here, so a field listed as present is a field BD resolves. @name, @author, @description and @version are required; BD papers over the last three at load time with Unknown Author / ??? / No description, so a missing one degrades the UI rather than failing outright. Non-standard fields are author or library conventions BD ignores — they are listed for coverage, not judged. The largest such convention is @updateUrl: 90 addons (28%) carry a field BD never reads — de-facto demand evidence for a first-party update mechanism. Nearly nothing fetches it today (a 2026-07 probe put the hosts at mwittrien.github.io 54, raw.githubusercontent.com 28, then singletons; the one remaining ZeresPluginLibrary dependent is the only self-rolled reader), so these URLs stay advisory and are deliberately excluded from the CSP host inventories.

Field coverage

FieldAddons% of corpus
@name required
323100%
@author required
323100%
@version required
323100%
@description required
323100%
@source
29090%
@invite
19059%
@website
17153%
@authorId
16752%
@donate
11736%
@authorLink
6319%
@patreon
6119%
@runAt
206%
@updateUrl non-standard
9028%
@stable non-standard
134%
@canary non-standard
134%
@license non-standard
124%
@var non-standard
62%
@changelog non-standard
21%
@exports non-standard
10%
@colorwayVar non-standard
10%
@changelogDate non-standard
10%
@updateurl non-standard
10%
@github non-standard
10%
@github_raw non-standard
10%
@displayName non-standard
10%
@updateURL non-standard
10%
@keyframes non-standard
10%
@discordBuild non-standard
10%

Problems (14 across 10 addons)

Only fields BD consumes are validated. Duplicated non-standard fields are conventions (DevilBro's @var theme settings, @changelog) and are not counted as defects.

ProblemAddons
Version is not a version number @version6
Which addons
  • DevEvil / Dark+
  • DevEvil / RosyNight
  • JustCursedRedLuigi / SkeuoCord
  • Sappy / SpotiCord
  • VaporousCreeper / GGO_Kirito
  • cavw / AlternativeVistaAutoUpdate
Link field is not an http(s) URL @website2
Which addons
  • DeathByPrograms / NotificationWhitelist
  • Goslopo / noctis-viola
Link field is not an http(s) URL @source2
Which addons
  • DeathByPrograms / NotificationWhitelist
  • theholyonez / TheHolyOneZ-Dream
Missing required field @name1
Which addons
  • square / EzLight
Missing required field @author1
Which addons
  • square / EzLight
Missing required field @description1
Which addons
  • square / EzLight
Missing required field @version1
Which addons
  • square / EzLight

Security signals

HTML injection sinks

SinkUsesPlugins
innerHTML7961
dangerouslySetInnerHTML137
outerHTML41

Dynamic code execution

KindUsesPlugins
Worker33
Function22
eval22
createElement("script")22

Bundling / packing signals

SignalPlugins
large-string-array
28
high-entropy-strings
24
escape-heavy-strings
5
dynamic-eval
2
dynamic-function
2
many-single-char-identifiers
1

Self-installing plugins (48)

Plugins that both fetch a .plugin.js URL and write a .plugin.js path — they install executable code outside the store's review path, which is the supply-chain surface worth keeping a list of. Both signals are required: a .plugin.js URL on its own is usually just a @source link, and a write on its own is usually a data file. In this corpus the whole list is the BDFDB library downloader that every DevilBro addon ships, which fetches 0BDFDB.plugin.js and writes it into BdApi.Plugins.folder — a library bootstrap rather than literal self-update.

Show all 48
  • DevilBro / 0BDFDB
  • DevilBro / BetterFriendList
  • DevilBro / BetterNsfwTag
  • DevilBro / BetterSearchPage
  • DevilBro / CharCounter
  • DevilBro / ChatAliases
  • DevilBro / ChatFilter
  • DevilBro / ClickableMentions
  • DevilBro / CompleteTimestamps
  • DevilBro / CustomQuoter
  • DevilBro / CustomStatusPresets
  • DevilBro / DisplayServersAsChannels
  • DevilBro / EditChannels
  • DevilBro / EditRoles
  • DevilBro / EditServers
  • DevilBro / EditUsers
  • DevilBro / FriendNotifications
  • DevilBro / GameActivityToggle
  • DevilBro / GoogleSearchReplace
  • DevilBro / HideMutedCategories
  • DevilBro / ImageUtilities
  • DevilBro / LastMessageDate
  • DevilBro / MessageUtilities
  • DevilBro / NotificationSounds
  • DevilBro / OldTitleBar
  • DevilBro / OpenSteamLinksInApp
  • DevilBro / PersonalPins
  • DevilBro / PinDMs
  • DevilBro / QuickMention
  • DevilBro / ReadAllNotificationsButton
  • DevilBro / RemoveBlockedUsers
  • DevilBro / RemoveNicknames
  • DevilBro / RevealAllSpoilers
  • DevilBro / ServerCounter
  • DevilBro / ServerDetails
  • DevilBro / ServerFolders
  • DevilBro / ServerHider
  • DevilBro / ShowBadgesInChat
  • DevilBro / ShowConnections
  • DevilBro / SpellCheck
  • DevilBro / SplitLargeMessages
  • DevilBro / SpotifyControls
  • DevilBro / StaffTag
  • DevilBro / TimedLightDarkMode
  • DevilBro / TopRoleEverywhere
  • DevilBro / Translator
  • DevilBro / UserNotes
  • DevilBro / WriteUpperCase

Bundled / minified code (13)

Heuristic score ≥ 0.4 — code that resists reading because it is bundled, minified, or packed. This measures readability, not safety: every addon here passed the store's normal review, and build tooling is the usual cause.

PluginSignals
quantumsoul / LaTeXmany-single-char-identifierslarge-string-arrayhigh-entropy-stringsdynamic-evaldynamic-function
arg0NNY / BetterAnimationslarge-string-arrayescape-heavy-stringshigh-entropy-stringsdynamic-function
Zerebos / PermissionsViewerlarge-string-arrayescape-heavy-stringshigh-entropy-strings
TheLazySquid / GifCaptionerlarge-string-arrayhigh-entropy-strings
programmer2514 / CollapsibleUIlarge-string-arraydynamic-eval
DaddyBoard / PingNotificationlarge-string-arrayhigh-entropy-strings
DevilBro / Translatorlarge-string-arrayhigh-entropy-strings
Snues / Incognitolarge-string-arrayhigh-entropy-strings
SuperTouch / Summarizerlarge-string-arrayhigh-entropy-strings
arg0NNY / PasscodeLocklarge-string-arrayhigh-entropy-strings
KingGamingYT / ActivityFeedlarge-string-arrayescape-heavy-strings
Zerebos / RoleMemberslarge-string-arrayhigh-entropy-strings
Knew / EmbedMoreImageslarge-string-arrayhigh-entropy-strings

Checked and absent

Sinks probed across every plugin (2026-07) and found nowhere in the store corpus — a clean probe is a finding about store health, so it is cited rather than silently lacking a rule: child_process (no shell execution at all), string-argument setTimeout/setInterval, document.write, auth-token webpack lookups (getToken), dynamic import() of remote URLs, and hardcoded Discord REST paths (the three plugins matching /api/vN call third-party APIs — translation, game stores — and the lone discord.com network sink is an asset fetch). Raw localStorage appears in one plugin, on a dead code path.