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
compileSdkVersionerror, Android builds now work directly afterflutter 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
compileOptionsare 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 coversRoom,Participant,Stream,PubSub,RealtimeStoreandCharacter.- 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.
- Before the meeting is joined, and after it is left or ended:
-
New
RoomState.failedDelivered through
Events.roomStateChangedwhen a join could not be set up at all — a rejected token, or meeting settings that could not be fetched. Unlikereconnecting, nothing retries it; calljoin()again to start a fresh attempt.Breaking: if you
switchoverRoomStatewithout adefaultbranch, addcase RoomState.failed:when upgrading.
Bug Fix :
-
leave()no longer hangs when the connection drops. Callingleave()while the meeting was reconnecting never finished — the camera and microphone stayed on andEvents.roomLeftnever 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 therealtimeStoremethods 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_standardaudio, 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,maxLayerandfacingMode. - Microphone: selected microphone,
encoderConfig(audio quality) andnoiseConfig.
codecis 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()andmuteMic()→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()betweenSEND_AND_RECV,RECV_ONLY
If you pass a new
CustomTracktoenableCam(),unmuteMic(),changeCam()orchangeMic(), that track's settings become the remembered settings from that point on. - Camera: selected camera,
Bug Fix :
-
A new track no longer changes the quality of a track that is already being sent. The selected
bitrateModewas 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
multiStreamchoice is no longer lost. If the video codec in use could not send multiple quality layers,multiStreamstayed 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
maxLayervalues are handled safely. Values outside1–3are 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 throughVideoCodec.
Docs : Codec
v3.9.0
Release Date: 13th April 2026
Change Log :
- Added
Events.agentMetricsevent onAgentParticipantto 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 :
-
Introduced
AgentParticipant, a dedicated participant type for AI agents within a room. Agents can be identified using theisAgentproperty when they join.Docs: AgentParticipant
-
Added
AgentStateenum (IDLE,LISTENING,THINKING,SPEAKING) to represent the agent lifecycle.Docs: AgentState
-
Added event listeners for agent updates:
-
Events.agentStateChangedto track state transitions.Docs: agentStateChanged
-
Events.agentTranscriptionReceivedto receive real-time transcription.
-
-
Updated internal dependencies.
3.7.0
Release Date: 20th Feb 2026
Change Log :
- Introduced the
setLogLevelmethod inVideoSDK, 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 :
-
Introduced an
autoConsumeboolean parameter in thecreateRoom()method, allowing developers to control whether participant streams are consumed automatically. -
Added new methods in the
Participantclass to manually start and stop consuming participant streams whenautoConsumeis set tofalse. -
Updated the official Dart API Reference for the Flutter VideoSDK package.
Docs: Videosdk
Bug Fix :
-
Resolved an audio distortion issue (chipmunk effect) occurring with Bluetooth output devices such as AirPods.
-
Fixed a Windows build error affecting Flutter desktop builds.
-
Resolved an issue related to switching external camera and microphone devices on the web.
-
Updated internal dependencies.
-
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
-
Updated the default encoderConfig value in createCameraVideoTrack() to h720p_w1280p.
-
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_optimizedbalanced (default)high_quality- Docs: BitrateMode
-
maxLayer
- Introduced the
maxLayerparameter to allow developers to specify the maximum number of simulcast layers published for a video track. - Docs: maxLayer
- Introduced the
-
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
-
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
- 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
- Introduced two new methods —
pause()andresume()— enabling developers to pause and resume active streams.
Docs: pause()
Docs: resume()
- Added a new
LeaveReasonenum to show specificreasonin roomLeft and participantLeft event.
Docs: roomLeft
Docs: participantLeft
Bug Fix :
- Resolved an issue where acknowledgment events were not properly handled in the Pin-State system.
- 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 :
- On the web, the
microphonewill now bemutedwhen the input audio device isdisconnected. Users will need tounmuteit to continue.
Docs switchAudioDevice
Bug Fix :
- Fixed issues in Multistream.
v3.0.0
Release Date : 19th Sept 2025
Change Log :
-
Introduced support for
Android API Level 35. -
Added an option to share system audio while screen sharing on Android.
Docs: Share Screen Audio
-
Introduced Reason mapping for the
participantLeftevent.Docs: Participant Left
-
Enabled background camera usage on iOS for Picture-in-Picture (PiP) mode.
Bug Fix :
- Resolved issues related to room stats on Android, iOS, and macOS.
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
-
Enhanced the E2EE feature by introducing participant-wise encryption.
v2.3.0
Release Date : 30th May 2025
Change Log :
-
Added
captureImagemethod in theParticipantclass to capture the image of the user from MediaStream.Docs: captureImage
-
Added methods
uploadBase64FileandfetchBase64FileinRoomclass 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
RoomClass: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
RECONNECTINGstate 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, andCLOSEDstates have been eliminated. All disconnection scenarios will now be managed by theDISCONNECTEDstate for a more streamlined experience.
-
Got a Question? Ask us on discord

