dotnet / dotnet/maui

[Bug] Shadow StyleClass not applied to Border after successful Hot Reload on Mac Catalyst

Open
#34,166 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C#
Stars
23.3k
Forks
2k
Avg merge
1d 10h
Merged PRs (30d)
297

Description

## Description

Adding a Shadow style class to a Border control via C# Hot Reload succeeds at the ENC level (delta applied, MetadataUpdateHandler fires) but the shadow does not render visually. Other property changes to the same Border (e.g., `.Background(Colors.Red)`) applied via Hot Reload in the same session render correctly.

## Steps to Reproduce

1. Create a .NET MAUI app using MauiReactor targeting `net10.0-maccatalyst`
2. Add a `Border` control wrapping some content
3. Start debugging (F5, Debug config)
4. Edit the source to add `.Class(Bs.Shadow)` to the Border (where `Bs.Shadow` applies a `Shadow` via StyleClass)
5. Trigger Hot Reload (save file)

**Before:**
```csharp
).Class(Bs.Card),
```

**After:**
```csharp
).Class(Bs.Card).Class(Bs.Shadow),
```

## Expected Behavior

The Border should render with a shadow after Hot Reload applies the change.

## Actual Behavior

No shadow appears. The ENC engine reports success, the app-side MetadataUpdateHandler fires (confirmed via heartbeat endpoint with update counter advancing), but the shadow is not rendered.

In the same session, changing `.Background(Colors.Red)` on the same Border **did** render correctly via Hot Reload, confirming the reload pipeline is functional.

## Hot Reload Evidence

- **Session.log**: `Module update: capabilities=[Baseline]` — delta applied successfully
- **Heartbeat**: Update counter advanced from 1 to 2 — app received the delta
- **MetadataUpdateHandler**: Fired (confirmed via HotReloadSentinel diagnostics)
- **Artifact diff**: `ThemesPage.2.2.old.cs` / `ThemesPage.2.2.new.cs` — single line change adding `.Class(Bs.Shadow)`

## Version Info

- .NET SDK: 10.0.100-preview.3
- MAUI: 10.0.31
- MauiReactor: 4.x
- Platform: Mac Catalyst (`net10.0-maccatalyst`)
- IDE: VS Code Insiders with C# Dev Kit
- Diagnostics: HotReloadSentinel 0.1.0

## Additional Context

This was captured using [HotReloadSentinel](https://github.com/davidortinau/hotreload-sentinel), which monitors Session.log, polls an app-side heartbeat endpoint, and records per-change developer confirmations. The three-layer diagnostic confirms:

| Layer | Status |
|-------|--------|
| IDE (Session.log) | Delta emitted successfully |
| App (heartbeat) | Update counter advanced, handler fired |
| Developer (visual) | Shadow did NOT render |

This suggests the issue is in how Shadow/StyleClass changes are applied to Border's native handler during a hot reload update, not in the hot reload transport itself.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.