![dotnet]()
With the release of .NET 10 , Microsoft has officially removed MessagingCenter , a long-standing feature that many Xamarin.Forms and early MAUI developers relied on for lightweight communication between components. If your app still uses MessagingCenter, this change may feel disruptive — but the truth is, better, safer, and more maintainable options have already replaced it.
This article explains why MessagingCenter is gone, the recommended modern alternatives, and how you can migrate your MAUI app smoothly without breaking existing functionality.
Why MessagingCenter Was Removed
MessagingCenter was originally introduced for simple publish–subscribe messaging, but over time developers ran into repeated issues:
Hidden communication made debugging difficult
Subscriptions often caused memory leaks
It didn’t align with dependency injection or MVVM best practices
Modern .NET messaging tools are cleaner and more efficient
To encourage better architecture and avoid unpredictable behavior, Microsoft removed MessagingCenter entirely in .NET 10.
Meet the Modern Replacement: WeakReferenceMessenger
The best replacement — and Microsoft’s deliberate direction — is WeakReferenceMessenger , part of the .NET Community Toolkit.
Why it’s better
Strongly typed messages
No memory leaks thanks to weak references
Great for MVVM
Fully supported and actively updated
Faster and more optimized than MessagingCenter
It provides the same pub/sub workflow, but without the pitfalls.
Basic Usage Examples
Send a message
WeakReferenceMessenger.Default.Send(new UserLoggedInMessage(userId));
Receive a message
WeakReferenceMessenger.Default.Register<UserLoggedInMessage>(this, (r, m) =>
{
// Handle login message
});
Message definition
public class UserLoggedInMessage : ValueChangedMessage<string>
{
public UserLoggedInMessage(string value) : base(value) { }
}
This pattern is clean, simple, and scales beautifully as your app grows.
Migrating From MessagingCenter to WeakReferenceMessenger
Here’s a common real-world example.
Old (MessagingCenter)
MessagingCenter.Subscribe<HomePage, string>(this, "LoggedIn", (sender, value) =>
{
// handle login
});
New (WeakReferenceMessenger)
WeakReferenceMessenger.Default.Register<LoggedInMessage>(this, (r, m) =>
{
// handle login
});
Send the message
WeakReferenceMessenger.Default.Send(new LoggedInMessage("success"));
Migration Tips for Large Apps
If your MAUI app uses MessagingCenter heavily, follow this structured migration path:
Search for all MessagingCenter usages
Create equivalent message classes
Replace subscriptions with registrations
Replace publish calls with messenger sends
Test navigation scenarios for memory leaks
With WeakReferenceMessenger’s weak references, cleanup becomes much easier.
Why the New Approach Is Better for Your App
Switching to modern messaging patterns gives you:
Cleaner, more predictable architecture
Faster message handling
Zero hidden dependencies
Fewer memory leaks
Easier debugging and testing
Future-proofing for new .NET MAUI updates
MessagingCenter may be gone, but the alternatives are significantly better.
Final Thoughts
The removal of MessagingCenter in .NET 10 marks the end of an old era — and the beginning of a cleaner, more modern approach to app communication. Whether you migrate to WeakReferenceMessenger , traditional events, or a DI-driven pattern, your MAUI app will benefit from improved maintainability and performance.