-
-
Notifications
You must be signed in to change notification settings - Fork 122
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How production ready is Fabulous? #373
Comments
@cmeeren The core of Fabulous is pretty stable and most likely won't change. Fabulous.DynamicViews on the other hand is still subject to some breaking changes. One issue (#158) I wanted to fix for 1.0 will have a significant impact on the core of Fabulous, but I think it will wait for 2.0. Regarding performance, it depends on the platform you target. We did have the same issue than elmish/Elmish.WPF#40 and we added a Overall, I think Fabulous is already good enough for modest production apps. |
Thanks for the clarification!
Yes, the first one (#304) represents one kind of bug I'm afraid of. The other two are dev inconveniences I can live with.
This is one of my primary concerns. Could you elaborate a bit? Specifically, how is the slowness noticeable, and in which situations?
Hmm... That seems like a fairly serious issue that will impact our app (where we occasionally do stuff when navigating). Unfortunately, that means I might have to wait until 2.0 to be able to use Fabulous (or live with some workarounds)... Seeing as 1.0 is still in development, I suppose it'll be a while before 2.0? Do you have any idea of the timeframe for 2.0? (Like, 6 months or 2 years?)
Glad to hear it! Looking forward to the fix for #304. |
The slowness is noticeable when going from one page to another (to which you never navigated before). On iOS, it's instantaneous. On Android, you can see up to half a second of wait (still previous screen) after you triggered the navigation before the new page appears.
Yes, more like 1 year I think. |
Thanks. I tried the ElmishContacts app and see what you mean.
Update: See new issue #383 |
I made a separate issue #383 for the navigation slowdowns because I couldn't find any existing issue for it. With that out of the way, I think my questions here are answered: While I love the Elmish architecture and would like nothing more than for Fabulous to be the most, well, fabulous choice for app development, the navigation slowdowns alone are a no-go for us. Combined with a few other notable bugs (#158, #304), the conclusion for my part is that Fabulous is not yet mature enough to be a safe choice for production apps (low "employer/client acceptance factor", so to speak). YMMV, feel free to disagree. Thanks for hearing me out and responding to my concerns! |
I really like the Elm(ish) programming model. I'd love to try out Fabulous for a Xamarin app we currently have in production; it would likely simplify things quite a bit over the current architecture (which is a kind of homegrown, half-Elmish, MVVM/Redux-like hybrid).
But how production ready is Fabulous? I can live with a reasonable amount of breaking API changes, but I am concerned about a couple of other points:
Correct behaviour and general runtime stability. I don't want our customers experiencing Fabulous-related bugs that only crop up far into or at the other side of a rewrite - or even worse, for only certain end-user devices in certain contexts (such as Elements multiplied after pressing a button #343, which I realize is not Fabulous' fault).
Performance. I'm not creating games or running a stopwatch at 100 FPS, but I must be able to depend on Fabulous (with necessary optimizations, e.g.
dependsOn
) handling any human typing speed. For example (intersecting with the point above concerning correct behaviour), a good while ago I started the discussion at Discussion: MVU architecture gives feedbak loop when UpdateSourceTrigger=PropertyChanged and update loop is sufficiently slow elmish/Elmish.WPF#40, where I attempted to explain a problem relating to feedback loops due to e.g.Entry.TextChanged
being fired both from user input and programmatic changes. This caused a feedback loop if the Elmish update loop was "too slow". The behaviour was not too hard to provoke on a hardware-accelerated emulator, and was what prompted me to go for the hybrid MVVM architecture I mentioned (where I use view models forEntry.Text
updates).Any other known issues, drawbacks, caveats, or battle stories that might be good to know about.
The text was updated successfully, but these errors were encountered: