Changes in 2.10.0โ
๐ This is a major release with breaking changes. Please update your code accordingly.
โ A significant release focused on reliability, cleaner internals, and broader library support.
Here you will find everything that changed in v2.10.0 and what you need to update when upgrading.
How to updateโ
- npm
- pnpm
- yarn
npm update magmastream
pnpm update magmastream
yarn upgrade magmastream
New Featuresโ
isAutoplay flag on tracksโ
Tracks now carry an explicit isAutoplay boolean โ no more internal user comparisons to determine whether a track was added by autoplay.
destroy() on all queue backendsโ
All queue backends (MemoryQueue, RedisQueue, JsonQueue) now implement a destroy() method for proper resource cleanup.
pauseOnDisconnect player optionโ
New pauseOnDisconnect option in PlayerOptions โ when enabled, the player pauses instead of stopping when the bot is disconnected from a voice channel. Defaults to true.
Discordeno wrapperโ
First-class support for @discordeno/bot via the new Discordeno wrapper.
resolveGuild() on all wrappersโ
All wrappers now implement resolveGuild() for consistent guild resolution across libraries.
getUser / getGuild cache callbacks in ManagerOptionsโ
New optional getUser and getGuild callbacks in ManagerOptions, allowing you to plug in your library's cache for user and guild resolution without a wrapper.
Structured error for missing GuildVoiceStates intentโ
All wrappers now throw a MagmaStreamError with code MS_INTENT_MISSING if the GuildVoiceStates gateway intent is not enabled.
Breaking Changesโ
Detritus wrapper removedโ
The Detritus wrapper has been removed. Migrate to the new Discordeno wrapper.
deleteInactivePlayers renamed to deleteDestroyedPlayersโ
Update any references in your StateStorageOptions config.
MemoryQueue methods are now synchronousโ
MemoryQueue methods no longer return Promise. If you were awaiting them, remove the await. Other backends (Redis, JSON) remain asynchronous.
Minimum Node.js version bumped to >=20.19.0โ
Ensure your runtime meets the new minimum version requirement.
Peer dependency bumpsโ
seyfertbumped to4.xoceanic.jsbumped to1.13.x
Update these in your package.json if you use either wrapper.
Fixes & Improvementsโ
play({ startTime }) no longer silently droppedโ
Passing startTime or other play options to player.play() now correctly forwards them to Lavalink.
Session ID storage refactoredโ
Session IDs are now stored per-node (individual files and a Redis hash) instead of a single shared JSON file, preventing cross-node conflicts on restart.
requester.id consistently cast to stringโ
Fixes BigInt Map key mismatches that could cause track requester lookups to silently fail.
channelId included in voice state updatesโ
channelId is now correctly included in voice state payloads sent to Lavalink, fixing voice connection issues after channel moves.
REST 4xx responses returned as structured errorsโ
REST 4xx responses from Lavalink are now returned as structured MagmaStreamError objects instead of thrown exceptions, making error handling consistent.
Player serialization null-safeโ
PlayerUtils.serializePlayer() is now fully typed, null-safe, and returns null on failure instead of throwing.
Questions?โ
Join our Discord โ we're happy to help.