Skip to main content

Version 2 Changelog

Deprecated VersionLavalink v2 is deprecated and no longer maintained. Please upgrade to Lavalink v4 for the latest features and security updates.

v2.2

Features:
  • Version command line flag - #121
Updates:
  • Lavaplayer updated to 1.3.x - #115
Fixes:
  • Fix race condition in /loadtracks endpoint leading to some requests never completing - #125
Contributors: @Devoxin, @freyacodes, @napstr

v2.1

Features: Contributors: @freyacodes, @napstr, @Repulser

v2.0.1

Features: Contributors: @Devoxin, @freyacodes, @itslukej, @napstr, @Repulser

v2.0

This release introduced significant architectural changes to how Lavalink handles voice connections.

Major Changes

Removed Operations: The following operations were removed in v2.0:
  • connect
  • disconnect
  • validationRes
  • isConnectedRes
  • validationReq
  • isConnectedReq
  • sendWS

Architecture Changes

With Lavalink 1.x, the server had the responsibility of handling Discord VOICE_SERVER_UPDATEs as well as its own internal rate limiting. This remote handling made things unnecessarily complicated and added many points where things could go wrong.One problem that was noticed: since JDA is unaware of rate limits on the bot’s gateway connection, it would keep adding to the rate limit queue to the gateway.With this update, this responsibility is now handled by the Lavalink client or the Discord client.New Connection Flow:
  • A voice connection is now initiated by forwarding a voiceUpdate (VOICE_SERVER_UPDATE) to the server
  • When you want to disconnect or move to a different voice channel, you must send Discord a new VOICE_STATE_UPDATE
  • If you want to move your connection to a new Lavalink server, you can simply send the VOICE_SERVER_UPDATE to the new node, and the other node will be disconnected by Discord
Depending on your Discord library, it may be possible to take advantage of the library’s OP 4 handling. For instance, the JDA client takes advantage of JDA’s websocket write thread to send OP 4s for connects, disconnects and reconnects.

Migration from v1.3

1

Remove Old Operations

Remove all usage of the deprecated operations (connect, disconnect, validationRes, isConnectedRes, validationReq, isConnectedReq, sendWS) from your client implementation.
2

Implement Voice Update Forwarding

Update your client to forward VOICE_SERVER_UPDATE events to Lavalink using the voiceUpdate operation.
3

Handle Disconnections

Ensure your client sends VOICE_STATE_UPDATE to Discord (not Lavalink) when disconnecting or moving channels.
4

Test Connection Flow

Verify that:
  • Connections are established correctly via voiceUpdate
  • Disconnections are handled properly
  • Channel moves work as expected
  • Node migrations function correctly

Reference Commits

For detailed implementation changes, see:

Upgrade Recommendations

Migrate to v4

Upgrade to the latest version for modern features, better performance, and continued support

View v3 Changelog

See intermediate version 3.x if you need a stepping stone migration path

Support

Lavalink v2 is no longer supported. If you encounter issues, please upgrade to a supported version.
For help with migration:

Build docs developers (and LLMs) love