Review the possibility to use Catalyst and SwiftUI to make SiskinIM and BeagleIM as a single application.
Andrzej Wójcik (Tigase) commented 5 years ago
Right now it is not possible as both technologies require macOS in beta version which was just released and may be unstable. We should postpone this task until macOS 10.15 will be released.
Andrzej Wójcik (Tigase) commented 5 years ago
I've found a spare external drive and decided to give macOS 10.15 a spin. However, after installing and reviewing XCode beta and our applications on this version of macOS I'm disappointed with what I've found.
Usage of UIKit application and Catalyst project to create the application for macOS forces us to provide compiled versions of the frameworks which we are using for macOS which is expected. However, UIKit is rather limited and does not support split view on macOS (or at least not now), while our app is based on split view, so it was not possible to get it running. For a test, I've built a simple app for iOS and ported it to macOS using Catalyst and it worked more or less, but it was not possible to provide access to the tray icon, to create nice looking title bar and access to a few APIs used by us on macOS was missing. Which means that it would be tricky to create an app for macOS and iOS with all of our features. This technology may improve, but in my opinion, it is not ready yet and may it take a while to be ready to be used by more advanced applications.
I've also looked into the possibility of usage of SwiftUI to make a single application. In this case, it is possible to create a simple application running on both systems in UIKit or two separate applications using very similar API for defining layout (or even sharing parts of layout), but one would be built for iOS using UIKit and second using AppKit for macOS. This is a slightly more interesting option as it would allow us to share codebase but provided better integration by having two separate builds. However, there is no support for SplitView on iOS (and we are using it in our app), so we need to wait for an improved version of SwiftUI. Also, SwiftUI is a different way of defining a UI so a partial rewrite of applications to use it would be required.
To sum up: Right now there is no way to build a nice app and have it with all of our features and working on both platforms. We need to wait for more stable releases and recheck that, but it looks like it will be very tricky to do so.
Andrzej Wójcik (Tigase) commented 2 years ago
I've reviewed the usage of SwiftUI in parts of Siskin IM, ie. Settings views and conversation log and it is promising. I've decided to do so, as SwiftUI is more flexible in dynamic changes to the view (ie. showing/hiding parts of view) which would be very useful in the conversation log (ie. when we would like to add reactions, etc.).
I still need to check the performance of the new layout on the real device, but on the simulator, it looks fine.
Review the possibility to use Catalyst and SwiftUI to make SiskinIM and BeagleIM as a single application.