aspnetcore/breaking-changes/5/kestrel-libuv-transport-obsolete.md
Earlier versions of ASP.NET Core used Libuv as an implementation detail of how asynchronous input and output was performed. In ASP.NET Core 2.0, an alternative, xref:System.Net.Sockets.Socket-based transport was developed. In ASP.NET Core 2.1, Kestrel switched to using the Socket-based transport by default. Libuv support was maintained for compatibility reasons.
At this point, use of the Socket-based transport is far more common than the Libuv transport. Consequently, Libuv support is marked as obsolete in .NET 5 and will be removed entirely in .NET 6.0.
As part of this change, Libuv support for new operating system platforms (like Windows Arm64) won't be added in the .NET 5 timeframe.
For discussion on blocking issues that require the use of the Libuv transport, see the GitHub issue at dotnet/aspnetcore#23409.
5.0 Preview 8
The Libuv APIs aren't marked as obsolete.
The Libuv APIs are marked as obsolete.
The Socket-based transport is the default. There aren't any compelling reasons to continue using the Libuv transport.
Discontinue use of the Libuv package and extension methods.
Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.LibuvTransportOptions.Backlog