Skip to content

ICE server restoration after backgrounding with app-state management enabled #57

Description

@3DTek-xyz

react-native-voice-sdk@0.4.2 uses custom ICE servers now - which saves us one patch - , but @telnyx/react-voice-commons-sdk does not rehydrate them after session restore

We verified that @telnyx/react-native-voice-sdk@0.4.2 now correctly consumes custom iceServers when they are present. That part works.

The missing piece is session restore: our app backgrounds/disconnects the Telnyx voice session and later rebuilds it from stored config. In that path, the ICE server list needs to be restored too. Right now the SDK can use ICE servers, but the commons restore path does not automatically rehydrate them from persisted state.

Our app runs with app-state management enabled, so backgrounding can tear down the voice session. If the ICE servers only exist during the initial login, they can be lost on refresh/reconnect.

After a rebuilt iOS run, our logs show the restored session still had:

  • storedConfigVersion = rtc-ice-v5
  • loginFromStoredConfig:result = true
  • iceServers: 2

That is working in our app because we added local persistence/rebuild glue.

Expected behavior
If custom ICE servers were supplied before disconnect, the same list should be restored and passed back into the Telnyx client automatically on session rehydration.

Actual behavior
react-native-voice-sdk@0.4.2 can use ICE servers when provided, but it does not solve rehydration by itself. Without commons-side persistence, the list is not guaranteed to survive a background disconnect / foreground restore cycle.

We currently persist and reload the ICE server list before login, then pass it back into the Telnyx client during restore.

Please add first-class ICE server rehydration support in the commons/session restore path so apps do not need local persistence glue just to keep TURN/STUN config alive across reconnects.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions