Library / SDK
Unity-Technologies/com.unity.webrtc avatar
Unity-Technologies/com.unity.webrtc

com.unity.webrtc is a deprecated Unity package that still tracks libwebrtc M116

WebRTC package for Unity

855 stars241 forksAssemblyNOASSERTION

At a glance

What is it?
WebRTC for Unity is a Unity package that wraps libwebrtc and exposes real-time communications to Unity projects, shipped with a runtime layer, an editor layer, tests, samples and a native plugin you can rebuild yourself. The README now opens by marking the package deprecated and pointing streaming users at Unity Render Streaming, which is the first thing to weigh before adopting it.
Who is it for?
Adopt com.unity.webrtc only for an existing project that already depends on it and needs to stay on the same libwebrtc baseline, since a deprecated package with a fixed M116 dependency will not track newer WebRTC work. Do not start new work on it, because the README itself directs streaming users to Unity Render Streaming and the roadmap shows no release after 3.0.0 for September 2025.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 72 days ago.
What is it written in?
Mainly Assembly, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 25, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The first line of the README is a deprecation notice

WebRTC for Unity is a package that allows WebRTC to be used in Unity, and the note at the top of the README says that com.unity.webrtc is deprecated.

That single line changes how the rest of this repository should be read. The package is still here, the documentation is still published, and the code is still in the repository, but the project no longer presents itself as something to build on. The README immediately offers the alternative for the use case it was most used for: if you are interested in the streaming solution with WebRTC, it points at Unity Render Streaming, a separate repository.

The deprecation is not sudden. The release history shows the package's own tags, M116 from 2023-09-11, 3.0.0-pre.8 from 2024-12-13, and M116-20250805 from 2025-08-13. The last push to the main branch was on 2026-08-18, and the repository is not archived, so maintenance has not stopped entirely, but nothing in the roadmap suggests a new major version is coming.

The licence is recorded as a custom one that GitHub cannot classify, and the repository carries a LICENSE.md and a Third Party Notices.md file. That combination is what you would expect from a package that embeds a large third-party media stack, and it is the first document to open if you are evaluating the terms rather than the code.

What the package actually contains

The repository layout is the standard Unity package layout, and it tells you what the package gives you.

There is a Runtime directory for the code that runs in a player, an Editor directory for editor-only tooling, Tests for the test suite, Samples~ for the example content, Documentation~ for the package documentation, and Plugin~ for the native plugin binaries and their build instructions. Tools and BuildScripts~ hold the supporting scripts, and the WebRTC~ directory carries the package assets. There is a CHANGELOG.md, a CONTRIBUTING.md, a TestRunnerOptions.json, a ValidationExceptions.json and an xray-exemptions.json, which is the kind of file set you see in a package that runs its own validation and exemption checks in CI.

The package manifest is short and tells you the compatibility surface:

json
{
  "name": "com.unity.webrtc",
  "displayName": "WebRTC",
  "version": "3.0.0",
  "unity": "6000.0",
  "description": "The WebRTC package provides browsers and mobile applications with Real-Time Communications (RTC) capabilities.",
  "keywords": [
    "webrtc",
    "web"
  ]
}

The declared dependencies are com.unity.modules.jsonserialize at 1.0.0, com.unity.editorcoroutines at 1.0.0 and com.unity.modules.audio at 1.0.0, and the manifest declares a sample named Example pointing at the Samples~ path. The unity field is 6000.0, and the README badge shows Unity 6000.3.

The roadmap is a map of the libwebrtc versions you inherit

The roadmap table in the README is the most informative document in the repository, because it records which libwebrtc build each release was compiled against and when it shipped.

The first entry is 1.0.0-preview on libwebrtc M72 in September 2019, and the list then walks forward one milestone at a time. 1.1.0-preview added IL2CPP support, Linux platform support and a software encoder. 2.0.0-preview moved to M79 and brought multi camera and DirectX12 support. 2.1.0-preview on M84 added the profiler tool and bitrate control. 2.2.0-preview on M85 added a VP8 and VP9 video decoder plus Vulkan and macOS hardware encoder support, and 2.3.0-preview brought iOS.

The 2.4.0 experiment series is where the shape of the project becomes clear. It ran from April to September 2021 on M89, adding Android support, an audio renderer and Apple Silicon support, and then spent the following year on hotfixes and fixes for audio and video streaming issues. The 3.0.0 pre-release series followed from November 2022, moving to M107 and then M112, adding the Encoded Transform API in April 2023 and Simulcast for NVIDIA H.264 in October 2023.

The final two rows are 3.0.0-pre.8 on M116 in December 2024 with a documentation update, and 3.0.0 on M116 in September 2025, described as the release verified version.

