Skip to main content
Version: 3.x.x

Release Notes - Flutter

This page will keep you updated with all the releases of Flutter SDK.

v3.12.1

Release Date: 20th August 2026

Change Log :

Bug Fixes:

  • Android builds no longer need any manual setup. Building an app for Android could fail in Gradle with a compileSdkVersion error, Android builds now work directly after flutter pub get, on developer machines and CI alike.

  • Prepared the Android build for Android Gradle Plugin 9. The SDK now applies the Kotlin Gradle plugin only when AGP is not compiling Kotlin itself, so it keeps building on both current and upcoming AGP versions. No change is needed in your app.

The SDK's own Android sources now compile against Java 17. Your app's compileOptions are unaffected — apps building at Java 11 or Java 8 continue to work unchanged.


v3.12.0

Release Date: 18th August 2026

Change Log :

  • Meeting actions now report an error instead of doing nothing

    Calling a meeting action before the meeting is joined, or while it is reconnecting, is now rejected and reported through Events.error. This covers Room, Participant, Stream, PubSub, RealtimeStore and Character.

    • Before the meeting is joined, and after it is left or ended: ERROR_ACTION_PERFORMED_BEFORE_MEETING_JOINED (3022)
    • While reconnecting: ERROR_MEETING_RECONNECTING (3027)
    • leave() is never blocked — it works while the meeting is still connecting and while it is reconnecting, so you can always get out. end() works while connecting, but not while reconnecting, because closing the meeting for everyone needs a working connection.
  • New RoomState.failed

    Delivered through Events.roomStateChanged when a join could not be set up at all — a rejected token, or meeting settings that could not be fetched. Unlike reconnecting, nothing retries it; call join() again to start a fresh attempt.

    Breaking: if you switch over RoomState without a default branch, add case RoomState.failed: when upgrading.

Bug Fix :

  • leave() no longer hangs when the connection drops. Calling leave() while the meeting was reconnecting never finished — the camera and microphone stayed on and Events.roomLeft never fired, so the app was stuck on the meeting screen. Leaving now completes immediately, whatever the connection is doing.

  • Actions called before join no longer crash. participant.pin(), unpin() and the realtimeStore methods report the error instead of throwing.


v3.11.0

Release Date: 11th August 2026

Change Log :

  • Your camera & microphone settings now stay applied for the whole meeting

    Earlier, the settings you chose while creating a camera or microphone track were applied only the first time. Whenever the SDK needed to recreate the track, it went back to its own defaults (720p video, speech_standard audio, front camera, no noise settings). So a participant who joined at 1080p could end up sending 720p video after simply turning the camera off and on again.

    Your chosen settings are now remembered and re-applied every time. This covers:

    • Camera: selected camera, encoderConfig (resolution/quality), multiStream, bitrateMode, maxLayer and facingMode.
    • Microphone: selected microphone, encoderConfig (audio quality) and noiseConfig.

    codec is the one exception — it follows what the meeting can actually carry. If a participant joins who cannot decode your selected codec, the camera falls back to VP8 and stays there for the rest of the meeting, even if that participant leaves.

    Settings are preserved across all of these:

    • disableCam()enableCam() and muteMic()unmuteMic()
    • changeCam() / changeMic() when switching to another device
    • Automatic reconnection after a network drop
    • Automatic recovery when a camera or microphone stops (device unplugged, or taken over by another app)
    • changeMode() between SEND_AND_RECV, RECV_ONLY

    If you pass a new CustomTrack to enableCam(), unmuteMic(), changeCam() or changeMic(), that track's settings become the remembered settings from that point on.

