jellyfin / Swiftfin

Native Jellyfin Client for iOS and tvOS
Mozilla Public License 2.0
2.24k stars 250 forks source link

Replace or work on Stinsen #1034

Open LePips opened 1 month ago

LePips commented 1 month ago

Stinsen is the great coordinator package we have used for view coordination for a while. However, it hasn't seen active development for a long time and I will soon be incorporating some design elements that the package can't handle (eg: dynamic tabs). I have personally contributed to the project and even have merge permissions, but it's a somewhat large project to refactor. Also, it doesn't support the split column view for iPadOS which is why iPadOS has a tab bar instead.

We need to replace or work heavily on Stinsen so that we can support more design features. I would still heavily, heavily want to be using the coordinator behavior. Looking up swiftui coordinator on GitHub there are a few other packages to investigate.

bennyyy999 commented 1 month ago

Was there a reason for the coordinator pattern originally? Or is there a statistic of how many people use the app with iOS 15? We could modernize with a more native approach (NavigationStack iOS 16+) and like Azam Sharp explained here. It kinda follows the coordinator syntax in my opinion and already had great success in my own apps (smaller apps) and at work (bigger app).

Just a suggestion and would love to hear your opinion on that!

LePips commented 1 month ago

I just like the coordinator pattern and it makes navigation really easy, nothing more. On an opinionated note, I never really liked NavigationLink and personally find it baffling that there isn't a coordinator equivalent by Apple in SwiftUI.

There wasn't an iOS version restriction per say and whatever solution we use could utilize some back-ported NavigationStack APIs for version compatibility. Thank you for sharing that article as I haven't seen it before and am taking it into consideration.

I may take a look at making my own solution, especially since I want to see if I can utilize Transmission for some custom transitions and I haven't seen a package (on first glance) that would allow the full customization I want with tabs.