Skip to content
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

Replace or work on Stinsen #1034

Open
LePips opened this issue Apr 19, 2024 · 5 comments
Open

Replace or work on Stinsen #1034

LePips opened this issue Apr 19, 2024 · 5 comments
Labels
developer Developer facing issues enhancement New feature or request

Comments

@LePips
Copy link
Member

LePips commented Apr 19, 2024

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.

@LePips LePips added enhancement New feature or request developer Developer facing issues labels Apr 19, 2024
@bennyyy999
Copy link

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
Copy link
Member Author

LePips commented May 2, 2024

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.

@chickdan
Copy link
Contributor

As far as I can tell, PresentationDetents and Apple's new zoom navigation in iOS 18 can accomplish much of what Transmission offers in terms of navigation handling/animations.

Also the article that Bennyyy shared is a pretty popular one. I've seen it circulate many social channels including being featured in the iOS Dev Weekly newsletter. I'm still fairly unseasoned when it comes to the coordinator/routes pattern but what the article proposes seems decent. Trying to stay as vanilla as possible is likely the best approach right now given how much of SwiftUI is still in flux (NavigationStack at iOS 16, toolbar changes in iOS 17, Tab changes in iOS 18).

@LePips
Copy link
Member Author

LePips commented Oct 15, 2024

The new zoom navigation fulfills my desire for what I wanted with custom transitions and I was excited to see that. I have some loose-ideas of other presentation transitions but those are in the sandbox for now. I did like the shared article a lot as well and have also had community members share similar implementations.

I've gone through a few phases with Stinsen where I wanted each "screen" to have its own coordinator so it "only cares about the other screens it can present to" but then the mass of coordinators became too much boilerplate for every screen, which is why I've allowed something like SettingsCoordinator to bloat up. I'm sure this is a common route people take with coordinators.

Over the years of my SwiftUI experience I've too learned to be at the whim of Apple, even if they won't implement desired APIs until future iOSs. Regarding a timeline, I've wanted to drop iOS 15 by now but I will want to have my most recent video player refactor work in that, just to help people a little bit before we drop them. The latest date that I have come up with is the end of this year, regardless of feature completeness (within rationality).

@JPKribs
Copy link
Member

JPKribs commented Nov 9, 2024

Hey all,

When messing with tvOS I found that this fix is no longer working: #1161. If I revert the changes from this PR back to the pre-PR state, the nested routing in the Customization page is still not accessible. I was trying to troubleshoot this and remembered this Issue. Would it be better to just look at moving tvOS away from Stinsen for the 1.X release? Especially since tvOS is tvOS 17+?

If it's the case, I would be happy to work on that. I would just want to make sure I'm configuring this in a way that matches what we want. I'm a little more 'self-taught' so I'm still very green to the architecture / project layout side of this so I would appreciate some guidance on what the best way to implement this would be.

Let me know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
developer Developer facing issues enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants