github daily-co/daily-js daily-js-2022-11-18-0.34.0
0.34.0

latest releases: daily-js-2024-10-31-0.73.0, daily-js-2024-10-30-0.72.2, daily-js-2024-10-04-0.72.1...
24 months ago

Features

  • Added support for sending custom tracks in addition to camera, mic, and screen tracks.
    If you were previously using beta* methods to do this, you can migrate your code to use the new methods, which support sending custom tracks in peer-to-peer mode.
    To start a custom track:

    const trackName = await callObject.startCustomTrack({ track });
    
    // or, with all options specified...
    
    await callObject.startCustomTrack({
      track,
      trackName: 'myGrooves',
      mode: 'music'
    });

    To stop a custom track you’ve started:

    callObject.stopCustomTrack(trackName);

    You and other participants will receive track state updates via the normal 'participant-updated' event.

  • Added a showUserNameChangeUI call option for controlling whether to display the user name change UI in embedded Daily Prebuilt (true by default). When set to false, you should use tokens to assign participants user_names.

    const callObject = DailyIframe.createCallObject({
      showUserNameChangeUI: false,
    });
  • Added a maxDuration option when starting a recording. The max recording duration is 3 hours if not specified. It is recommended you not touch this setting unless you’re planning on particularly long recorded meetings.

    callObject.startRecording({ maxDuration: 4 * 60 * 60 });
  • Pre-beta (early access customers only): Introduced a new meeting session data system, where you can set arbitrary data on a meeting that is synced to all participants. Some limits apply (see below, after code blocks).
    To add data to a meeting:

    callObject.setMeetingSessionData({ foo: 'bar' });
    
    // or, with all options specified...
    
    // replace the previous meeting session data with the new data (the default behavior)
    callObject.setMeetingSessionData({ foo: 'bar' }, 'replace');
    // merge top-level keys in the new data on top of the previous data
    callObject.setMeetingSessionData({ foo: 'bar' }, 'shallow-merge');

    To access meeting session data:

    callObject.meetingSessionState().data;

    To get notified when the meeting session data changed:

    // note: this event actually fires when anything in meetingSessionState() 
    // changes, which includes topology ('sfu' or 'peer')
    callObject.on('meeting-session-state-updated', (event) => {
      console.log(event.meetingSessionState.data);
    });

    Please reach out to us if you'd like to discuss early access to this feature.

    Limits:

    • Data should be in the form of “plain” (map-like) JavaScript objects and should be JSON-serializable
    • The rate of syncing data to clients is limited, so this system is not suited for highly real-time applications where sub-second interactions matter
    • Data is limited in size, so this system is not suited for things like file-sharing

Bugfixes

  • Fixed erroneously-reported track states for rmpAudio and rmpVideo tracks when a remote media player was paused.
    Now, after a pause:
    callObject.participants()['some-id'].tracks.rmpVideo.state; // 'off'
    callObject.participants()['some-id'].tracks.rmpVideo.off.byUser; // true

Don't miss a new daily-js release

NewReleases is sending notifications on new releases.