> ## 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 5, 2021

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

<img src="https://mintcdn.com/daily-co/k5NXwOZS3v6Jul7S/assets/changelog/changelog-12.png?fit=max&auto=format&n=k5NXwOZS3v6Jul7S&q=85&s=760f00208da96a8c9f675eaea6e14c5d" alt="Audio-only demo app Party Line features icons representing speakers and listeners" width="1200" height="674" data-path="assets/changelog/changelog-12.png" />

Test out an audio-only platform or build your own with our [Party Line](https://partyline.daily.co/) demo and [source code](https://github.com/daily-demos/party-line).

In addition to all changes below, since we last wrote we shipped a multi-platform audio-only demo we're calling [Party Line](https://partyline.daily.co/). Read on, then Party on!

## daily-js 0.11.0

### 🔇  More insight into why a participant's audio or video might be off.

If a meeting owner explicitly mutes a participant via `updateParticipant(id, { setAudio: false })` or `updateParticipant(id, { setVideo: false })`, or mutes multiple participants via `updateParticipants()`, then `participants()[id].tracks.audio.off` and `participants()[id].tracks.video.off` may now include `byRemoteRequest: true`.

> Note that when `byRemoteRequest: true` is set, `byUser: true` will also be set. You don't have to change any existing code and can continue treating meeting-owner-triggered mutes as regular mutes. When a user unmutes themselves, `byRemoteRequest` disappears along with `byUser.`

The current default value is 9, which is also the maximum number that may be specified.

### 🎥  Specify `max_cam_streams` used in a live stream.

When using the default `layout` in [startLiveStreaming()](/reference/daily-js/instance-methods/start-live-streaming), you can now limit the number of camera streams included in the live stream to the specified number.

```js theme={null}
startLiveStreaming({
  rtmpUrl,
  backgroundColor,
  layout: { preset: 'default', max_cam_streams: 4 },
});
```

## react-native-daily-js 0.8.0

### 🔏  **(**BETA**) Room access control methods and events**

If you're using WebSocket signaling (`signaling_impl = 'ws'` in your [room config](/reference/rest-api/rooms/get-room#response-config)), then you can try out a new set of room access control APIs geared towards implementing a "lobby". Users can request "full" access to a meeting and wait for a meeting owner to let them in.

These new methods and events let you:

* Determine the local participant's access level, even before attempting to join a meeting: [`preAuth()`](/reference/daily-js/instance-methods/pre-auth), [`accessState()`](/reference/daily-js/instance-methods/access-state), [`'access-state-updated'`](/reference/daily-js/events/lifecycle-events#access-state-updated)
* Request elevated access to a meeting: [`requestAccess()`](/reference/daily-js/instance-methods/request-access)
* Manage pending access requests (if you're a meeting owner): [`waitingParticipants()`](/reference/daily-js/instance-methods/waiting-participants), [`updateWaitingParticipant()`](/reference/daily-js/instance-methods/update-waiting-participant), [`updateWaitingParticipants()`](/reference/daily-js/instance-methods/update-waiting-participants), [`'waiting-participant-added'`](/reference/daily-js/events/participant-events#waiting-participant-added), [`'waiting-participant-updated'`](/reference/daily-js/events/participant-events#waiting-participant-updated), [`'waiting-participant-removed'`](/reference/daily-js/events/participant-events#waiting-participant-removed)

### 🔇  More insight into why a participant's audio or video might be off (see `daily-js 0.11.0` above).

## **Bugfixes and other improvements**

* 📹  The [`'recording-started'`](/reference/daily-js/events/recording-events#recording-started) event payload now includes `local` and `recordingId`.

## New blog posts and podcasts

<div className="contentRowContainer">
  <div className="contentRow">
    <ContentCard title="How to build a billion dollar audio app in a weekend" date="10 Mar 2021" readTime={9} href="https://www.daily.co/blog/how-to-build-a-billion-dollar-audio-app-in-a-weekend/" />

    <ContentCard title="Webinar Series #3: Create admins in React apps with Daily meeting tokens" date="19 Mar 2021" readTime={8} href="https://www.daily.co/blog/create-admins-in-react-apps-with-daily-meeting-tokens/" />
  </div>

  <div className="contentRow">
    <ContentCard title="Community spotlight: Using Daily's video chat API with Anvil" date="19 Mar 2021" readTime={5} href="https://anvil.works/articles/daily-co-video-chat" />

    <ContentCard title="Podcast: Advocating for yourself: ADHD and Dyslexia for Underrepresented Folks w/ Wesley Faulkner" date="16 Mar 2021" readTime={65} href="https://share.transistor.fm/s/243b9705" />
  </div>

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