Skip to content

Releases: daily-co/daily-react

0.21.3

24 Oct 12:47
Compare
Choose a tag to compare

Improvements

  • Added checks to fail gracefully when MediaStream and MediaStreamTrack APIs are not available

0.21.2

15 Oct 07:15
Compare
Choose a tag to compare

Improvements

  • Improved Jotai state atoms for reduced CPU and memory usage.

Maintenance

  • Updated dependencies in minimal example.

0.21.1

08 Oct 09:07
Compare
Choose a tag to compare

Maintenance

  • Added jotai as peer dependency (Thanks @byarmis)

0.21.0

01 Oct 07:25
Compare
Choose a tag to compare

Breaking changes

  • Removed recoilRootProps from DailyProvider as we've internally migrated from Recoil to Jotai.
  • Added jotaiStore prop to DailyProvider, which, when passed with a Jotai store, is equivalent to passing recoilRootProps={{ override: false }} in previous versions.

Maintenance

  • Replaced faker with @faker-js/faker

Thanks to @TimHeckel for supporting the migration to Jotai!

0.20.0

18 Jul 13:38
Compare
Choose a tag to compare

⚠️ This release requires @daily-co/daily-js@>=0.68.0.

Features

  • useAudioLevelObserver(): new hook to handle participant mic volume levels. This hook is based on audio level observers in daily-js.

Improvements

  • useParticipantIds(): the fix to avoid potential stale state introduced in 0.19.1 was reverted, due to negative performance impact. Instead stale state is now avoided by prioritizing internal event handlers in Daily React over application level event handlers.

Deprecations

0.19.1

27 Jun 07:06
Compare
Choose a tag to compare

Bugfixes

  • useParticipantIds(): when using a custom filter or sort it was possible that useParticipantIds() would return stale state until for any affected participant a participant-updated event was emitted.
  • useActiveSpeakerId(): the internally stored id of the last active speaker is now correctly reset when receiving a left-meeting event.
  • useParticipantProperty(): when embedding a Daily React app inside Angular's NgZone, attempting to resolve a MediaStreamTrack property could result in a recursive loop, due to NgZone's monkey-patching behavior on certain browser objects. (Thanks @stewartmcgown!)

0.19.0

08 May 13:32
Compare
Choose a tag to compare

Changes

  • ⚠️ Breaking change: useCallFrame: Instead of accepting the resolved value for a given parentEl, it will now accept a React Ref parentElRef. This generally improves the DX when working with conditionally rendered call frame wrappers.
// Before
const ref = useRef(null);
const callFrame = useCallFrame({
  parentEl: ref.current,
});

// Now
const ref = useRef(null);
const callFrame = useCallFrame({
  parentElRef: ref,
});
  • Removed unnecessary playsInline attributes from rendered <audio> elements
  • Updated devDependencies

0.18.0

21 Mar 13:14
Compare
Choose a tag to compare

Maintenance

This adds a behavioral change in how transcription messages are handled, when interim results were configured. In order to distinguish interim from final results, transcription needs to be configured with includeRawResponse: true. See startTranscription() for details.

0.17.3

28 Feb 09:12
Compare
Choose a tag to compare

Bugfixes

  • Fixed an issue where useTranscription() returned isTranscribing: true after a meeting ended
  • Fixed an issue where useActiveSpeakerId() unnecessarily initialized its state with null, when an active speaker id was already present
  • Fixed an issue where useAudioLevel() broke echo cancellation in Firefox, due to unintentionally playing out an audio track when it was meant to be analyzed only

0.17.2

08 Feb 12:07
Compare
Choose a tag to compare

Improvements

  • When unmounting and remounting DailyProvider, useCallObject or useCallFrame(), it will now correctly rewire to a previously created call instance, if one is available, and, when required, destroy it and create a new one. This further prevents duplicate call instance errors.
  • useCallFrame() better handles a React DOM ref passed as parentEl and will only create the call frame, when the referenced DOM element is ready. Make sure to initialize a DOM ref with useRef(null).