Install ReportWright
ReportWright ships on NuGet. Add the packages your page needs (Choose your packages) to a project that targets .NET 8 or .NET 10.
Add the packages
dotnet add package ReportWright.Blazor.Viewer
dotnet add package ReportWright.Blazor.Designer
dotnet add package ReportWright.AspNetCore
dotnet add package ReportWright.Data.Csv
ReportWright follows SemVer from 1.0.0: a minor version adds, a major version is the only place a public member changes or goes. Pin the version your build was tested with.
Reference the stylesheet
Both components draw with one stylesheet, served from the ReportWright.Blazor package's static web assets. Add it to your App.razor (or _Host.cshtml) head:
<link rel="stylesheet" href="@Assets["_content/ReportWright.Blazor/reportwright.css"]" />
The components load their JavaScript module themselves.
Light and dark themes
The components are light by default and turn dark when the system is dark. To pin a theme, set a component's Theme parameter ("light", "dark" or "high-contrast"), or put data-rw-theme on any ancestor to pin every component on the page at once. A component's own Theme wins.
For a theme switch your users' browsers remember, load the optional script in the page head and add a select anywhere:
<script src="@Assets["_content/ReportWright.Blazor/reportwright-theme.js"]"></script>
<select data-rw-theme-select aria-label="Theme">
<option value="">System</option>
<option value="light">Light</option>
<option value="dark">Dark</option>
<option value="high-contrast">High contrast</option>
</select>
The script stores the choice, applies it to <html data-rw-theme>, keeps it across Blazor's enhanced navigation, and offers window.rwTheme.get() and window.rwTheme.set(theme) for your own controls. In the dark theme the report page stays white, as paper does in Report Builder and Word, because report content carries colours that assume paper.
Fonts
On a server the engine uses the machine's fonts. In the browser (WebAssembly) it uses a bundled set of metric-compatible fonts, because a browser has no font directory to scan; ReportViewerBackend.CreateBundledFonts() builds that engine. A PDF rendered on the server therefore uses real Arial where the browser preview used its metric twin; embed the fonts your reports name on the server for exact parity.
Check the engine version
Every ReportWright package pins one DocWright version (1.4.0 for ReportWright 1.1.0; 1.3.1 for 1.0.0). You do not install the engine separately; NuGet restores it with the ReportWright packages. What ReportWright supports says what that engine draws.