Files

Trimming runtime gates

Two runtime gates back the static contract tests in Radzen.Blazor.Tests/TrimmingContractTests.cs. Both reference Radzen.Blazor.TrimTest.Models, a separate <IsTrimmable> assembly, so the trimmer strips model members that Radzen reads by reflection - the real reflection-over-T scenario.

1. Console gate (required, deterministic, browser-free)

Radzen.Blazor.TrimRuntimeTest instantiates the item-typed generic components with the trimmable model, then checks via reflection whether the trimmer preserved the model getters.

dotnet publish Radzen.Blazor.TrimRuntimeTest/Radzen.Blazor.TrimRuntimeTest.csproj \
    -c Release -r <rid> --self-contained -p:PublishTrimmed=true
./Radzen.Blazor.TrimRuntimeTest/bin/Release/net10.0/<rid>/publish/Radzen.Blazor.TrimRuntimeTest

Exit 1 today (getters trimmed). Exit 0 once the library annotates the item-typed component generics with [DynamicallyAccessedMembers(PublicProperties | PublicFields)].

2. WASM gate (faithful browser repro, optional)

Radzen.Blazor.TrimTest renders the components by string Property over the trimmable model and drives sort/filter/group in OnAfterRenderAsync, reporting done / error:<msg> in #trim-status.

dotnet publish Radzen.Blazor.TrimTest/Radzen.Blazor.TrimTest.csproj -c Release
dotnet tool install -g dotnet-serve
dotnet serve -d Radzen.Blazor.TrimTest/bin/Release/net10.0/publish/wwwroot -p 5050 &
cd e2e && npm install && npx playwright install chromium
TRIM_URL=http://localhost:5050 node trim-smoke.mjs

Exit 1 today (the drive throws over the trimmed model). Exit 0 once the DAM fix lands (rooting RadzenDataGrid<Order> preserves Order's members app-wide).