I currently have a UIKit app which uses a UIStoryboard and which has a tab bar controller. I removed the tab bar controller from the storyboard and created a tab bar app in SwiftUI which has the UIKit views represented as UIViewControllerRepresentable within structs. I changed the visionOS app destination from 'visionOS Designed for iPad' to 'visionOS' because I want to see the tabs on the left side in visionOS. I got a ton of warnings and some errors. I fixed the errors (which were related to user location). But the warnings are with regards to the storyboard and storyboard segue. The app runs perfectly fine but the warnings warn that UIStoryboard and UIStoryboardSegue will not be supported in a future version of visionOS. I wonder first why this was done and second, how much time will I have to fix the warnings? Could I release the app as is and fix later or will the support be dropped in a short timeframe? One of the ways to create views for view controllers in UIKit is through a storyboard. If you kill those in visionOS, then you restrict a big way that one can embed a UIKit view controller in SwiftUI.
'UIStoryboard' and 'UIStoryboardSegue' was deprecated in visionOS 1.0 - Why?
There's no way to predict how long these deprecated APIs will stay around. However, they're clearly intended to help developers transition apps to different API sets, and so you should have plenty of time to do it on your own development schedule.
I think it's fine to release the app as-is, assuming you don't need UI features that rely on SwiftUI, at least within the representable parts. You should have time to make the transition later, but I recommend you don't wait until the last moment. :)
I sent feedback to Apple. If nobody from Apple replies to this thread in a couple of days, I'll mark @Polyphonic 's answer as correct.
Am I supposed to work on making my apps work on a platform that's letting me know I'm already deprecated pre release? Doesn't seem like a great way to entice developers to jump in. IMO.
When my destination is 'visionOS Designed for iPad', I get no errors and no warnings. But my tabs are now at the bottom and not on the left side. It's okay to use a Storyboard and StoryboardSegue with visionOS if it's run as an iPad app, but not as a standalone app. It doesn't make sense to me at all. Oh yeah, interface builder products are being deprecated as well.
Seems pretty absurd. Why bother implementing and deprecating something before the platform is even released? Many apps are complex and have taken years to write and their entire navigation structure is tied to one or more storyboards. Tearing the entire thing down isn't something you're going to do in a week (unless the app is very simple).
So they want us to:
- Ship our storyboard based app on visionOS using deprecated "walking dead on arrival" API.
- They break the functionality and tell you to use SwiftUI.
- You now have a non-working app.
- Either rewrite the entire app with a new UI framework that has a different app lifecycle (can reuse very little code) or pull your live app from the store.
No thanks. Instead of just letting developers choose which UI framework works best for them they have decided to force feed it. I mean if they want visionOS to be SwiftUI only like watchOS they should just enforce that policy from the start instead of trying to paint you into a corner. Feels like they are forcing SwiftUI because they're worried developers will choose UIKit if given the option. If SwiftUI is better, developers will use it so why force it?
Oh yeah, interface builder products are being deprecated as well.
I already miss the good old days where you could design custom table view cells in Interface Builder in like three seconds. And you didn't even have to wait for a preview to load. Even making the most basic custom table view cell now with the "content configuration" API is a pretty awful way to waste 30-45 minutes of your life.
So, no Storyboards and no xib files. I have taken two of my apps and completely revamped the views. They are all done programmatically. No Storyboards, no segues. This way, I will be able to have the tabs on the side in visionOS and not have any warnings about deprecation.