DotVVM 5.0 Preview 10 + new RC of Tailwind UI Released
Published: 7/11/2026 2:16:32 PMWe are very close to releasing the stable version of DotVVM 5.0, and thus, we just released 5.0.0-preview10-final of all DotVVM packages and 5.0.0-rc02-final of the new Tailwind UI for DotVVM components.
This is the last public preview before the final release of 5.0. If you were still waiting with the upgrade, you can safely start migrating to this Preview 10 - it is feature-complete and we aren't aware of any issues that require fixing before releasing the final version of DotVVM 5.0.
| Package | Version |
|---|---|
| DotVVM framework | 5.0.0-preview10-final |
| Bootstrap 3 for DotVVM | 5.0.0-preview10-final |
| Bootstrap 4 for DotVVM | 5.0.0-preview10-final |
| Bootstrap 5 for DotVVM | 5.0.0-preview10-final |
| DotVVM Business Pack | 5.0.0-preview10-final |
| Tailwind UI for DotVVM | 5.0.0-rc02-final |
Usual migration concerns
Newtonsoft.Json to System.Text.Json transition
The biggest change in DotVVM 5.0 is replacing Newtonsoft.Json with System.Text.Json for viewmodel serialization. This brings a great performance improvement, but may require some changes in the code.
If you use any custom JSON converters, JsonIgnore, JsonProperty, JsonConstructor or other attributes, you will need to replace them with their System.Text.Json equivalents. If the objects in viewmodels don't have default constructors, the strategy of picking the correct one might have changed.
If you take advantage of viewmodel population (you initialize some properties in the constructor, via dependency injection, or in the Init stage) and expect the existing instances will be populated when the viewmodel is deserialized, it should work, but there can be tiny nuances and differencec in behavior.
You may expect issues when using polymorphism (properties of base types such as object or IEnumerable instead of concrete types) - although we tried to preserve as much of the behavior as possible, there can be some breaking changes. Please note that polymorphism was actually never oficially supported in DotVVM and although it worked in some scenarios, you shouldn't rely on it.
GridViewDataSet changes
If you use just GridViewDataSet<T>, you shouldn't notice any changes - the behavior or the public API remained stable. However, if you used interfaces such as IPageableGridViewDataSet, IBaseGridViewDataSet, there were many changes because of the generic GridViewDataSet feature we described earlier.
We unified all the interfaces to IGridViewDataSet, and added capability-based interfaces such as IPageableGridViewDataSet<IPagingFirstPageCapability> that can tell you whether the concrete PagingOptions support going back to the first page, and so on.
We need feedback
If you try migrating to DotVVM 5.0, please let us know on the forum about your experience. If you run into any breaking changes, we want to know.
I am the CEO of RIGANTI, a small software development company located in Prague, Czech Republic.
I am Microsoft Most Valuable Professional and the founder of DotVVM project.