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
MessagingCenterusages - 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.
.png)

















Follow Us
Were this world an endless plain, and by sailing eastward we could for ever reach new distances