XrmToolSuite.FormPerformanceAnalyzer 1.2026.7.10

dotnet add package XrmToolSuite.FormPerformanceAnalyzer --version 1.2026.7.10
                    
NuGet\Install-Package XrmToolSuite.FormPerformanceAnalyzer -Version 1.2026.7.10
                    
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="XrmToolSuite.FormPerformanceAnalyzer" Version="1.2026.7.10" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="XrmToolSuite.FormPerformanceAnalyzer" Version="1.2026.7.10" />
                    
Directory.Packages.props
<PackageReference Include="XrmToolSuite.FormPerformanceAnalyzer" />
                    
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 XrmToolSuite.FormPerformanceAnalyzer --version 1.2026.7.10
                    
#r "nuget: XrmToolSuite.FormPerformanceAnalyzer, 1.2026.7.10"
                    
#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 XrmToolSuite.FormPerformanceAnalyzer@1.2026.7.10
                    
#: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=XrmToolSuite.FormPerformanceAnalyzer&version=1.2026.7.10
                    
Install as a Cake Addin
#tool nuget:?package=XrmToolSuite.FormPerformanceAnalyzer&version=1.2026.7.10
                    
Install as a Cake Tool

📋 Form Performance Analyzer

An XrmToolBox plugin that scores model-driven main forms by static FormXML "heaviness" into Light/Moderate/Heavy/Critical bands with targeted optimization recommendations, and compares two forms side by side. Read-only — scoring is fully offline; the only Dataverse reads are retrieving the forms and business-rule counts.

Features

Area What it analyzes
Form inventory & ingestion All main forms (systemform, type = 2) retrieved via RetrieveAll off the UI thread, scoped by an optional table picker; FormXML parsed into a structured FormModel with no live-service dependency (malformed/blank XML degrades to a single warning, band Light)
Component metrics Per-form counts of tabs and sections (visible vs hidden-by-default), fields (above-the-fold vs hidden), PCF/custom controls, subgrids, quick-view controls, JavaScript libraries, event handlers (onload/onchange/tabstatechange), and active form-scoped business rules (workflow, category = 2)
Scoring & banding FormScorer.Score computes a deterministic, weighted, capped 0–100 score; Light/Moderate/Heavy/Critical bands with a colour cue in the grid. Weights/thresholds are editable in a settings dialog (reset-to-defaults) and persisted as a POCO
Recommendations Targeted suggestions ("collapse/lazy-load N tabs", "reduce M above-the-fold fields", "defer subgrid load", "consolidate K script libraries"), each citing the metric that triggered it and tagged Quick win / Structural with an effort estimate
Drill-down & compare A per-form metric breakdown showing each metric's contribution to the score; selecting exactly two forms opens a side-by-side comparison with per-metric deltas. A summary shows count per band and the top-10 heaviest forms

The scoring and FormXML parsing engine is UI-free and covered by the SDK-free unit tests (testing/UnitTests/FormPerformanceAnalyzerTests.cs).

Exports

CSV and HTML only (hand-written — no ClosedXML/PdfSharp chain). Export covers forms, metrics, scores, bands, and recommendations; the file write runs off the UI thread.

Help & Support

A Help button (right of the toolbar) opens a Help & Support dialog with Documentation, Report an issue, and a support link, each opened via Process.Start. The control implements IHelpPlugin and IGitHubPlugin, so XrmToolBox's own tool-menu links resolve to the same GitHub project (kkora/XrmToolSuite).

Build & install

On the machine that runs XrmToolBox, build straight into the Plugins folder:

dotnet build src\Tools\XrmToolSuite.FormPerformanceAnalyzer\XrmToolSuite.FormPerformanceAnalyzer.csproj -c Release -p:DeployToXTB=true

Restart XrmToolBox and open Form Performance Analyzer.

This is a single-DLL tool — CSV/HTML export is hand-written, so it ships no ClosedXML or PdfSharp/MigraDoc dependency chain. XrmToolSuite.FormPerformanceAnalyzer.dll (shared core compiled in) is the only file you deploy.

See ./DEPLOYMENT.md for manual-install steps and troubleshooting, and the suite-wide Deployment_Guide_XrmToolBox.md for more.

Usage

  1. Connect to your Dataverse environment (System Customizer or higher recommended).
  2. Optionally scope the scan to a table set (an empty selection defaults to all main forms after a confirmation of intent), then run the analysis.
  3. Review the ranked grid and the band-distribution summary.
  4. Open a form's metric breakdown to see what drives its score, or select two forms to compare.
  5. Export to CSV or HTML.

Notes & limitations

  • Read-only: no destructive operations; scoring is fully offline from parsed FormXML.
  • FormScorer.Score is a pure, deterministic function — identical input always yields an identical score.
  • Malformed or blank FormXML degrades to a single warning finding (band Light) rather than a crash.
Product Compatible and additional computed target framework versions.
.NET Framework net48 is compatible.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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.2026.7.10 170 7/11/2026
1.2026.7.9 110 7/11/2026
1.2026.7.8 112 7/11/2026
1.2026.7.7 114 7/11/2026
1.2026.7.6 118 7/10/2026
1.2026.7.5 107 7/9/2026
1.2026.7.3 115 7/7/2026

1.2026.7.10: Package health - deterministic CI builds with SourceLink and embedded symbols (PDB inside the DLL), and the package now links its GitHub source repository. No functional change to any tool.