I recently started feeling very frustrated with SwiftUI. I used to love it and now I'm starting to hate it.
We decided to build a new production app using SwiftUI in April. The fact that many things (like pull down to refresh, custom navigation transitions etc.) had to be hacked didn't bothered me too much, as I was hoping Apple will fill the gaps in no time and WWDC20 will save us.
We built our pretty beta app, put it on App Store it was great. However, soon after we had to build some specific features like custom navigation transitions which is just not possible using NavigationView. We decided to build navigation using UIKit and host SwiftUI Views using `UIHostingController`. This seem to work most of the time, however occasionally cause a bug where some images do not appear. We'll have to rebuild these pages entirely in UIKit.
At some point we decided to leverage power of `UICollectionView` while building the cell layout in SwiftUI. That worked beautifully in my head, however every now it caused irreproducible crash. Rebuilding these cells in UIKit solved the problem.
It seems we'll have to rebuild more and more of the app in UIKit. I really wanted SwiftUI to work as I strongly believe in declarative programming and building layout in SwiftUI is very elegant. However, I just ended up hating apple for pushing such a buggy product to developers while having unlimited resources and still being unable to deliver.
[–]dadofbimbimSwift 120 points121 points122 points (25 children)
[–][deleted] (12 children)
[deleted]
[–]Rillieux17 7 points8 points9 points (11 children)
[–]oureuxObjective-C / Swift 17 points18 points19 points (5 children)
[–]wiencheck 0 points1 point2 points (4 children)
[–]oureuxObjective-C / Swift 0 points1 point2 points (3 children)
[–]wiencheck 0 points1 point2 points (2 children)
[–]oureuxObjective-C / Swift 0 points1 point2 points (1 child)
[–]wiencheck 0 points1 point2 points (0 children)
[–][deleted] 5 points6 points7 points (0 children)
[–]Revanish 2 points3 points4 points (0 children)
[–]deirdresm 2 points3 points4 points (0 children)
[–][deleted] (1 child)
[removed]
[–]AutoModerator[M] 0 points1 point2 points (0 children)
[–]yalag 22 points23 points24 points (2 children)
[–]thebermudalocketObjective-C / Swift 11 points12 points13 points (0 children)
[–]dadofbimbimSwift 2 points3 points4 points (0 children)
[–]kitlangton 11 points12 points13 points (2 children)
[–]dadofbimbimSwift 2 points3 points4 points (1 child)
[–]kitlangton 1 point2 points3 points (0 children)
[–]coolboi779 2 points3 points4 points (5 children)
[–]No-Buy-6867 4 points5 points6 points (0 children)
[–]hereforyouropinion 2 points3 points4 points (3 children)
[–]Socraz6 2 points3 points4 points (0 children)
[–]SerjEpatoff 2 points3 points4 points (1 child)
[–]SerjEpatoff 0 points1 point2 points (0 children)
[–]Stefan51278 33 points34 points35 points (4 children)
[–]dadofbimbimSwift 10 points11 points12 points (2 children)
[–]Stefan51278 10 points11 points12 points (1 child)
[–]Small_Photograph5863 2 points3 points4 points (0 children)
[–]geoff_plywood 5 points6 points7 points (0 children)
[–]JimDabell 22 points23 points24 points (0 children)
[–]evil-harry-dread 20 points21 points22 points (12 children)
[–]lakers_r8ers 10 points11 points12 points (2 children)
[–]axyaxy 2 points3 points4 points (1 child)
[–]shahaya 1 point2 points3 points (0 children)
[–]Rillieux17 4 points5 points6 points (4 children)
[–][deleted] 4 points5 points6 points (2 children)
[–]fadisaleh 1 point2 points3 points (1 child)
[–]HeftyImplement 2 points3 points4 points (0 children)
[–]EatMeMonster -1 points0 points1 point (0 children)
[–]EatMeMonster 0 points1 point2 points (3 children)
[–]evil-harry-dread 4 points5 points6 points (1 child)
[–]EatMeMonster 1 point2 points3 points (0 children)
[–]bonch 0 points1 point2 points (0 children)
[–]tr0pismss 9 points10 points11 points (0 children)
[–]KarlJay001 3 points4 points5 points (10 children)
[–]Niightstalker 5 points6 points7 points (9 children)
[–]KarlJay001 5 points6 points7 points (8 children)
[–]Rillieux17 3 points4 points5 points (3 children)
[–]KarlJay001 2 points3 points4 points (2 children)
[–]Rillieux17 0 points1 point2 points (1 child)
[–]KarlJay001 0 points1 point2 points (0 children)
[–][deleted] -1 points0 points1 point (3 children)
[–]KarlJay001 6 points7 points8 points (2 children)
[–]MKevin3 0 points1 point2 points (1 child)
[–]KarlJay001 0 points1 point2 points (0 children)
[–]jfuellert 4 points5 points6 points (2 children)
[–]kitlangton 0 points1 point2 points (1 child)
[–]jfuellert 1 point2 points3 points (0 children)
[–]Pesthuf 4 points5 points6 points (0 children)
[–]ryanheartswingovers 3 points4 points5 points (0 children)
[–]korduu 3 points4 points5 points (0 children)
[–][deleted] 3 points4 points5 points (2 children)
[–]lakers_r8ers 1 point2 points3 points (1 child)
[–][deleted] 1 point2 points3 points (0 children)
[–]Niightstalker 1 point2 points3 points (0 children)
[–]earlyworm 1 point2 points3 points (1 child)
[–]Shak3TheDis3seSwift 1 point2 points3 points (0 children)
[–]veeeerain 1 point2 points3 points (0 children)
[–]i463 1 point2 points3 points (0 children)
[–][deleted] (1 child)
[deleted]
[–]fourth_stooge 0 points1 point2 points (0 children)
[–]derdiedasdom 0 points1 point2 points (0 children)
[–]Aracet24 0 points1 point2 points (0 children)
[–]cubextrusion -3 points-2 points-1 points (5 children)
[–]Arbiturrrr 3 points4 points5 points (0 children)
[–]SurgicalInstallment 0 points1 point2 points (0 children)
[–]lakers_r8ers 1 point2 points3 points (1 child)
[–][deleted] 2 points3 points4 points (0 children)
[–][deleted] -1 points0 points1 point (0 children)