> ## Documentation Index
> Fetch the complete documentation index at: https://docs.daily.co/llms.txt
> Use this file to discover all available pages before exploring further.

# April 19, 2021

> The latest updates to Daily's real-time audio and video APIs.

<img src="https://mintcdn.com/daily-co/k5NXwOZS3v6Jul7S/assets/changelog/changelog-13.png?fit=max&auto=format&n=k5NXwOZS3v6Jul7S&q=85&s=5bc5a106d08e2bca1e8a975ac8d3ece8" alt="Example text chat in a React app featuring Winona and Keanu" width="697" height="487" data-path="assets/changelog/changelog-13.png" />

*Use the Daily [sendAppMessage()](/reference/daily-js/instance-methods/send-app-message) method to build a React chat component in our new tutorial.*

## daily-js 0.12.0

* 🛤  Built support for custom tracks outside of the standard Daily built-in `cam-audio`, `cam-video`, `screen-audio`, `screen-video`. [Contact us](https://www.daily.co/contact) for beta docs.
* 📈  Enhanced network stats detection
* ❗️  Created error message to specify if a participant has been `ejected-from-meeting`
* 🛑  Added an optional `error` field to the `'camera-error'` and `'error'` event payloads, in addition to the existing `errorMsg` field. This new `error` field includes a type (which you can think of as an error code but a string constant) and an optional `localizedMsg`, which can provide you with a localized UI-friendly message describing the error. See [index.d.ts's](https://github.com/daily-co/daily-js/blob/main/index.d.ts) `DailyCameraErrorType` and `DailyFatalErrorType` for supported error types so far.
* ❌  Improved preauth for expired or invalid meeting tokens and rooms
* 🗺  Shipped [`getDailyLang()`](), which returns a Promise that resolves to `{ lang: <language>, langSetting: <specified language> }`, telling you both the language actually in effect and the language you've specified. For example, if you've specified `'user'` as your language, `getDailyLang()` might return `{ lang: 'en', langSetting: 'user'}`.
* 🌎  Added `'user'` as a possible value when invoking [`setDailyLang()`](/reference/daily-js/instance-methods/set-daily-lang) or as a `lang` property when invoking [`join()`](/reference/daily-js/instance-methods/join), [`preAuth()`](/reference/daily-js/instance-methods/pre-auth), [`startCamera()`](/reference/daily-js/instance-methods/start-camera), or factory methods like [`createFrame()`](/reference/daily-js/factory-methods/create-frame). `'user'` instructs Daily to use the user's preferred language as specified by the browser.

## react-native-daily-js 0.9.0

* ❗️  See the `ejected-from-meeting`, preauth, and `'error'` event payload updates above.

## Bugfixes and other improvements

* 🐛  Updated error handling for revoked camera and mic permissions mid-call
* 👋  So long, Edge 18, it's been a wild ride. [`supportedBrowser().supported`](/reference/daily-js/static-methods/supported-browser) now returns `false` for Edge 18.

## New blog posts and podcasts

<div className="contentRow">
  <ContentCard title="How to stream a local video file during a call - example code for a watch party" date="16 Apr 2021" readTime={3} href="https://www.daily.co/blog/how-to-stream-a-local-video-file-during-a-call/" />

  <ContentCard title="Podcast: Wesley Faulkner - The Neural Diversity Advocate" date="5 Apr 2021" readTime={5} href="https://endless-journey-of-growth.simplecast.com/episodes/wesley-faulkner-the-neural-diversity-advocate" />

  <ContentCard title="Webinar series #4: Build a flexible React chat input using Daily's sendAppMessage" date="2 Apr 2021" readTime={6} href="https://www.daily.co/blog/build-a-react-input-with-sendappmessage/" />

  <style jsx>
    {`
          .contentRow {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
            grid-auto-rows: 1fr;
            grid-gap: 20px;
          }
        `}
  </style>
</div>