Bug Fix :

  • A new track no longer changes the quality of a track that is already being sent. The selected bitrateMode was shared across tracks, so creating a second track with a different mode changed the quality of the video already going out. Each track now uses only the mode you set for it.

  • Your multiStream choice is no longer lost. If the video codec in use could not send multiple quality layers, multiStream stayed switched off for the rest of the meeting. Your choice is now remembered and applied again automatically once the codec allows it.

  • Unmuting works even if the microphone was released earlier. If something else had taken the microphone away — another app, or the participant changing mode — unmuting could fail to bring it back. The SDK now creates a fresh microphone with your saved settings.

  • The same codec warning is no longer repeated. The warning about multiple quality layers not being supported by the selected codec was raised again on every camera on/off. It is now raised only when you supply a track yourself.

  • The camera and microphone no longer switch off on their own. When the SDK replaces the camera or mic stream (codec change, device switch, reconnect), the old stream sends a "stopped" notice. That notice was treated as "the user's camera stopped", so the camera turned off right after turning on. Each notice is now matched to the stream it belongs to.

  • The camera no longer restarts twice. The SDK turns the camera off and on again automatically when it must re-send video in a different codec. If two participants who need that change joined at nearly the same moment, this ran twice — other participants saw the video freeze for about twice as long. Only one restart now runs at a time.

  • Running more than one meeting in the same app shows the correct camera/mic state. Camera and mic on/off state was shared between meetings, so one meeting could report the other's state. Each meeting now keeps its own — this also fixes wrong state when leaving and rejoining quickly.

  • A muted microphone or camera works again after a mode change. If the mic (or camera) was off when changeMode() was called, the SDK released it but still held on to the released one and tried to reuse it. Unmuting afterwards showed the mic as ON while no one could hear the participant. A fresh microphone/camera is now always created.

  • Invalid maxLayer values are handled safely. Values outside 13 are adjusted to the nearest valid value instead of producing a broken video configuration.


v3.10.0

Release Date: 7th July 2026

Change Log :

  • Added support for selectable video codecs in createCameraVideoTrack(). The codec option supports VP8, VP9, AV1, and H264 through VideoCodec.

Docs : Codec


v3.9.0

Release Date: 13th April 2026

Change Log :

  • Added Events.agentMetrics event on AgentParticipant to receive real-time agent metrics data.
  • Improved room joining time.
  • Improved performance by offloading heavy processing to background threads.

3.8.0

Release Date: 18th March 2026

Change Log :

  1. Introduced AgentParticipant, a dedicated participant type for AI agents within a room. Agents can be identified using the isAgent property when they join.

    Docs: AgentParticipant

  2. Added AgentState enum (IDLE, LISTENING, THINKING, SPEAKING) to represent the agent lifecycle.

    Docs: AgentState

  3. Added event listeners for agent updates:

  4. Updated internal dependencies.


3.7.0

Release Date: 20th Feb 2026

Change Log :

  • Introduced the setLogLevel method in VideoSDK, enabling developers to control log verbosity. This improves debugging efficiency during development.

Documentation


v3.6.1

Release Date: 09th Feb 2026

  • Updated the official Dart API Reference for the Flutter VideoSDK package. Docs: Videosdk

v3.6.0

Release Date: 5th Feb 2026

Change Log :

  1. Introduced an autoConsume boolean parameter in the createRoom() method, allowing developers to control whether participant streams are consumed automatically.

  2. Added new methods in the Participant class to manually start and stop consuming participant streams when autoConsume is set to false.

  3. Updated the official Dart API Reference for the Flutter VideoSDK package.

    Docs: Videosdk

Bug Fix :

  1. Resolved an audio distortion issue (chipmunk effect) occurring with Bluetooth output devices such as AirPods.

  2. Fixed a Windows build error affecting Flutter desktop builds.

  3. Resolved an issue related to switching external camera and microphone devices on the web.

  4. Updated internal dependencies.

  5. Fixed an issue where video streams were not rendering when multiple participants were present in a meeting on macOS.


v3.5.1

Release Date: 20th Jan 2026

  • Updated Internal Dependencies.

v3.5.0

Release Date: 06th Jan 2026

  • Added Realtime Store functionality - Enables you to store, update, retrieve, and observe custom key-value data within a meeting in real time.

    Docs: RealtimeStore

  • Fixed an iOS issue with switching audio output devices.


v3.4.0

