Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Backup codec publish robustness follow-ups (from #1159 review)

Open
#1,162 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet
Tech stack
android, flutter, javascript
Domain
mobile, testing

Research direction

Start by reading addSimulcastTrack, createSimulcastTransceiverSender, restartTrack, and clearSimulcastState in the Flutter SDK, then compare the mentioned JavaScript behavior in LocalParticipant.ts. Trace the existing publish, unpublish, and reconnect tests; the issue also calls for mock e2e container video-publish support. Done means the failure, duplicate, recovery, and cleanup cases are covered and the backup codec republishes as intended.

Written by the indexing model from the issue text.

Description

Deferred items from the #1159 review, none urgent since #1159 removed the paths that made the first two reachable.

  • No rollback when backup codec publish fails mid flight. addSimulcastTrack inserts into simulcastCodecs before createSimulcastTransceiverSender, a failure leaves the entry with a null sender and the codec will not retry until unpublish or full reconnect. Same structure exists in JS.
  • addSimulcastTrack throws on duplicate where JS logs and skips. Porting JS behavior means a nullable return (breaking API per dart-apitool) or an idempotent skip, needs a small design decision and its own test.
  • Consider restartTrack() during rePublishAllTracks like JS, to recover capture after device sleep.
  • Integration test that unpublish and full reconnect actually invoke clearSimulcastState (needs mock e2e container video publish support).

Cross SDK findings worth reporting upstream while porting this cleanup:

  • JS gates its simulcast cleanup on trackSender non null and PC state, so the stale state fixed by #1159 is reachable there too (LocalParticipant.ts unpublishTrack).
  • Android never clears simulcastCodecs at all.
    Both fail silently because their duplicate handling skips instead of throwing, the backup codec just never republishes.
Dominant language
Dart
Stars
421
Forks
260
Avg merge
3d 9h
Merged PRs (30d)
11

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from livekit/client-sdk-flutter

All issues in livekit/client-sdk-flutter

Similar issues

More Dart issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.