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
<PackageReference Include="XrmToolSuite.FormPerformanceAnalyzer" Version="1.2026.7.10" />
<PackageVersion Include="XrmToolSuite.FormPerformanceAnalyzer" Version="1.2026.7.10" />
<PackageReference Include="XrmToolSuite.FormPerformanceAnalyzer" />
paket add XrmToolSuite.FormPerformanceAnalyzer --version 1.2026.7.10
#r "nuget: XrmToolSuite.FormPerformanceAnalyzer, 1.2026.7.10"
#:package XrmToolSuite.FormPerformanceAnalyzer@1.2026.7.10
#addin nuget:?package=XrmToolSuite.FormPerformanceAnalyzer&version=1.2026.7.10
#tool nuget:?package=XrmToolSuite.FormPerformanceAnalyzer&version=1.2026.7.10
📋 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
- Connect to your Dataverse environment (System Customizer or higher recommended).
- 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.
- Review the ranked grid and the band-distribution summary.
- Open a form's metric breakdown to see what drives its score, or select two forms to compare.
- Export to CSV or HTML.
Notes & limitations
- Read-only: no destructive operations; scoring is fully offline from parsed FormXML.
FormScorer.Scoreis 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 | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET Framework | net48 is compatible. net481 was computed. |
-
- XrmToolBox (>= 1.2025.10.74)
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.