It is basically something you should design for from the beginning to make it "easily" doable.
Here is one example I have, the add-in is fairly simple in that sense, that it only contains graph builders (and partition/bootstrap forest).
But trying to save the script that builds that would be a nightmare. There are many hidden things that couldn't be captured by JMP's Get Script or save script to data table (or any of the methods) and the add-in is divided into 10+ different .jsl files. Even if I was able to save the UI to the datatable, it wouldn't work when user re-runs the script due to my tight management of namespaces (UI wouldn't have access to all of the different functions for example). So in this case I only provide user an option to save the column selections and the order (they can save multiple). They can then load different inputs when they have the same table open and re-run the addin.
I could most likely refactor this add-in to work in such a way, that I could save (most of it) to table script or script window, but I would have to rewrite it from the start.
Other add-in (I cannot show pictures of that) I have which queries data based on user inputs, performs some calculations and then displays the results with few graph builders and some extra column switchers/data filters, does save that "platform" /UI/visualization immediately to the data table after the query and calculations have finished. Then I run that table script to show the results to the user. This is fairly simple add-in so I could fairly easily do this with some expressions (initial version I had didn't save the visualization, but it was a request from the users so I did implement it).
And third one which I'm currently working on (again cannot show it), does similar thing. It gets data based on user inputs, performs calculations on it, shows the analysis results and visualizes them. Again, I cannot save the whole UI to datatable due to it being too big of a hassle with all the options I provide users with BUT I will add a button which is basically "pop-out dashboard" which will then only create dashboard of only some parts of the UI and within this "popout dashboard" I can add few extra functionalities as I will design for it from the start. And this popout dashboard can be then saved (hopefully) to data table.
Edit: I also fairly rarely add recall buttons to my scripts as it can also be hassle and take a long time to get working properly. I know there is one script which can help with this, but it cannot perform the task (always) good enough for me to use. If users start requesting recall buttons to most of the tools I have written, I might consider writing script for that which hopefully would work in most of the cases.
-Jarmo