From how you describe it (it worked before and started failing recently), this looks much more like a widget bug or regression than an intended limitation.
The "read-only property" error strongly suggests that when personalization restores the filter state, that state becomes immutable. The Number Filter then tries to change it during validation and blows up. The fact that text filters still work, while number filters don’t, fits this explanation quite well. So this doesn’t look like a model or configuration issue on your side, but rather a Data Grid 2 client-side behavior.
The suggested workarounds make sense. Turning off "Store in personalization" for numeric filters immediately fixing the issue is a strong indicator of where the problem is. However, that obviously conflicts with your UX requirement.
The "persist the values yourself and reapply them on page load" idea is valid in principle, but in practice it often means applying the filter in the datasource logic rather than fully restoring the column filter UI state. It’s worth being clear about that, since restoring the exact column filter UI for numbers is not always straightforward.
In short: this doesn’t look like your mistake. It’s very likely a Data Grid 2 regression related to Number Filters + personalization. Sharing the exact Mendix and Data Grid 2 versions and opening a Mendix support ticket is probably the best next step.
Yes — this is a known limitation/behaviour with Data Grid 2 when using Number Filters together with “Store in personalization”. The bug happens because when personalization restores the filter state, the internal filter object becomes immutable (read-only). The Number Filter widget tries to update that state during validation, which triggers:
Cannot assign to read-only property … when applying a number filter with personalization enabled.
Number Filters mutate their internal state differently than Text Filters, so they fail only when personalization is turned on and the state is frozen.
Personalization of text filters still works
Number Filters with personalization currently fail
Disabling “Store in personalization” fixes the error immediately
This is widget behaviour, not a model/config issue
• Keep personalization off for numeric column filters
• If persistence is required, persist numeric filter values manually in your own entity and reapply them when the page loads
• Log this as a bug so Mendix can address it in a future release
This is not a problem with your implementation — it’s a limitation of the widget’s current version.