Is upgrading userforms always supposed to be this difficult? Is there something I am missing that would make this work? I have built many SilverStripe websites and used userforms a lot but this is always a real problem whenever I upgrade userforms on a site where I am already using it.
This is at least been my experience. This particular site has a very complex form so this is a huge hassle because I have to rebuild the form from scratch.
You shouldn't have to do this. Running a dev/build should be enough for the upgrade. Not sure how old you orignal UDF was but if its really really old you can also run the Migration script but that was more used for upgrading from 0.1 to 0.2 (which you probably should have used last time).
I intend to make upgrading as easy as possible to encourage people to keep up to date. Its a wee bit tricky as SilverStripe doesn't have a very nice module API to determine nice upgrade paths but it shouldn't mean you have to delete everything.
What you should do next time
* Delete userforms folder. When upgrading any module delete the old one first (don't just 'replace')
* Extract the new one
* Ensure its named 'userforms'
* Run a /dev/build in the web browser
* Reload the CMS using ?flush=1 to ensure its up to date.
If you still get an error please let me know the exact error message. This is available in your PHP error log file or console panel in your browser