So the practical reading is that a project on this package inherits libwebrtc M116, a milestone from 2023, and that the last substantive feature work in the table is the Encoded Transform API and the H.264 simulcast support.

That is the real cost of a deprecated package with a fixed dependency: not that it breaks, but that it stops moving.

Installing it and rebuilding the native plugin

The README defers the install details to the package documentation, pointing at the Install package page under Documentation~, and the requirements at the requirements section of the same folder. The published manual is available in English and Japanese on docs.unity3d.com, under the com.unity.webrtc package path.

The part the README does explain in its own words is the native plugin, for anyone who wants to change the native code in the project. It points at a Build native plugin document in the Plugin~ folder, and that is the only route to a different libwebrtc build than the one the package ships.

The reason to care about Plugin~ is that the WebRTC binaries are native libraries for each platform, and a team that needs a platform the package does not ship, or a libwebrtc milestone with a fix it needs, has to compile that plugin itself. The repository has the BuildScripts~ directory for exactly this purpose.

There is also a separate documented path for the streaming use case. Unity Render Streaming is a different project, with its own repository, and the README positions it as the place to look for a streaming solution built on WebRTC. The distinction matters: this package is the lower level, real-time communications layer for Unity, while Render Streaming is a product that packages video and audio streaming workflows on top of a WebRTC stack.

For an existing project that is not streaming but uses WebRTC for something else, that pointer is a hint rather than a replacement.

What to do with a deprecated package on a live project

Deprecation does not mean the package stops working, so the decision is about risk rather than function.

For a team already shipping with com.unity.webrtc, the immediate question is not whether to migrate but what the migration would cost. A move to Unity Render Streaming means a different API surface and a different set of supported workflows, and for a project that uses WebRTC for voice or data rather than for streaming, there may be no direct equivalent in the recommended direction.

The second question is the platform matrix. The roadmap shows support arriving in stages, with iOS in 2.3.0-preview, Android in 2.4.0-exp.1 and Apple Silicon in 2.4.0-exp.4, and the package manifest declares Unity 6000.0 with the README badge showing 6000.3. A package pinned to an M116 libwebrtc build will keep whatever platform quirks that milestone had.

The third is licensing, and it deserves a look rather than an assumption. The licence identifier on the repository is a custom one that GitHub could not classify, the package ships a Third Party Notices.md alongside LICENSE.md, and the WebRTC stack underneath carries its own terms. For a commercial title that ships the package, someone should read those two files and make the call, and this article is not that reading.

The release cadence is the other half of the picture. Three tags in three years, and the most recent one is a dated build of the M116 line rather than a version bump.

The right conclusion is that this package is now a maintenance surface, not a platform, and a team should treat it that way.

Editorial conclusion

Adopt com.unity.webrtc only for an existing project that already depends on it and needs to stay on the same libwebrtc baseline, since a deprecated package with a fixed M116 dependency will not track newer WebRTC work. Do not start new work on it, because the README itself directs streaming users to Unity Render Streaming and the roadmap shows no release after 3.0.0 for September 2025. Before you depend on it, check the M116 baseline against the libwebrtc features you need, read LICENSE.md and Third Party Notices.md for the terms the package ships under, and confirm that the native plugin in Plugin~ can be rebuilt for the target platforms you ship on.

Frequently asked questions

Is com.unity.webrtc deprecated?

Yes. The README opens with a note saying com.unity.webrtc is deprecated, and it points users interested in a WebRTC streaming solution at Unity Render Streaming. The last push to the main branch was on 2026-08-18 and the repository is not archived.

Which Unity version does the com.unity.webrtc package require?

The package manifest declares the unity field as 6000.0, and the README badge shows Unity 6000.3. The declared dependencies are com.unity.modules.jsonserialize, com.unity.editorcoroutines and com.unity.modules.audio, each at version 1.0.0.

Which libwebrtc version does com.unity.webrtc 3.0.0 use?

The roadmap table maps each release to a libwebrtc milestone, and both 3.0.0-pre.8 from December 2024 and 3.0.0 from September 2025 sit on M116. Earlier releases tracked M72, M79, M84, M85, M89, M92, M107 and M112 in turn.

How do I customize the native code in com.unity.webrtc?

The README points at a Build native plugin document in the Plugin~ folder for anyone who wants to change the native code, and the repository carries Plugin~ and BuildScripts~ directories for that work. The installation and requirements details are in the package documentation under Documentation~.

Official sources

  1. Issues
  2. README
  3. Releases
  4. Unity-Technologies/com.unity.webrtc on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/unity-technologies-com-unity-webrtc.svg)](https://hysenlabs.com/projects/unity-technologies-com-unity-webrtc)

Was this useful?