Release Date: 31st Dec 2025

  1. Updated the default encoderConfig value in createCameraVideoTrack() to h720p_w1280p.

  2. Introduces advanced video track optimization features, enabling greater flexibility and control over quality and bandwidth. Below are the new parameters added to createCameraVideoTrack().

  • BitrateMode

    • Added the BitrateMode parameter to manage video quality and bandwidth usage easily.
    • Developers can now select from three modes based on their requirements:
      • bandwidth_optimized
      • balanced (default)
      • high_quality
      • Docs: BitrateMode
  • maxLayer

    • Introduced the maxLayer parameter to allow developers to specify the maximum number of simulcast layers published for a video track.
    • Docs: maxLayer
  1. Added a quality-limitation Event on the Room class, enabling detection and handling of quality constraints caused by bandwidth limitations, network congestion, or CPU pressure.

    Docs: qualityLimitation

  2. Introduced a stream-state Event on the Stream class to track video and screen-share stream lifecycle states, including active, stuck, freeze-detected, and ended.

    Docs: streamStateChanged


v3.3.0

Release Date: 12th Dec 2025

  1. Introduced Adaptive Subscription Manager feature, allowing dynamic management of participant subscriptions based on network conditions and application requirements.

Docs: Scalability Guide


v3.2.0

Release Date : 6th Nov 2025

  1. Introduced two new methods — pause() and resume() — enabling developers to pause and resume active streams.

Docs: pause()

Docs: resume()

  1. Added a new LeaveReason enum to show specific reasonin roomLeft and participantLeft event.

Docs: roomLeft

Docs: participantLeft

Bug Fix :

  1. Resolved an issue where acknowledgment events were not properly handled in the Pin-State system.
  2. Fixed a bug causing random resolutions to be used after setting a custom track, ensuring consistent video quality as defined by the user.

v3.1.0

Release Date : 17th Oct 2025

Change Log :

  1. On the web, the microphone will now be muted when the input audio device is disconnected. Users will need to unmute it to continue.

Docs switchAudioDevice

Bug Fix :

  1. Fixed issues in Multistream.

v3.0.0

Release Date : 19th Sept 2025

Change Log :

  1. Introduced support for Android API Level 35.

  2. Added an option to share system audio while screen sharing on Android.

    Docs: Share Screen Audio

  3. Introduced Reason mapping for the participantLeft event.

    Docs: Participant Left

  4. Enabled background camera usage on iOS for Picture-in-Picture (PiP) mode.

Bug Fix :

  1. Resolved issues related to room stats on Android, iOS, and macOS.
important

To use this version, ensure that your Flutter version is updated to 3.28.0 or later.


v2.3.1

Release Date : 4th July 2025


v2.3.0

Release Date : 30th May 2025

Change Log :

  1. Added captureImage method in the Participant class to capture the image of the user from MediaStream.

    Docs: captureImage

  2. Added methods uploadBase64File and fetchBase64File in Room class to upload and download a temporary file.

    Docs: uploadBase64File

    Docs: fetchBase64File


v2.2.0

Release Date : 16th May 2025

1. Relay Media (PK Host)

Introducing Relay Media, enabling hosts to share their media (audio, video, screen) with other live streams. Perfect for creating engaging "PK battles" and collaborative broadcasts.

Docs:

2. Fast Channel Switching

New Fast Channel Switching feature enables instant transitions between live streams with minimal latency.

Docs:


v2.1.2

Release Date : 29th April 2025

Bug Fix :

  • Fixed an issue where multiStream wasn’t working properly, making multiple streams work as expected.

v2.1.1

Release Date : 17th April 2025

Bug Fix :

  • Fixed End-to-End Encryption (E2EE) for web.

Change Log :

  • New Methods in Room Class:

    • pauseAllStreams(): Pauses all media streams (audio, video, and screen share) or a specific stream type if provided.
    • resumeAllStreams(): Resumes all paused media streams (audio, video, and screen share) or a specific stream type if provided.

    Docs: Room Class - Methods


v2.1.0

Release Date : 11th April 2025

Change Log :

  • Introduced End-to-End Encryption (E2EE) support to ensure secure media transmission, where media streams are fully encrypted between participants without any server-side access.

Docs: End-to-End Encryption Setup


v2.0.0

Release Date : 1st April 2025

Change Log :

  • Enhanced Room/Meeting Connection Flow:

    • A RECONNECTING state has been introduced that activates if the network connection is lost during a meeting. The SDK will automatically try to rejoin, enhancing reliability.

    • The FAILED, CLOSING, and CLOSED states have been eliminated. All disconnection scenarios will now be managed by the DISCONNECTED state for a more streamlined experience.

Got a Question? Ask us on discord