Blazor is a framework for doing client-side web UI development with .NET and C# instead of JS. Blazor is open-source and based purely on open web standards (no custom plugins or code transpilation). We currently have two different approaches (hosting models) for accomplishing this:

Blazor Server sets up a real-time connection with the browser and handles all UI interactions on the server. Blazor Server support shipped with .NET Core 3.0 and is available for production use today. With Blazor Server apps, all your code stays on the server, so the client is very thin. The download size is small and the app loads fast. Your Blazor UI code runs on .NET Core and has access to all the server resources (you can connect directly to a database, make arbitrary outbound requests, etc.). However, with Blazor Server apps you do need to worry about network latency and dealing with server scale out if you expect to have a lot of concurrent connected users.

Blazor WebAssembly runs your client-side code in the browser using a WebAssembly based .NET runtime that is downloaded with the app. Blazor WebAssembly apps are analogous to existing frontend JS based apps: you can deploy a Blazor WebAssembly app as a static site, support offline scenarios, build PWAs, and offload client concerns to the user's device. Blazor WebAssembly works in all modern browsers that support WebAssembly (basically all browsers except IE). Blazor WebAssembly is still in preview, but is expected to ship in May of next year.

Whether you use Blazor Server or Blazor WebAssembly, the component model is the same. This means you can use the same components with either hosting model, and you can switch between them with very little work. We also expect to introduce additional hosting models in the future for building hybrid and native apps.