BlazorDeveloperTools 1.0.0-beta.2

This is a prerelease version of BlazorDeveloperTools.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package BlazorDeveloperTools --version 1.0.0-beta.2
                    
NuGet\Install-Package BlazorDeveloperTools -Version 1.0.0-beta.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="BlazorDeveloperTools" Version="1.0.0-beta.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="BlazorDeveloperTools" Version="1.0.0-beta.2" />
                    
Directory.Packages.props
<PackageReference Include="BlazorDeveloperTools" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add BlazorDeveloperTools --version 1.0.0-beta.2
                    
#r "nuget: BlazorDeveloperTools, 1.0.0-beta.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package BlazorDeveloperTools@1.0.0-beta.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=BlazorDeveloperTools&version=1.0.0-beta.2&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=BlazorDeveloperTools&version=1.0.0-beta.2&prerelease
                    
Install as a Cake Tool

alternate text is missing from this package README image

Docs & Live Demo

Blazor Developer Tools

The first visual DevTools for Blazor. See your component tree, profile renders, understand why components re-render. No more console.log debugging. <img width="1649" height="852" alt="BDT beta 1 screenshot - 1" src="https://github.com/user-attachments/assets/b4723732-091a-48a8-aee4-dd775d4066a7" />

NuGet License

What's New in v1.0.0-beta.1

This release is a complete architectural rewrite with powerful new features:

  • 🧩 Component Tree - Visualize your entire Blazor component hierarchy
  • ⏱️ Timeline Profiler - Record and analyze component renders with a visual flamegraph
  • 💡 "Why Did This Render?" - Click any render event to see exactly what triggered it
  • 📊 Ranked View - See which components render most often and take the longest
  • 🔧 Works With Any Component - No code changes required for basic tracking
  • Enhanced Metrics - Opt-in to BlazorDevToolsComponentBase for deep lifecycle timing

Features

  • 🔍 Component Tree Visualization - See your Blazor component hierarchy in Chrome/Edge DevTools
  • 🎯 Element Picker - Click any element on the page to identify its Blazor component
  • 📁 File Path Display - See which .razor file each component comes from
  • ⏱️ Timeline Profiler - Record, analyze, and visualize component render performance
  • 🔥 Flamegraph View - Visual swimlane timeline of all component events
  • 📈 Performance Rankings - Identify your slowest components at a glance
  • 🎨 CSS Isolation Support - Full support for Blazor CSS isolation

Installation

1. Install the NuGet Package

dotnet add package BlazorDeveloperTools

2. Install the Browser Extension

3. That's it!

Open your Blazor app, press F12, and look for the "Blazor" tab in DevTools.

Installation by Render Mode

Render Mode Installation
WebAssembly Standalone Install in your main project
Server Install in your main project
Auto (WebAssembly Global) Install in your .Client project
Auto (Server + Client) Install in both projects

Usage

Basic Tracking (Zero Config)

Once installed, BDT automatically tracks all components. No code changes needed!

  1. Run your Blazor app
  2. Open Chrome/Edge DevTools (F12)
  3. Navigate to the "Blazor" tab
  4. Explore the Components tree or record a Timeline profile

Enhanced Tracking (Opt-in)

For detailed lifecycle metrics, inherit from BlazorDevToolsComponentBase:

@inherits BlazorDevToolsComponentBase

<h1>My Component</h1>

@code {
    // Your component code - all lifecycle methods are automatically timed
}

This gives you:

  • ✅ Lifecycle method timing (OnInitialized, OnParametersSet, etc.)
  • ✅ ShouldRender tracking
  • ✅ StateHasChanged counts
  • ✅ Parameter change detection
  • ✅ Render efficiency metrics

Timeline Profiler

  1. Go to the Timeline tab
  2. Click Record
  3. Interact with your app
  4. Click Stop
  5. Explore the results:
    • Events - Chronological list of all lifecycle events
    • Ranked - Components sorted by total render time
    • Flamegraph - Visual timeline with zoom and pan

How It Works

BDT uses a Three Pillars architecture:

Pillar Method What It Tracks
1. Enhanced Components Opt-in inheritance Deep lifecycle metrics, timing, ShouldRender
2. Activator Tracking Automatic All component instantiation
3. Render Batch Interception Automatic (JS) Component IDs, hierarchy, render events

Configuration Options

<PropertyGroup>
  
  <EnableBlazorDevToolsInProduction>true</EnableBlazorDevToolsInProduction>
  
  
  <EnableAutomaticMarkers>false</EnableAutomaticMarkers>
  
  
  <BdtSkipComponents>ItemContent;MudTimelineItem</BdtSkipComponents>
  
  
  <BdtVerbose>true</BdtVerbose>
</PropertyGroup>

Try It Now!

Visit blazordevelopertools.com and open DevTools to see BDT in action on a live Blazor app.

Contributing

This project is open source! We welcome contributions.

License

Licensed under the Apache License 2.0. See LICENSE for details.

Support


Built with ❤️ for the Blazor community by Joseph E. Gregory

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.
  • net8.0

    • No dependencies.
  • net9.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0-beta.5 106 1/29/2026
1.0.0-beta.4 53 1/29/2026
1.0.0-beta.3 50 1/29/2026
1.0.0-beta.2 81 1/22/2026
1.0.0-beta.1 59 1/14/2026
0.9.16 286 10/23/2025
0.9.15 195 10/23/2025
0.9.14 199 10/23/2025
0.9.13 188 10/22/2025
0.9.12 186 10/21/2025
0.9.11 188 10/21/2025
0.9.10 193 10/21/2025
0.9.9 120 10/18/2025
0.9.8 218 10/8/2025
0.9.7 187 10/8/2025
0.9.6 194 10/2/2025
0.9.5 200 10/2/2025
0.9.4 197 10/2/2025
0.9.3 208 10/2/2025
0.9.2 192 10/2/2025
Loading failed