Swift Heroes 2023 - Highlights
1:45
10 місяців тому
КОМЕНТАРІ
@techsuvara
@techsuvara 18 днів тому
Hi, there. As mentioned previously here is the first part to an architecture we feel is very well suited to mobile apps: ukposts.info/have/v-deo/e11opYhnmWiWkWw.htmlsi=lHkm8Fi1KpZyrjRH
@phukieu4238
@phukieu4238 21 день тому
A question doesn’t relate to the topic, but I saw you inject service instance in Login View, so what is responsibility of LoginViewModel? It just keep state of Login View, right? 33:08
@petersuvara
@petersuvara 22 дні тому
Thanks for sharing. Just like Redux, there are major issues with large complex projects where you need multiple pipelines to deal with data and sources of data. Ie, Transports like BLE, WLAN, Sockets, HTTP etc... Where do services, use cases and repositories fit into this model? Events are great, but I've seen projects where there are hundreds of events as side effects with no thought as to the domain of the event... We have a better way to do architecture. I will need to post a video about it.
@enzocorsiero1627
@enzocorsiero1627 21 день тому
Thank you for your comment. Our app has been using Molecule for some time. The biggest challenge we found in using it was allowing it to communicate with our old architecture, always based on Redux. In fact, we are working to eliminate it completely and use Molecule exclusively. Our main project uses 1013 SideEffects across 279 files, managing tasks including NFC, HTTP, and Sockets, so I would say it's extensively tested. I'm intrigued by your alternative approach and open to learning from it. I'd appreciate watching your video on this topic and am keen on discussing any concerns or ideas further, I think that it would be a very interested discussion.
@petersuvara
@petersuvara 21 день тому
@@enzocorsiero1627 I’ll release the video this weekend, in three sections, the view, domain and services layers.
@techsuvara
@techsuvara 18 днів тому
@@enzocorsiero1627here’s the first part of what I am describing ukposts.info/have/v-deo/e11opYhnmWiWkWw.htmlsi=lHkm8Fi1KpZyrjRH
@enzocorsiero1627
@enzocorsiero1627 16 днів тому
​@@petersuvara Thank you. Is it the video linked by techsuvara?
@marcnunes6916
@marcnunes6916 22 дні тому
I struggle to understand most Swift Heroes videos. Mostly watching the videos and not understanding words.
@SwiftHeroes
@SwiftHeroes 21 день тому
Hi marc, could the subtitles help you? 🔎
@danielpetrascanu3166
@danielpetrascanu3166 23 дні тому
In the future editions, please bring speakers that can speak a better english.
@akiyuki3783
@akiyuki3783 23 дні тому
I'm speaker of this session. Thank you for commenting! I knew my English is not good so I made my Keynote session more easily to understrand without my speaking. I also uploaded it to SpeakerDeck so please see it if you are still interestedn in my topic. All feedback are welcome! Yuki
@twostraws
@twostraws 23 дні тому
One of the wonderful things about our community is that we can benefit from the knowledge and perspectives of folks from such a wide variety of backgrounds, including Yuki. English is not his first language, but he's gone out of his way to prepare this fantastic talk and deliver it live on stage. He's also shared his deck so you can review the slides at your own pace, and provided links to various WWDC talks with further details. This takes an extraordinary amount of work, and also an extraordinary amount of bravery to do it all in English, so I'm grateful to Yuki for that work, and I appreciate all the time and effort he put in to share his knowledge with the rest of us 🙌
@SwiftHeroes
@SwiftHeroes 23 дні тому
@@twostraws Totally agree, thanks for your opinion🙏🏻
@SwiftHeroes
@SwiftHeroes 23 дні тому
@@akiyuki3783 Thank you Yuki, you did your best to bring us this talk and try to impart a lot of knowledge to us, this is what we need. People who do their utmost to share their experience with the community 💯✨
@chesterman18g
@chesterman18g 16 днів тому
@@akiyuki3783 Thank you for an amazing talk! I think that this topic is not covered by many, because it's hard to understand it really good. Great work! thanks again :)
@ek-bhartiya-nagrik
@ek-bhartiya-nagrik 25 днів тому
Thank you for putting all the efforts to make this available on UKposts.
@SwiftHeroes
@SwiftHeroes 24 дні тому
our first objective is to bring valuable knowledge to the developers who participate in our events, the second is to be able to communicate it to the entire community that follows us on social channels after the event 💎
@RohitPatil_Tech
@RohitPatil_Tech 25 днів тому
Great video Zamzam! Gives a really good picture to help chose/not to chose SwiftUI for upcoming production projects.
@SwiftHeroes
@SwiftHeroes 24 дні тому
really helpful 💎
@user-ku2xk9uc8x
@user-ku2xk9uc8x 21 день тому
where you like it or not apple is transitioning from UIKit to SwiftUI over the course of years... At some point you will be forced to adopt swiftUI
@DD-ds7ui
@DD-ds7ui 26 днів тому
thanks!
@SwiftHeroes
@SwiftHeroes 26 днів тому
Welcome! 🧡
@nekkumies
@nekkumies 26 днів тому
Sounds like a very interesting topic, but had to stop watching after 10s because of the excessive editing. Very hard to watch when there are all the natural pauses removed from the video.
@SwiftHeroes
@SwiftHeroes 26 днів тому
Sorry about that, the initial hook is like that, but the rest of the video is very fluent
@paulo.mendes
@paulo.mendes 26 днів тому
starts at 0:55
@ek-bhartiya-nagrik
@ek-bhartiya-nagrik 28 днів тому
I think this is a better approach for creating useful components which are reusable too
@SwiftHeroes
@SwiftHeroes 27 днів тому
really useful 💎
@DevSibonelo
@DevSibonelo 28 днів тому
Grear video, lots of value add
@SwiftHeroes
@SwiftHeroes 27 днів тому
Only the best at our events 🔥
@vinayakpaul2251
@vinayakpaul2251 29 днів тому
Too good
@SwiftHeroes
@SwiftHeroes 26 днів тому
Thank you, don't miss other talks 👍
@b-nr6oeb
@b-nr6oeb 29 днів тому
😮
@SwiftHeroes
@SwiftHeroes 28 днів тому
good?
@b-nr6oeb
@b-nr6oeb 28 днів тому
@@SwiftHeroes yea
@ek-bhartiya-nagrik
@ek-bhartiya-nagrik Місяць тому
This is a very interesting and helpful talk. Thank you for sharing.
@SwiftHeroes
@SwiftHeroes Місяць тому
Glad it was helpful! Enjoy all the other talks 🚀
@denisenathen8502
@denisenathen8502 Місяць тому
*promosm*
@ek-bhartiya-nagrik
@ek-bhartiya-nagrik Місяць тому
This is an amazing talk. Thanks for sharing this with us.
@SwiftHeroes
@SwiftHeroes Місяць тому
Glad you enjoyed it! Go to see the other talks 💪
@erfanoshana
@erfanoshana Місяць тому
30 minutes to say SwiftUI is great? Everyone knows it after 5 years :D
@SwiftHeroes
@SwiftHeroes Місяць тому
come on, those are some interesting reflections 👀
@user-bn1to5jh3x
@user-bn1to5jh3x Місяць тому
What did I just see? Is this some sort of a joke?
@SwiftHeroes
@SwiftHeroes Місяць тому
Why?
@iharandreyev2497
@iharandreyev2497 23 дні тому
@@SwiftHeroes Do I get it correctly: the proposed solution aims at old and large codebases, when mistakes have already been made, but migration to SPM for modules with multiple project repo for each platform is too expensive?
@scs408
@scs408 Місяць тому
Audio is really bad
@SwiftHeroes
@SwiftHeroes Місяць тому
Unfortunately in this room we had a small problem... but is it clear in your opinion?
@otniel2663
@otniel2663 Місяць тому
This architecture was relevant in the React community a while ago (Redux), but the trend seems to be moving towards simpler architectures like react-query, hooks, etc. I am not sure if the iOS engineering community will follow the same path, as the problem is universal across FE development (state management is complex)
@SwiftHeroes
@SwiftHeroes Місяць тому
Interesting observation, we asked Krzysztof to reply to you 😉
@rodriferretty3001
@rodriferretty3001 Місяць тому
Really interested about this point!
@Stricken174
@Stricken174 Місяць тому
i dont see any benefits of extract to functions, except when where is a switch. Extracted Text with modifiers doesnt make sense because its the same view with the same specs but with more lines of code.
@SwiftHeroes
@SwiftHeroes Місяць тому
Interesting observation, we asked peter to reply to you 😉
@PeterFriese
@PeterFriese Місяць тому
Keep in mind this is mostly to demonstrate the technique, so the example is deliberately simple. There are many cases where this makes sense and will make your code more maintainable.
@Stricken174
@Stricken174 Місяць тому
​@@PeterFriese acceptable) Don't think that I'm underestimate you) Common situation when extracting subviews is extracting them with all modifiers inside. So you're actually cant reuse it in the most cases. Designers nowadays can be the pain in the.. you know)
@devopsthinh
@devopsthinh Місяць тому
Thanks, from Vietnam 😊
@SwiftHeroes
@SwiftHeroes Місяць тому
Wow, we are on the other side of the world 😄
@protodimbo
@protodimbo Місяць тому
@@SwiftHeroesI'm also watching from Vietnam 😁
@vinodbhaskar6927
@vinodbhaskar6927 Місяць тому
Great presentation, as an iOS developer, I wish to work under your leadership
@SwiftHeroes
@SwiftHeroes Місяць тому
She's brilliant 😄
@Rither88
@Rither88 Місяць тому
I was surprised by the dissatisfaction with the timer and the frequent updating of the view. The code does what suppose to do and actually doing that pretty well with hi performance. If you update elapsed time value every second in a loop and display this value in a text view then obviously the Time View with all subviews will refresh every second. Just because it is a struct and its state was changed. At first glance it could sounds scary. However SwiftUI is pretty smart, it checks state of each subview and redraw only view where it's own state was changed. Of course there are a number of criteria that must be met such as avoiding AnyView etc. So if you understand how SwiftUI view lifecycle works it stops being something scary.
@PawelPalczynski-VideoDayTM
@PawelPalczynski-VideoDayTM Місяць тому
Nice "input" 👏
@SwiftHeroes
@SwiftHeroes Місяць тому
Thanks! 😃
@PawelPalczynski-VideoDayTM
@PawelPalczynski-VideoDayTM Місяць тому
👏👏👍
@Hgvpuncher
@Hgvpuncher Місяць тому
Why do we have so many speakers nowadays. I'm not talking about her because she knows what she doing but there's so many scammers trying to sell a copy paste course
@SwiftHeroes
@SwiftHeroes Місяць тому
Because the business of online course is too easy to scale, pay attention to the experience of those who teach, an excellent principle is to see concretely how long they have been doing what they teach. Our speakers are all carefully selected, you will never find a scammer 😉
@30guarino
@30guarino Місяць тому
I love that name....ZAMZAM
@chesterman18g
@chesterman18g Місяць тому
very good talk, Thank You Peter!
@SwiftHeroes
@SwiftHeroes Місяць тому
Glad you liked it! 🧡
@ognerub
@ognerub Місяць тому
Бурунов докладывает 🔥
@Carlos.Damiao
@Carlos.Damiao Місяць тому
I agree with most of the concepts you’ve talked about, and I’m definitely grateful to you for bringing value to the community. However, correct me if I’m wrong but it seems like you guys are using an anti-pattern called Service Locator, which basically is global shared state to implicitly inject dependencies. This talk has 2 years, so maybe this was already addressed, but I would feel very uncomfortable in using a Service Locator in all of my services. Service Locator has many problems, one of the biggest in my opinion is the lack of errors at compilation time. I much prefer using dependency injection through the initializer. I would say that a true level 4 app done correctly doesn’t need this sort of global shared state to achieve its needs. I was also not convinced by your approach to navigation. But I would have to look at concrete cases to be able to see how you approach for example injecting data that is only available at run time. Being able to control navigation from BE is cool though.
@SwiftHeroes
@SwiftHeroes Місяць тому
Thanks for sharing your view, it's interesting 🧐
@alexl2512
@alexl2512 Місяць тому
Love this talk. This is a classic problem.
@SwiftHeroes
@SwiftHeroes Місяць тому
thanks, what problem do you mean?
@alexl2512
@alexl2512 Місяць тому
@@SwiftHeroes OO Interview question: Design the elevator system.
@olegmyatlikov919
@olegmyatlikov919 Місяць тому
Thanks for the report Peter Friese! Very useful tips. I faced the same problems when I refactored my project from UIKit to SwiftUI. I wish this report was available when I did this. The report would save me a lot of time :)
@SwiftHeroes
@SwiftHeroes Місяць тому
Thanks for sharing! 👍
@caldera726
@caldera726 Місяць тому
Great video! I'm curious, is there a particular reason for not using a viewModel? Wouldn't this result in tighter coupling of Views, potentially reducing their reusability?
@PeterFriese
@PeterFriese Місяць тому
Hey @caldera726 - which part of the video are you referring to?
@trungnguyenthanh9233
@trungnguyenthanh9233 Місяць тому
Nice
@FelipeBorges-ys1pl
@FelipeBorges-ys1pl 2 місяці тому
Excellent content, Bruno. About the end, I'm gonna quote someone whose name I forgot: "The good software architect is a master at deferring big decisions and leaving options open". So while we shouldn't be doing rocket science within a newborn app, we should definitely be careful with how we're designing our small app now as to not make everyone's lives extra hard when we finally need some restructuring. ;)
@ImTheShrey
@ImTheShrey 2 місяці тому
We use Reactor Kit in our app with 200K daily active users. It's basically TCA philosophy with Per screen state store. And then on each view only updating if it's required slice within the state is mutated.
@blaze.1436
@blaze.1436 2 місяці тому
Super interesting talk!
@SwiftHeroes
@SwiftHeroes 2 місяці тому
Glad you enjoyed it 🧡
@isurujn
@isurujn 2 місяці тому
I used to be a native zealot for the longest time 😅 But I got a taste of Flutter at my last job. Now I'm in the more middle ground mindset where I think each tool/technology has its place and it largely depends on a various set of needs and requirements. In other words, I think Flutter has its uses and neither Flutter won't replace native and vice versa. Having seen how Flutter has matured in the short period of time, I do honestly think SwiftUI has a lot of catching up to do. These slow once in a year release cycles are really hurting native iOS devs.
@user-np8mu3yh1t
@user-np8mu3yh1t 2 місяці тому
Someone make this guy a CEO!
@user-np8mu3yh1t
@user-np8mu3yh1t 2 місяці тому
Someone make this guy a CEO!!!
@SwiftHeroes
@SwiftHeroes 2 місяці тому
😂😂😂
@devayz9305
@devayz9305 2 місяці тому
thank you!
@last_aid_kit
@last_aid_kit 2 місяці тому
Great talk and smooth demo, thank you!
@SwiftHeroes
@SwiftHeroes 2 місяці тому
Glad it was helpful! 💪
@devayz9305
@devayz9305 2 місяці тому
Great insight, thanks Alberto
@rizwanahmed64
@rizwanahmed64 2 місяці тому
Amazing talk! I am a huge fan of Shai Mishali's works and talks!
@SwiftHeroes
@SwiftHeroes 2 місяці тому
thank you, he is really cool 💪
@paulo.mendes
@paulo.mendes 3 місяці тому
great talk, thanks
@SwiftHeroes
@SwiftHeroes 3 місяці тому
yes, really full of experience 💪
@danielt63
@danielt63 3 місяці тому
At 7:53... Sure but the problem with these sorts of architectures is that any one action could change any piece of state. So not only do you have to assert the correct state changes, but you also have to assert that no other bits of state changed. That's n*m assertions (where n is the number of actions, and m the possible states.) In other words, your assertions grow exponentially with every action or piece of state you add. Not good!
@ImTheShrey
@ImTheShrey 2 місяці тому
We solved it by dividing app state into per screen state. And then you do diff of a state slices (properties) when your views want to use it, so they don't refresh when other non related field in state object changes. Then to top it off, you collect all mutations Done by one action in to a batch and only update state struct in one go.
@danielt63
@danielt63 2 місяці тому
@@ImTheShrey Sure, but every reducer receives every action. Your per screen state receives actions from other screens and it is only by convention that it doesn't act on actions from other screens. Testing to ensure that convention is where the problem lies.
@kapilgoyal7808
@kapilgoyal7808 4 місяці тому
Very Basic and structured way. this is the foundation 👍
@oskarrhythm
@oskarrhythm 4 місяці тому
the video can be on HD? with 480p I can't see the names/code and structure of the project that is shown in this talk please.
@SwiftHeroes
@SwiftHeroes 4 місяці тому
unfortunately we only have low quality recordings of this talk, we hope you were able to understand the other things anyway 🙏