Great vid Sean! Thanks for all the info! I'm trying to focus more on actually "doing things" instead of spending my time on social media, so this sum up of what people are talking about and what's new is just great. Keep it up! :)
Great episode, Sean! Thanks for sharing the idea of avoiding MVVM as well. I think all the recent Observation, SwiftData & SwiftUI releases made this simple architecture even better.
With SwiftData, because model objects are observable, it's natural to make one object for everything. This works well, I think, even though it goes against historical practice.
Ok, the obvious negative showed up when I needed to use the models in a widget. Including the view code with the model brings *way* too much stuff from the app into the widget. My new approach is to put minimalist models in a common framework that can be linked to both the app and widget. Then each target adds extensions for the views in that target. My initial experiments were positive with this approach. Is there a better way?
talking about fighting the framework, im new to swiftUI and feel that abstracting the navigation by using coordinators.. is exactly that. its trying to gain control in an imperative manner, instead of flowing with the declarative nature of the technology... hence the headache
Since it's only once per month, I will definitely continue Swift News. At least through the end of 2024, then we'll reassess. But so far it's been very well received.
I called this on the first release of SwftUI and the people over at stackoverflow went nuts with MVVM. Good to see that I always knew MVVM was going to be bad.
You mentioned you don’t know what to call this architecture, from a quick glance it seems similar to a Flux pattern but with the functions that would be in your store instead being called from the view. Which might be a little dangerous because you’re coupling your views to the frameworks/components the store needs to perform what it needs but that’s a fairly easy problem to solve with proper dependency inversion. Apple likes to use this Flux style pattern in a lot of their examples too and it’s going to be even more enabled with the Observation framework. Pretty much any architecture that has a unidirectional style data flow seems to work really nicely in SwiftUI at least in my experience.
Yeah, coupling your view with logic and services, what could go wrong ? It goes against having small views that have no responsibility other that displaying stuff. Seems very, very wrong, even occasionally. I'm refactoring this kind of stuff almost daily.
Great info as always; esp how to dispute (and hopefully eliminate) 1 stars. But it would be nice if Apple put a little AI into the review process. A 1 word ‘junk’ review gives a dev nothing to go on. Should be an easy coding exercise to verify that a review has some content/context and isn’t just from a rival. PS - congrats to all WWDC attendees. Have fun; be safe.
Swift News, new course from Sean, WWDC right around the corner, and the MLS immersive demo (was super cool)… this is great! (Also, I created a small PR for Swift News, if you’re interested in the fixes.)
I've tried to build iphone apps in xcode, but every time I launch it on my imac it takes minutes for xcode to launch and load, I get frustrated, is there any way to speed up xcode? My imac is from 2019.
Quick questions because i did do some MVVM with SwiftUI and combine and it did seem pretty natural especially when using @published variables. 1. How do you inject the SwiftUI environment variables into a unitest?(not well versed in SwiftUI environment variables). 2. doesn't the fact that the business logic sits inside the SwiftUI file hinder unitests? Im not saying MVVM is the optimal in any situation, but the architecture you described in the video seems to have a lot of issues when a developer will want to test it.
Ugh the EU getting their nose everywhere on ppl’s business is just getting out of hand. Each and everyday i convince myself more and more that Brexit wasn’t such a terrible idea after all
I think TCA is quickly becoming the next big way to architect SwiftUI apps. Have you looked into that? Did a quick search on your channel for it but couldn't find anything.
Between the EU trader qualifications and the privacy nutrition labels, feels like it's overly hard/er just to publish an app with some ads to make some money.
I think the mvvm crowd didnt learn or refused to learn structs or View structs. I noticed in your vid you were calling an environment struct an object!
I'm not great at using the text book language for things. It's something I can be better at. I hear it all the time in my videos when I call something a variable, but I defined it as a "let". Like... c'mon. You know what I mean.
MV is cool and so, but how the hell do you write tests for it? Most apps are not as simple as shown in the video. I have VMs with hundreds of lines of code since the project is not small, if I move it all to inside the view it'll become a nightmare to navigate... Don't tell me "tests are worthless" as the dude who created that "famous" discussion...
Then stay with MVVM 🤷. The point of the discussion that isn't to say "MVVM is bad, never use it". I say it in the video, there's no one right architecture for all situations and each has their pros/cons.
@@seanallen I'm staying with MVVM but all these articles/videos(not you) saying how MV is amazing, never actually show a real world example. They always show the most basic code snippet. Most of them avoid talking about tests or straight up say tests are worthless. Maybe you could make video comparing these two arch. without using the most basic code snippets(even just simple call with pagination logic would suffice, I think)
That's not really my style, but I do believe Apple Vision Pro will be a success in the long run. I see huge potential, but it's certainly not there just yet.
I'd love to hear more details. I've been following him for years and his TH-cam channel just recently started to grow. Of course, I don't have insight into their business but I can't imagine the TH-cam channel was super impactful before the last year or two. Regardless, the channel has great information. I stand by that from personal experience.
I'll stick with MVVM, its easy to understand, it separates and keeps everything neat and easy. You automatically know whats wrong and where it went wrong. Whatever this guy is suggesting will be a nightmare! I get that he's geeky to come up with that, but always remember to keep it simple!
MV with SwiftUI for small projects... if you want MVVM then you are better off going with UIKit unless you wanna fight the framework, spend hours and days for workarounds then spend weeks trying to solve the bugs and unwanted behaviours you get from the workarounds and this is all because you have decided to go against a framework... the average joe needs to learn that you shouldn't default to a strict architecture for every single project but hey try teaching this to ignorant people
We use MVVM and SwiftUI for a critical segment of our application, there are no big warkarounds and bugs are easy to catch and fix. What do you mean practically by "fighting the framework" or "workarounds" ? What does a published UI state in the MV not solve ?
"Since your views are just expressions of a state, the best tests are snapshot tests." Crazy this kind of stuff is taken seriously in 2024. We never learn do we. It's not about testing views, it's about testing the logic that changes the state of your view, the stuff that he removed from the VM and put in the view.
Why do you start speaking right after 0.00000000000001 seconds after the start of the video? I would prefer 0.5 or 1 or 2 seconds of silence before speaking.
@@trustmub1 Could you please explain your use of emojis? I am not sure if I understand it correctly. I made a suggestion and said "thank you", when seanallen replied. Of course he is free to ignore my suggestion. But I am sincerely annoyed by the mentioned point.
@@anton-koelbl-it-dozent the emojis where valid at the time, I realised how I had the same thought and realised there is always someone out there who will beat you to comment.
Use the environment and keep your views really small. Wait when you told to add analytics, localization, location, networking, side scrolling carousels, error states, loading states, alerts, core data and more. Then try to keep your view really really small. 😂😂😂
I'm simple person, see a new Swift News video and gave a thumbs up
thanks Sean
I appreciate that!
Thank you Sean. That was very informative. I always appreciate when you unpack the reasons behind your perspective.
Glad it was helpful!
Great vid Sean! Thanks for all the info! I'm trying to focus more on actually "doing things" instead of spending my time on social media, so this sum up of what people are talking about and what's new is just great. Keep it up! :)
Same here 🙌🏼
Great episode, Sean! Thanks for sharing the idea of avoiding MVVM as well. I think all the recent Observation, SwiftData & SwiftUI releases made this simple architecture even better.
With SwiftData, because model objects are observable, it's natural to make one object for everything. This works well, I think, even though it goes against historical practice.
Ok, the obvious negative showed up when I needed to use the models in a widget. Including the view code with the model brings *way* too much stuff from the app into the widget. My new approach is to put minimalist models in a common framework that can be linked to both the app and widget. Then each target adds extensions for the views in that target. My initial experiments were positive with this approach. Is there a better way?
talking about fighting the framework, im new to swiftUI and feel that abstracting the navigation by using coordinators.. is exactly that. its trying to gain control in an imperative manner, instead of flowing with the declarative nature of the technology... hence the headache
I've never adopted that pattern, so I don't have experience with it. But that is what my intuition on it, which is why I never really gave it a try.
Thanks Sean for all the content
No problem!
Thanks for this, I love this content, I am hoping you can continue this if your time permits.
Since it's only once per month, I will definitely continue Swift News. At least through the end of 2024, then we'll reassess. But so far it's been very well received.
I called this on the first release of SwftUI and the people over at stackoverflow went nuts with MVVM. Good to see that I always knew MVVM was going to be bad.
I was mentioned! 🤩 Thanks, Sean! 😀
Thanks for sharing that tip!
You mentioned you don’t know what to call this architecture, from a quick glance it seems similar to a Flux pattern but with the functions that would be in your store instead being called from the view. Which might be a little dangerous because you’re coupling your views to the frameworks/components the store needs to perform what it needs but that’s a fairly easy problem to solve with proper dependency inversion. Apple likes to use this Flux style pattern in a lot of their examples too and it’s going to be even more enabled with the Observation framework. Pretty much any architecture that has a unidirectional style data flow seems to work really nicely in SwiftUI at least in my experience.
Yeah, coupling your view with logic and services, what could go wrong ? It goes against having small views that have no responsibility other that displaying stuff. Seems very, very wrong, even occasionally. I'm refactoring this kind of stuff almost daily.
You mean you can't make your views smaller by moving code into them that should have been in the view model? 🤯
Thanks Sean 👏
Great info as always; esp how to dispute (and hopefully eliminate) 1 stars. But it would be nice if Apple put a little AI into the review process. A 1 word ‘junk’ review gives a dev nothing to go on. Should be an easy coding exercise to verify that a review has some content/context and isn’t just from a rival.
PS - congrats to all WWDC attendees. Have fun; be safe.
This Vision pro concept for sport is amazing as hell
Agreed!
“Bibbity boops and bops” 😆 Ah good stuff, Sean.
That’s the official term.
I was thinking of writing an article. The title I have is "When To Add Sound To Your App." "Never" is as far as I've gotten.
Great video as always! Swift News is my favorite source of news.
Which software do you use to create the 'laser pointer' while you talk?
Not sure what you're referring to. I'm just recording my screen with Safari open and highlighting parts of text with my mouse.
@@seanallen I just realized that the video I mentioned is from App Master not you, I got confused, sorry! lol
Babe Wake up!!! Swift News just dropped!!!
Swift News, new course from Sean, WWDC right around the corner, and the MLS immersive demo (was super cool)… this is great!
(Also, I created a small PR for Swift News, if you’re interested in the fixes.)
Fun times! Thanks for doing that. Approved & merged!
I've tried to build iphone apps in xcode, but every time I launch it on my imac it takes minutes for xcode to launch and load, I get frustrated, is there any way to speed up xcode? My imac is from 2019.
Quick questions because i did do some MVVM with SwiftUI and combine and it did seem pretty natural especially when using @published variables.
1. How do you inject the SwiftUI environment variables into a unitest?(not well versed in SwiftUI environment variables).
2. doesn't the fact that the business logic sits inside the SwiftUI file hinder unitests?
Im not saying MVVM is the optimal in any situation, but the architecture you described in the video seems to have a lot of issues when a developer will want to test it.
Ugh the EU getting their nose everywhere on ppl’s business is just getting out of hand. Each and everyday i convince myself more and more that Brexit wasn’t such a terrible idea after all
It's annoying, that's for sure.
awesome thank you
You're welcome!
I think TCA is quickly becoming the next big way to architect SwiftUI apps. Have you looked into that? Did a quick search on your channel for it but couldn't find anything.
I've researched it a little, but haven't built anything with it. I don't know enough to have an opinion on it.
Between the EU trader qualifications and the privacy nutrition labels, feels like it's overly hard/er just to publish an app with some ads to make some money.
I think the mvvm crowd didnt learn or refused to learn structs or View structs. I noticed in your vid you were calling an environment struct an object!
I'm not great at using the text book language for things. It's something I can be better at. I hear it all the time in my videos when I call something a variable, but I defined it as a "let". Like... c'mon. You know what I mean.
MV is cool and so, but how the hell do you write tests for it? Most apps are not as simple as shown in the video. I have VMs with hundreds of lines of code since the project is not small, if I move it all to inside the view it'll become a nightmare to navigate...
Don't tell me "tests are worthless" as the dude who created that "famous" discussion...
Then stay with MVVM 🤷. The point of the discussion that isn't to say "MVVM is bad, never use it". I say it in the video, there's no one right architecture for all situations and each has their pros/cons.
@@seanallen I'm staying with MVVM but all these articles/videos(not you) saying how MV is amazing, never actually show a real world example. They always show the most basic code snippet. Most of them avoid talking about tests or straight up say tests are worthless.
Maybe you could make video comparing these two arch. without using the most basic code snippets(even just simple call with pagination logic would suffice, I think)
❤🔥❤🔥
🔥
is Swiftui is still New...when become mainstream ...
You should react to some of the videos shitting on the Vision Pro and giving your thoughts on it.
That's not really my style, but I do believe Apple Vision Pro will be a success in the long run. I see huge potential, but it's certainly not there just yet.
@@seanallen that’s fair
The sponsor of your video isn't making money from apps. His revenue is being generated from selling products from his youtube channel
I'd love to hear more details. I've been following him for years and his TH-cam channel just recently started to grow. Of course, I don't have insight into their business but I can't imagine the TH-cam channel was super impactful before the last year or two.
Regardless, the channel has great information. I stand by that from personal experience.
4:15 I would not recommend this if you ever want to test your app.
I don't have real world experience with it yet, but he says testing is the most common question he gets and addresses it at the bottom of the article.
I'll stick with MVVM, its easy to understand, it separates and keeps everything neat and easy. You automatically know whats wrong and where it went wrong. Whatever this guy is suggesting will be a nightmare! I get that he's geeky to come up with that, but always remember to keep it simple!
Vanilla 😌
MV with SwiftUI for small projects... if you want MVVM then you are better off going with UIKit unless you wanna fight the framework, spend hours and days for workarounds then spend weeks trying to solve the bugs and unwanted behaviours you get from the workarounds and this is all because you have decided to go against a framework... the average joe needs to learn that you shouldn't default to a strict architecture for every single project but hey try teaching this to ignorant people
We use MVVM and SwiftUI for a critical segment of our application, there are no big warkarounds and bugs are easy to catch and fix. What do you mean practically by "fighting the framework" or "workarounds" ? What does a published UI state in the MV not solve ?
I AM SO DEMOTIVATED :(
Why?
I imagine this is terrible for unit testing.
I haven't used it in a real app yet, but he addresses testing at the bottom of his article.
@@seanallen I'll take a look.
"Since your views are just expressions of a state, the best tests are snapshot tests."
Crazy this kind of stuff is taken seriously in 2024. We never learn do we. It's not about testing views, it's about testing the logic that changes the state of your view, the stuff that he removed from the VM and put in the view.
You don't need objects just for testing you can test funcs
@@alxgzzu don't need tests in 2024 just hit run it works then upload to appstore jobdone. If u get bug reports just ignore them for now
Why do you start speaking right after 0.00000000000001 seconds after the start of the video? I would prefer 0.5 or 1 or 2 seconds of silence before speaking.
Got it
@@seanallen Thank you for considering.
😂😂😂😂
@@trustmub1 Could you please explain your use of emojis? I am not sure if I understand it correctly. I made a suggestion and said "thank you", when seanallen replied. Of course he is free to ignore my suggestion. But I am sincerely annoyed by the mentioned point.
@@anton-koelbl-it-dozent the emojis where valid at the time, I realised how I had the same thought and realised there is always someone out there who will beat you to comment.
Use the environment and keep your views really small. Wait when you told to add analytics, localization, location, networking, side scrolling carousels, error states, loading states, alerts, core data and more. Then try to keep your view really really small. 😂😂😂
All this architectures of view only that Azam and others plough on twitter works really great with screens containing list with emoji fruits. 😅
MVVM dead AF!