diff --git a/aspnetcore/blazor/tutorials/build-a-blazor-app.md b/aspnetcore/blazor/tutorials/build-a-blazor-app.md
index 6ce8c06e60b8..3e1cfcd6ea02 100644
--- a/aspnetcore/blazor/tutorials/build-a-blazor-app.md
+++ b/aspnetcore/blazor/tutorials/build-a-blazor-app.md
@@ -13,6 +13,13 @@ zone_pivot_groups: blazor-hosting-models
[!INCLUDE[](~/includes/not-latest-version.md)]
+:::moniker range=">= aspnetcore-8.0"
+
+> [!IMPORTANT]
+> This is the .NET 8 preview version of this article, which is currently undergoing updates for .NET 8. Some of the features described might not be available or fully working at this time. The work on this article will be completed when .NET 8 reaches the *Release Candidate* stage, which is currently scheduled for September. For the current release, see the [.NET 7 version of this article](?view=aspnetcore-7.0&preserve-view=true).
+
+:::moniker-end
+
This tutorial provides a basic working experience for building and modifying a Blazor app. For detailed Blazor guidance, see the [Blazor reference documentation](xref:blazor/index).
Learn how to:
@@ -33,6 +40,16 @@ At the end of this tutorial, you'll have a working todo list app.
Create a new Blazor app named `TodoList` in a command shell:
+:::moniker range=">= aspnetcore-8.0"
+
+```dotnetcli
+dotnet new blazor -o TodoList
+```
+
+:::moniker-end
+
+:::moniker range="< aspnetcore-8.0"
+
:::zone pivot="server"
```dotnetcli
@@ -49,6 +66,8 @@ dotnet new blazorwasm -o TodoList
:::zone-end
+:::moniker-end
+
The preceding command creates a folder named `TodoList` with the `-o|--output` option to hold the app. The `TodoList` folder is the *root folder* of the project. Change directories to the `TodoList` folder with the following command:
```dotnetcli
@@ -68,11 +87,40 @@ cd TodoList
> [!IMPORTANT]
> Razor component file names require a capitalized first letter. Open the `Pages` folder and confirm that the `Todo` component file name starts with a capital letter `T`. The file name should be `Todo.razor`.
-1. Open the `Todo` component in any file editor and add an `@page` Razor directive to the top of the file with a relative URL of `/todo`.
+:::moniker range=">= aspnetcore-8.0"
+
+1. Open the `Todo` component in any file editor and make the following changes at the top of the file:
+
+ * Add an `@page` Razor directive with a relative URL of `/todo`.
+ * Add the `@rendermode` Razor directive set to `Auto`. The directive indicates that for this component the render mode should be determined automatically based on a policy. The default render mode for a Blazor Web App is server-side rendering (SSR), which means that the `Todo` component is rendered interactively on the server via Blazor Server hosting with server-side prerendering.
+ * Add a page title with the `PageTitle` component, which enables adding an HTML `
` element to the page.
+
+:::moniker-end
+
+:::moniker range=">= aspnetcore-6.0 < aspnetcore-8.0"
+
+1. Open the `Todo` component in any file editor and make the following changes at the top of the file:
+
+ * Add an `@page` Razor directive with a relative URL of `/todo`.
+ * Add a page title with the `PageTitle` component, which enables adding an HTML `` element to the page.
+
+:::moniker-end
+
+:::moniker range="< aspnetcore-6.0"
+
+1. Open the `Todo` component in any file editor and add an `@page` Razor directive with a relative URL of `/todo`.
+
+:::moniker-end
`Pages/Todo.razor`:
-:::moniker range=">= aspnetcore-7.0"
+:::moniker range=">= aspnetcore-8.0"
+
+ :::code language="razor" source="build-a-blazor-app/8.0/Todo0.razor" highlight="1":::
+
+:::moniker-end
+
+:::moniker range=">= aspnetcore-7.0 < aspnetcore-8.0"
:::code language="razor" source="build-a-blazor-app/7.0/Todo0.razor" highlight="1":::
@@ -102,11 +150,17 @@ cd TodoList
The `NavMenu` component is used in the app's layout. Layouts are components that allow you to avoid duplication of content in an app. The `NavLink` component provides a cue in the app's UI when the component URL is loaded by the app.
- In the navigation element content (`