over the last months I wrote a quite big business application using forms.
The main target was UWP, but we needed the possibility to create IOS and Android versions along the road.
Overall my impressions were not too good. The goal was that just a few developers could maintain all targets.
In the end most of my time was spend working around bugs in forms and making it behave like I wanted it to.
The backend is a very portable assortment of PCL modules, around a forms host app that should provide the UI
for it, manage navigation and stuff like that. A bad design decision was that, because we had a unified design language,
that modules can provide designs for UI elements, pages and so on directly in Forms code or xaml.
It almost worked, as long as the app was simple, just a few modules providing elements for a dashboard, some process
pages. As it got more complex and flexible (updating, inserting and deleting Elements in real time, lots of more different
Elements from other modules for the dashboard) it began lacking.
What was once very smooth is now flickering and delaying.
But the real problems are, now that the app is almost finished:
Every Update somehow breaks something, most of the time the android build needs a day of reading and fixing and manually fixing
the project files to maybe work again
Creating custom renderers for everything. I want a different Titlebar design for Master/Detail pages or a Frame that inexplicably
doesn't show the rounded border non-transparent or lots of other tweaks I had to research and write one. I even had to write one
that does a nasty hack for tabbed pages because for whatever reason the tab titles are non formatted or highlighted when using
it like I should. Also lack of PDF and other very default formats is lacking and needs a custom implementation. I only did this for UWP...I don't even
want to think about repeating it for Android or IOS
Image problems. Using URI Sources just doesn't work sometimes. Images don't show in one place but the same URI shows
in another. I also had lots of problems when using buffered images and stream sources. For example, they don't show up when used
in datatemplates in lists, if this datatemplate is defined in a different PCL for whatever reason
Random complete UI blocks. I made sure that there is nothing interesting running on the UI thread. And it works most
of the time just fine. Just randomly blocking UI for about 5-10 seconds. I never found a source for that.
Random complete app crashes. The app works fine, concurrency should be good. But repeating the exact same process
just sometimes results in a uncatched exception with just the text "Unspecified Error" an no further explanation or stack trace
Just the random untraceable crashes are enough to never being able to release it and I'm not confident in posting bug reports for
every little thing i encountered, seeing that bugs from 2 years ago are not yet fixed and the activity on forms is severely lacking in
the last months.
Well, in the end I guess it is my fault. Forms was not the correct target for this application and luckily 90% of the code is reusable.
Sorry for the rant