We are using the functionality included with the grid (mvc and .net core) to save and set filters, sorts and groupbys. Where the functionality fails is if the grid or columns change in any way (including toolbars). the getoptions() and setoptions() is a snapshot in time and is not very adaptive. Our users had 1000's of saved grids and was really not allowing us to change the grid data or columns or even change the default order of the columns. What we ended up doing to allow the saved grids to work and the developers to have the freedom to change the grids was:
1. Getting the grid that is passed down to the screen and saving it for a clear functionality (and knowing what the default was supposed to be).
2. Looking at the sort, groupby and filter subcomponents of the saved grid objects by column and looking for a column match in the grid that was passed to the screen.
3. If a column in the saved grid does not exist, do not apply those filters, sorts and groupby's and alert the user
4. Only apply/change the filters, sorts and groupbys via a setOptions() on the grid that is passed down as opposed to a set of the entire object.
6. If a column is added to the grid alert the user that the column is added
7. If the grid has changed, use a getOptions() to resave the users selections with the modifications above
8. Load the data
We have javascript that does the column compare, with differences in the grid if your developers would like to see how we solved this issue.