... Okay, I don't like VSCode, so maybe I could agree that Xcode is better, but Xcode is by no means a good editor. It's so slow, and so janky. Sure, it's the best option for working with SwiftUI, but that's because it's practically the *only* option.
I knew Xcode thing would be a controversial take 😅 It definitely requires more context, and you're totally correct that it's not the best editor, but as an IDE, I stand by what I said in the video. Things like Organizer, StoreKit debugger, String Catalogs, Xcode Cloud, Previews, integrated test runner including performance test metrics, Playgrounds, view hierarchy debugger, ... in my experience, there is nothing out there that provides this level of integration and holistic development experience. I appreciate snappy text editing and fast file navigation as anyone, but writing code is only one part of building an app.
@@mykolaharmash To be fair, what I had said came from a primarily Rust developer, who primarily uses an editor made entirely with Rust, so I suppose I’m lucky to not have to deal with performance issues when I work on things. And, to be fair, the many features of Xcode _are_ cool, but, honestly, maybe it’s too many features if it’s the cause of Xcode’s bloat- writing code may not be absolutely all of software development, but for me it’s reeaaally most of it. Again, maybe it’s different for app dev, but I’ve wanted to really get into app dev myself and I’ve always been deterred by Xcode falling behind as I code. TL;DR: Maybe Xcode is good enough for most app devs, but it falls short of my preexisting standards
Yeah, I get your point. And I wish Xcode team would bring more attention to the basics. Different projects require different dev environments, like I can comfortably work on a web project in vim, but I would hate to build an app in it.
Haha, I 100% hated it at first as well, then over time it’s just clicked. It has A LOT of issues, but it handles the complexity of building and maintaining a modern software product end-to-end. With other editors/IDEs I’d need a bunch of additional services to achieve what Xcode has out of the box. I hope I’ll give more context to that phrase in the video at some point, it’s a topic by itself.
Xcode is a really heavy app (size and CPU resources), it has a lot of flaws, but when Xcode it works properly, there is no IDE that can compare with it.
In a normal sense why must use intelij idea rather than Android studio... Yeah android studio is now built on top of intelij idea but there's a reason they did that
I work with RN for 4 years and I never touched Swift code. In JavaScript word, you will find library for everything u want. RN is popular, so u will find a native lab Cross platform will never be better than native. Even more so if you want to use the last SO stuff provided by the manufacturer. But, If you don't care about that kind of stuff (like the vast majority apps), u can go with RN. Amazon, Microsoft Office, Discord and more are examples
with swift you barelly need to search library. everything what you need you have in the language core :) having a lot of libs doesn't a good sign. It's just pointing to the fact, that JS as a language is a very limited trash :)
odd take. Swift/Swift ui dev for almost a decade. And when i saw the Vuejs, it was like a breath of fresh air. My vue apps, you wont be able to tell its not native, as i get the navigation animation almost perfectly. And that was before ai helped with the subtle animations / effects.
My PTSD from Angular 1 days gets triggered when I see Vue templates, haha 😅 But seriously, as I said in the video, with the right amount of effort you can get pretty close, but to me it's always an uphill battle and not worth, I like to keep web stack for web. Btw, can I have a look at some of your apps? Not to prove you wrong or anything, genuinely curious.
SwiftUI is the best option when building for iOS for me, and second best option for me is Flutter if building small to mid scale apps for both iOS and Android.
I'd probably go with Flutter, but only if I was going for a completely custom design and I knew upfront I don't need any system UIs. Though, I have an accessibility concern with Flutter. I know that it generates an accessibility tree for assistive tech, but I have not tried how well it really works. Do you have any experience with it?
@@mykolaharmash Yes I have experience implementing accessibilities with SwiftUI, haven't tried accessibility for Flutter though, since It's been only a few weeks since I've been using Flutter, while it's easy for us to pickup flutter as mobile devs, though I still have surface level of knowledge, while I have 2.5 years experience with SwiftUI, and 7 years with UIKit. Some Native mobile devs I know tried to use Flutter in their enterprise mobile apps, and they have some complaints when it comes to developer experience, for weeks they seem to get harder to maintain, but I dunno, I still yet to experience larger scale apps for Flutter. I'll absolutely be going to use a lot of Flutter and SwiftUI for my personal side-projects in the future.
I totally agree with you There is no need to even look at cross/hybrid frameworks if you are only targeting one platform because there are only useful when you want to have the same app on multi platforms
This is correct, if you want to build for only IOS it only makes sense to just use SWIFT. Or if you are a company with lots of funds and need a cross-platform app, you can have to team build two apps that are the same but one on SWIFT and the other on Kotlin, which will be the most effective.
Right, and the issue is that many people (especially coming from webdev) are choosing cross-platform frameworks not because it's necessary but because the tech or tooling is familiar.
The only problem I have for VS code is it's so slow compared to other IDE's but in terms of customization, community and extendability nothing comes close. Every time I open Xcode I just want to close it right away. Hopefully you can make a video justifying your statement Xcode is a better choice.
I hated Xcode at first coming from super-customizable VSCode/vim (and before that JetBrains stuff, Sublime, Nova, ... in different times), but I've grown to appreciate Xcode's more opinionated approach, though it for sure has a lot of issues. I'll try to expand on this thought at some point.
@@mykolaharmash everything has its pros and cons and I'm sure XCode has its own great Pros too, I haven't used it before but I'm sure its probably alright
Great video on this topic, thanks. As a guy in management who unfortunately hasn't coded in many years, you helped me understand why cross-platform frameworks which compile native can still have many real-world limitations.
Would love if you made a video going into the 3 subjective reasons you like SwiftUI. I started learning SwiftUI coming from a React background and I was very surprised to end up having the same opinions.
I’ll try to cover those point in some way, whether in a dedicated video or as a segment somewhere. Though seems like we are in a minority here judging from the comment section 😅
Hmm, for building iOS apps of course swift is the best option. Literally all the other options you talked about are to let you build for other platforms in the process. So if you are not considering other platforms it’s stupid to choose anything else!
I would not say it’s stupid, there are some other factors here. Like many webdevs choose Ionic or React Native only because the frameworks and tooling is familiar and not because they want to build for multiple platforms. It’s kind of understandable, people want to stay in the comfort zone.
“Most people will feel that something is off even if they couldn’t articulate what exactly is wrong there” - THIS is also my conclusion after building Ionic apps 👍
Hey, I really like your videos and how you turn ideas into apps. Could you do a video on how much the app has made so far? Also, any tips on becoming a top 1% developer? Not sure if you’re more into web or iOS right now, but it’d be cool to hear your journey and get some advice. By the way, what skills do you think are valuable outside of coding? I noticed you’re good with Figma, Blender, and video editing. Those animations are pretty cool.
Thank you for the kind words! My next video will be another devlog about the app with all the numbers breakdown including proceeds so far :) I enjoy both web and iOS dev pretty much equally at least when in comes to pure technology, though I think web stack became too messy in the recent years and I enjoy it less than say a 5 years ago. For skills outside of coding, I think you got this already - design, video stuff and motion graphics will give a huge unfair advantage, at least for your personal projects. In the world where everyone is assembling apps out of most popular component libraries, you’ll be able to stand out if you add some unusual animation or 3D elements. Not to mention you’ll be able to market your work much better.
Thing is. If I were to build a cross platform application, I wouldn't be using then native UI elements because that would make the app look different on iOS and Android. My problem with React Native is that it takes a bit of effort to make the app look same on the both platform.
Yeah, that's a very good point. One thing is to technically make the app run on both platforms but another thing is to make them look and feel at home there. Even those the majority of the code could be shared there still will be a lot of tweaking and edge-case handling for each OS individually.
kotlin multiplatform is a nice idea imo, but it's still too much in alpha to use. takes too much time to compile and the community isn't too big yet. definitely look into that for the future tho
you are only considering your developer experience here, you forgot that we build apps to solve problems, each problem deserves it's own solution so no framework is better than other, that's what any engineering manager would tell you. even if your points are valid related to native development it may not be applicable for issues with the business or so many other reasons
Broadly, I agree with you, though I tried to focus specifically on indie devs where it’s easier to optimize for developer experience and your satisfaction from the process while building stuff as there are less factors and stakeholders in play.
I agree with your take on this, having experienced all 3 tech in one form or another. Usually for indie dev, it makes more sense to build iOS-only app at first. Do you have any experience on how dev would look like if you then had to also invest in building an equivalent app in android? Would you go react native or native android? Are there any tools that can help us at least bridge the design language across the native apps?
Expanding to other platforms is a really tricky thing. I'd say, ideally, you'd have this plan (specifically a plan, not just an aspiration) upfront and would be able to be strategic in terms of choosing tech stack and UI designs. Specifically for iOS to Android transition, React Native would probably be the best choice because than you'd be able to bridge and re-use some of the already written Swift code. All other options are basically a complete re-write. I could also make a super far-fetched argument that, if your app is so successful on iOS that you want to expand to other platform, maybe there is an option to hire another developer and keep two versions of the app run in parallel. But it's more from a fantasyland:)
I'm a backend SWE and wanted to mess around with building an app. Really blown away with Swift and SwiftUI so far. Basically just abstract the bs away and let me make my app.
I mentioned in the video that I’d go for React Native, mostly because it has the most straightforward way of using native frameworks. Though it’s the best of all evils kind of thing :)
How DARE YOU! ... I mean, actually a great video with a lot of good arguments. Nice to see you come out with some hot takes. Although I'd love to challenge you on most, I'm selecting just two underlying beliefs you seem to have. 1. "An indie hacker will not lose much by not offereing cross-platform" I feel this falls apart the moment you try to develop something that is not just intended for one person on their one device. Building anything for a company and its customers or employees? - Unless everyone uses a company iphone, you need both Building something with a booking system? - You have to support both platforms or say goodbye to X% of potential revenue Building something where users can add their friends / contacts? - You'd only retain users who only have iPhone friends (definitely a highter % in the US but still). 2. "Most apps needs to look or at least feel like an iOS app". As an indie hacker I believe that there is also a perfectly valid approach of building fast, tiny and scrappy products that you share with your audience in niches, especially if your idea is original or serving an underserved market. Do I believe Swift is necessary to make the best iOS apps? 100% For indie hackers however, I'd say it's much closer to a 50/50 call, completely dependent on what they want to make. PS: *Xcode has caused me every single major headache in development for the last 2-3 years and I swear I try to touch that monster as little as possible. (definitely biased and unfair as I only need to use it once every 2-3 months and thus it always need breaking updates) *I'm super excited to see how apple implements AI into Xcode over the next years, as they have the perfect setup for creating something that always gives up-to-date documentation-backed suggestions. *iOS widgets are awesome and I'm jealous of how much easier you can implement them with swift. *Dart is the better language and that is simply an undeniable fact (in my head at least).
I warned you that you would not like this video 😅 But seriously, thank you for a thoughtful comment! On the points: I tried to emphasize the indie developer perspective because you're totally right that for a larger company, it's a completely different argument, and going cross-platform is the most reasonable option. My issue is that many people (especially those who come from webdev) choose a cross-platform framework not because it's necessary but because it's a familiar tech stack and tooling. Or some indie devs have an aspiration to build the next big thing and they want to capture the largest audience possible. In those cases, I'm advocating for a more humble/niche approach. On the native look and feel thing, my main point is that you should not try to mimic system UIs, it's a much better UX when the app has a custom design instead of an uncanny valley feeling of something like Cupertino Widgets. I don't have anything against apps looking different and custom. The problem with Flutter specifically though (sorry 🙈) is that if you want your app to feel native, Cupertino Widgets is your best option and it's not a good one IMO. The Xcode thing is a controversial take I understand, haha :) It requires more context, I'll try to expand on this at some point. And about "Dart is the better language and that is simply an undeniable fact", let's not get carried away here 😜
@@mykolaharmash Haha who said I didnt like it? Had a blast, and looking from all the comments I'd say the video is a great success😄 Always great to see developers from very different "corners" of the dev world actually get together in a somewhat civil debate. (and I will admit it feels nice to see the rally against xcode 🤣)
No for sure, even though I feel the comments section is a bit emotional, it's super cool to see people being passionate about tech. In a day-to-day corporate world, I don't see that often these days. "and I will admit it feels nice to see the rally against xcode 🤣" haha, it's so unanimous, starts to feel like a conspiracy 😄
Very very fair notes, besides the xcode one (yikes). I would say, something BIG you've missed is how easy it is to push updates using Expo (RN). You don't need to go through the review process that can take day(s). If you want to hotfix something or push an analytics event you've missed, it takes a few minutes.
I would also add that instead of creating an app for two platforms, lean towards iOS. It’s most likely they will pay for apps/services/subscriptions instead of Android users.
In my head Android still holds this reputation where everyone pirates stuff and don’t pay for anything, it was like this when I was using it 10 years ago. But I wonder if it’s still true though 🤔
Just hopping on here to say that the RN team is making improvements in regards to the Bridge, by giving the option of removing the need for it altogether with the new architecture. Also, the great thing about RN is that you can write native code! You don't necessarily need to depend on random devs and their libraries as you can write the latest OS features in Swift/SwiftUI and use it in the RN app. You are not stuck, you will always have the option to write native code with SwiftUI and AppKit. Doesn't seem like you are planning to do multiplatform though, so Swift/SwiftUI is definitely the obvious #1 choice. I really enjoy SwiftUI. Recently wrote a macOS app to help me when using Expo.
And yes! Your reasoning makes total sense! I personally like to develop for iOS (I have deep have for developing for Android LOL). I have been moving away from RN for personal projects because I am not planning on ever releasing stuff for Android, so SwiftUI is my focus right now.
Yeah, that’s my thinking ad well about RN and why I’d prefer it if I needed to go multi-platform. Having the option to use native UIs is a must have for the type of apps I want to build.
Thanks for this video! Currently I am a Product Manager and I want to build my own app. I was always fighting with myself whether to learn Swift/SwiftUI or Dart/Flutter. I now tried both for a few weeks each and I have to admit: At the beginning I liked Flutter for the reason to build an app once and have it both on iOS/Android to make more money. But i just HATE how VS Code and the Code in Flutter looks like xD the colors, a trillion indents and brackets for all the 2342034 widgets, childs, childs, TextWidget, child, child are just ugly and annoying. And semicolon at the end of every line haha Swift and XCode just look beautiful - and it makes coding SO much more enjoyable. Your video just gave me the confirmation again to stick with Swift, so thanks for that :D
I think a lot of people choose cross-platform frameworks just because of the familiar tech and tooling and still build apps for one specific platform. In these kinds of cases, there is a cost of switching tech if an indie dev, say with web experience, decides to go with SwiftUI, but it's not the cost in the purely monetary sense. For companies though, you're totally right, it's a whole different story and the cost is one of the main (if not the main) factors.
react native is literally backed by numerous fortune 500 companies who invest resources in different forms into ensuring that is up to date with the native platforms as they rely on it themselves. these companies are actively invested in different parts of the library that make it better from static hermes to supporting more platforms beyond just mobile so on. Your point on third party dependencies therefore doesn't make sense as you speak on it like the eco-system there just comprises of people who can just decide their tired and call it quiets thus compromising your application.
I don’t fully buy this argument tbh. For example “react-native-health” package that is quite popular, was last updated a year ago and has 95 open issues majority of which labeled as “bug”. While I see you point that most common integrations might be supported by larger organizations with lot more resources, there are a ton of smaller packages supported by individuals in their spare time.
Sure, if you decide to go the web stack route Ionic is one of the best options for sure. My problem with it is mainly about not having access to native UI elements, and also my personal thing about web technologies not being suited well for interactive UIs in general. But if you don’t care about that, by all means, Ionic does a great job in terms of dev experience.
Agree, tech stack still matters though. Because things like UI performance and responsiveness, familiarity and visual appearance are also part of UX and they are very much driven by the underlying tech stack.
I am not really familiar with Swift but I wonder if it has a feature to export to Web? For me React Native has its issues but I really like the way that when I mainly focus for instance or Android it takes a really little effort to also have my app as a WebApp on internet for everyone on almost every operating system. This mainly depends on what type of app is anyone developing, but I really like that one the mobile app is the comfort for users, but for someone who likes the idea or functionality have something at least from the Web. Swift looks really good, but can give hard time someone who is not fully in the ecosystem. Also great video, really nice animations and simple explanations. Keep it up 🫶
Thanks! Swift has some packages that let you write DSL which renders into HTML, but it’s very rudimentary, mostly for static pages. I agree that some projects, especially for bigger companies, require to reach people on all platforms and they have to go with a cross-platform framework and absorb their shortcomings. For indies though, who are not trying to build the next big thing, I think we still have the luxury of being able to focus on a specific ecosystem and deliver a great experience there, while of course knowingly limiting the audience. It’s kind of a complex topic I understand, and I oversimplified it a bit in the video.
Wait what ? "xcode is better than jetbrains products". Dude what ? Sure jetbrains IDEs are heavy but they are one of the most advanced piece of engineering that we devs can get
Depends on what you’re building. JetBrains doesn’t have a good solution specifically for mobile app development. AppCode, even before they’ve shut it down was always behind Xcode in terms of latest Swift features integrations, not to mention all the SwiftUI specific stuff like Previews. Also, things in Xcode like StoreKit in-app purchase debugger, String Catalogs, Organizer, Xcode Cloud, etc. all of the stuff that help you build and maintain your app end-to-end. The closet thing would probably be Android Studio, but even that does not have the same integration into the ecosystem as Xcode.
Привіт. Якщо чесно, я сам все вивчав дуже рандомно поки намагався зробити свій додаток. Якщо немає досвіду в програмуванні, то звісно почати треба з мови, базові речі Swift, не дуже глибоко тому що там багато всього і воно закріплюється тільки на практиці. Офіційної доки було б достатньо. Потім теж базові речі по SwiftUI (знову ж таки є офіційні туторіали) і потім почати будувати якийсь дуже маленький додаток, бажано що тобі самому потрібно щоб мотивації на довше вистачило:) А там вже розбиратись з окремими концептами коли хочеш щось зробити але не знаєш як. Відео з WWDC дуже допомагають, я б рекомендував в першу чергу там шукати інформацію. І звісно, копі-пастити з chatGPT поменше і дійсно розбиратись як воно працює. Це з мого особистого досвіду, те що здається спрацювало. Якщо буде потрібна допомога з чимось конкретним, пиши мені на пошту mykola.harmash@gmail.com 🙌
@@mykolaharmash дякую за відповідь! Я вже багато відео передивився, повторював багато додатків з відео, але при такому розумію все або багато, а запамʼятовується дуже мало) своє намагався писати, але впирався в примітивні речі, які просто не міг згадати. Передивився чи загуглив - все просто ніби. І так по колу Тоді буду більше на практику робити фокус. Ще раз дякую)
@drudyak так так, на цьому етапі 100% поменше туторіалів і побільше практики, воно тільки так і працює. У мене та сама історія, поки 10 разів не зробив приблизно однакову річ, доводиться постійно гуглити, але потім з часом якось воно все таки вкладається в голові.
How do you implement models, SwiftData or something else? In my app I, for now, avoided to have a model layer. I keep state directly in views and everything is a value type. There is no observables or anything fancy, requires a bit more manual management but it’s very straightforward and easy to reason about.
@@mykolaharmash if I were to use a persistance data storage I prefer SwiftData, that'll vary based on the context, and I prefer Core Data where you need to store user data locally, such as notes, tasks, or any other form of structured data.😉 @mykolaharmash what design pattern are you using?
I’m not really sure if it’s any particular design pattern. I try to follow a uni-directional data flow and split my views into stateful and stateless (which are the majority). I kind of picked up this pattern on the web and transferred it over to mobile. My core principle is simplicity over cleverness. I wrote enough clever code over the years, and I regretted it almost every single time 😅
I'm fullstack web dev (ts/js) with ~10 years in web development, and I'm thinking about using SwiftUI as well. Initially I thought about Flutter, but I worked with Ionic a couple of years ago and experience wasn't good at all, + I also saw the pain of my friends who worked with React Native trying to find a solution & fixes for third party packages. So I decided that probably the best way is to go native.
Definitely give SwiftUI a try, I think Apple’s tech stack is in a very good shape at the moment, and both Swift and SwiftUI are mature enough for production.
I have developed with flutter, react-native, and ionic, just now started trying compose multiplatform, all i can say is, code in swift for iOS and code in kotlin for android, the con of maintaining two code bases is way smaller to the benefits you get coding natively with all their latest libraries/packages, tools, profilers, etc. not only that, to me as much as all this crossplatforms claims performance to match native, i always found them lagging and do not feel right. By the way saying xCode is a good IDE is out of line.
I don't know what perspective you're taking, maybe from a resource standpoint, the con for two codebase farrrr outweigh any pros, it's too much work for an indie dev and will cost too much to maintain two separate Dev teams and test teams for two separate code bases when it's an organization
@@maran.ath4 even if you have 2 code bases, a lot of the work is already shared. logic, features, roadmap, assets. the hard part should be translating the code from one language/framework to another which involves a lot of extra typing but that is not that hardwork as you have AI tools that does great job once you have a clear idea of what you need. But in the end if you are an indie dev, i guess the most important thing is that you enjoy the tools you are working with. I honestly didn't enjoy bit working with cross-platform solutions.
@@sergioqcostas still wastes time and resources and leaves a lot of room for error, we all know how AI hallucinates, translating logic from one language and framework to another is not gonna be as easy as you think with AI in its current state, take your kotlin code and ask AI to rewrite the logic in swift and do it for a full cycle, business logic might work, but, Application logic? Translating state management logic? Translating UI logic? Come on mate. Idk what apps you've built where these things were easy to manage on two separate codebases. Development time increases exponentially, for teams as well, this is gonna be the same, not as difficult as with an indie dev because I assume a company would hire experts in each stack, but inter team collaboration is never easy, one framework might have limitations which will cause a feature to be delayed for one platform whereas the other platform is already using said feature... So again, I don't know how you can confidently say that the cons for cross platform development outweigh those for managing two code bases
Everyone bashing you for stating that Xcode is the best IDE for developing iOS Apps 😅- When building for the Apple ecosystem Xcode has unbeatable 1st party dev experience. Oh and it's also inevitable... you better "get gud" at Xcode when the shit (debugging) hits the fan. Being proficient with Xcode is not optional as an iOS developer, it's part of the basic skill set.
The React Native fabric architecture would solve the bridge architecture. And i prefer building in RN. if there something i need to really build for a platform I can easily build using native framework line swift
“Xcode is better IDE than VSCode” - true, because VSCode is not an IDE. It is a text editor that can have code intelligence via LSP/DAP protocols. Xcode is obviously a best IDE for swift development because it is made by apple (similar to how Intellij is best IDE for java ecosystem.) That doesn’t mean it is best IDE overall Xcode sucks, but it is still a best option for swiftui development because it is kinda only option until sourcekit-lsp become more mature. I personally don’t like general idea of IDEs so I’m looking forward to apple supporting sourcekit-lsp more. Seeing Neovim for swift development from WWDC 2024 was great.
About VScode, it’s a fine line. It has a built-in debugger, terminal emulator, language servers, git integration, etc. It’s not clear to me at which point the conceptual transition from a text editor to IDE happens 🤷♂️ Out of the box VScode handles the webdev use case not too much different from say WebStorm which is considered a "proper" IDE. Regarding Xcode, you're right, I was comparing it to other IDEs only in the context of app development, not as a generic IDE (if those even exist). However I don't agree with the premise that Xcode is the best because it's the only option. There are a ton of tools within Xcode that other IDEs just won't have regardless of how good their code editing experience might be. Things like Organizer, String Catalogs, Playgrounds, performance metrics, Xcode Cloud, Previews of course with all the dynamic type/appearance settings, etc. Yeah, I appreciate snappy code editing as anyone, but building a software product these days is so much more than writing code and so far I found that Xcode is the only IDE that covers the whole dev and maintenance cycle end-to-end.
when you said, between cross platform, u would choose react native instead of flutter.. but u explained correctly how each framework works.. makes me wonder.. are you high?? listen to your own explanation. flutter s performance is so much better, there are benchmarks available too. but react native looks more like native so u would choose react?? wow bro wow....
haha, I see your point, but to me, access to the system components still outweighs the architectural downsides. And at least in terms of perceived performance, I did not have issues with React Native when I was using it a couple of years ago, I'd expect they did not make it dramatically worth
@@mykolaharmash I think the key point you needed to emphasize in your video is what you're building. If I remember correctly, you mentioned that having access to system components was crucial for your project, but I think that point may have been overlooked by many. Highlighting this would have really clarified and justified your perspective.
speaking of performance, is the performance that relevant? is it really a deal breaker, cause when you think of it, there are major aps out there that use RN and are OK which really makes me wonder if the difference is NIGHT and DAY
" If I remember correctly, you mentioned that having access to system components was crucial for your project, but I think that point may have been overlooked by many. Highlighting this would have really clarified and justified your perspective." That's a great suggestion, thank you!
react native is not the only one who uses native UI components, Nativescript does anything react native does but better. I don't trust react native AT ALL. One system update and its gone, compilation crashes and it's a nightmare. Also... it can't handle a simple shadow effect
@@mykolaharmash well not a IOS app It's a language learning plattform that I'm building using Laravel and for now only html scss js without a framework on the front-end. But I'm thinking about to rewrite the frontend to react in the future. I have worked 4 months with Flutter in 2021 and I loved the experience. And I'm also slightly biast against apple (the only products I respect iTunes from back in the day the first iPad and the new Laptops with an M-Processor)
Your videos are very inspiring. Keep up the good work! You said you already have 15 years of professional experience as a web developer, but you still decided to learn a new tech stack and go into native iOS development. Why is that? I am a backend developer and would like to create my own product in the future. But I am currently facing the decision to learn web stack or mobile stack. I wonder why you didn't start a micro SaaS as an indie project with your strong experience in the web? Some indie hackers I follow are very successful with (micro) SaaS. Would you say mobile apps are better suited for indies than (micro) SaaS?
Thank you! Web started to feel a bit limiting for the things that I wanted to build. I wanted to have access to haptics, camera, direct interactions with touch, all that stuff. Plus, I’ve been a bit of an apple fanboy for quite some time and I vibe with their developer community more than web dev community. I’ve got some ideas for web projects as well and will try to build something there as well. But specifically about the micro SaaS movement, I’m not sure tbh, I feel like a lot of it a survivorship bias and a blatant BS in some cases :)
Nice, I did not know it’s react native. But that’s the thing, it probably uses a bunch of Swift/Kotlin components under the hood, that’s why it feels native and that’s why I said that react native would be my choice if I had to build cross-platform app.
Xcode has many flaws, and I would not call it better than VS Code. VS Code has excellent plugin support, which is an area where Xcode does not excel. Xcode also has numerous issues, such as code completion sometimes not working at all. If I don't delete derived data periodically, it will display errors that can be days old. SwiftUI is great, although not as powerful as UIKit, it handles most tasks very well. The main problem is with Swift. Don't get me wrong, Swift is a great language, and I wouldn’t want to use anything else, but the compiler is a mess, especially in ViewBuilder. Apple forced the language into the shape they wanted for SwiftUI, and they did a poor job with optimization. Even a small issue can break the compiler, and after a few minutes, it will simply tell you that it has no idea what is happening. For example, the Image view has a modifier called "resizable," which is not available on any other view. However, if you accidentally swap this with any other modifier and try to place it second, it will break the compiler in slightly larger views.
Oh sure, totally agree about Swift/SwiftUI having questionable design choices here and there and they definitely accumulated over the years, I’m sure we’re bot that far away from a major breaking SwiftUI release where a few core principles will be re-thought, like the ViewBuilder that you’ve mentioned. Xcode for me feels like a proper IDE, where the UI works together with the code and external services. Things like Organizer, StoreKIt transactions editor, String Catalogs, integrated metrics for performance tests, Xcode Cloud, Previews of course, etc. gives a feeling of a true integrated environment and that’s what I ment by it being a better IDE. A lot of issues, for sure, but I grown to appreciate the walled garden that is not that diverse in terms of plugins, but a bit more cohesive. My experience with VSCode plugins outside of the big ones, was subpar unfortunately: bugs, lack of long-term support, etc. usual stuff for a community-driven ecosystem:)
Person on Threads pointed out them to me. Have not tried it myself so no opinion, but the idea of writing SwiftUI for both platforms definitely looks interesting.
Not that catchy though, isn't it 😅 But seriously, my choice of SwiftUI was a consideration, if there was something better for my purposes, I'd go with it 100%.
You have compared SwiftUI & Swift with Hybrid Platforms, but i think there will be space for Kotlin & Kotlin Compose UI. What About Kotlin Multiplatform ? also Xcode is good choice with Swift as you sounded like. Visual Studio is The Best IDE for C#
A few people mentioned Kotlin Multiplatform and I have to admit I never heard of it before, will take a look out of curiosity. Mainly want to understand the broad architecture of how they go about cross-platformness.
I use iPhone and Mac forever. I still don't know what that "native feel" is supposed to be on mobile. I guess 5% of iOS users care? Ah, just read comments on Xcode. Dude, "are you high?"..
For the native feel, I think it shifted a bit overtime. At first, it was purely about the UI (visual style, animations, whimsical gimmicks, etc.), you’re right that now people don’t care about that ad much (though some, including myself, still do:). Currently I think it’s more important to be native in terms of integrations into the ecosystem. For iOS app it would be widgets (home screen, lock screen, control center), siri commands, shortcuts, live activities, dynamic island, iCloud sync, all that stuff. And beyond that are apps on more apple platforms with their own “native” patterns.
@@mykolaharmash Thanks for your exhaustive answer, makes sense! I think you can do all/most of this indirectly (flutter plugins, native channel). But it's painful, and a lot of additional effort (e.g. widgets). So if you need those, it could actually make sense to go native. Xcode and waiting for compiles is really appalling :)
this video is pointless, you are comparing multiplatform tools that make some sacrifices or concessions so you only have to write the code one time or have minimal work to configure your app to run on the other platform, native option always be the best, so swift for IOS and Kotlin for Android, the thing is you could make a multiplatform app only with Kotlin and technically be native. YOUR needs and objective was to create an app on IOS, so using the native tools is the obvious answer, comparing he different multi platform options when you are not going to use them is like those people that make videos of this language (for example python) vs C++ and make the conclusion that one is better because is 100x faster to fo a simple calculation, or someone that compares all the JS frameworks to do a static webpage when HTML, CSS and JS is easier. Also the Bias is obvious, Xcode a better IDE???, like what???
I see your point, though I also see many people choosing React Native or Flutter even when they do not intend to use their cross-platform capabilities, only because the tech or tooling is familiar, or people decide to build cross-platform apps persuaded by a larger potential audience, and often even not considering focusing on a single platform, while for a lot of small/medium apps is a completely viable option. Though I understand I did not get this point across that well. I knew Xcode thing would trigger a few people 😅 I hated it at first as well, and it has a lot of issues but I stand by what I've said in the video. It's not the best in terms of editing code, navigating files, etc. but the tools it provides like Organizer, StoreKit debugger, String Catalogs, Xcode Cloud, Previews, integrated test runner including performance test metrics, Playgrounds, view hierarchy debugger, ... there is nothing out there that gives that level of integration with the ecosystem. Anyway, I appreciate your thoughtful comment!
@mykolaharmash Familiarity can be a huge factor. There might be time constraints that make learning a new language or framework impractical. Imagine spending three years building with React and then suddenly needing to switch to Swift. The experience and expertise you've built up over the years with one tool can't easily be replicated with something new. You’re likely to make a lot of rookie mistakes when working with a framework you’ve just learned.
Good point, agree! There are definitely more factors in play when choosing the tech stack, time constraints are indeed a huge one, and choosing a familiar tech can be a massive shortcut. You just have to be mindful that the shortcut will come at some cost one way or another.
Previews in Xcode give you a pretty similar experience to hot reload. You still sometimes need to compile the whole app and run it in a simulator but it is mostly when you use some more advanced OS features or external services. Swift compiler has a dynamic method injection feature, so Previews in Xcode reload almost instantly, at least if you keep your component size reasonable.
That’s a common trend in the comment 😅 That statement requires more context. I use VSCode daily at my day-job, and as an IDE, it’s not even close to Xcode. Yeah, the text editing is snappier in VSCode, navigating the codebase is also a bit more comfortable. But other than that I think VSCode became a feature-creep with no cohesive vision about end-to-end developer experience. Xcode is more opinionated, you cannot customize every little thing, which over time I started to appreciate because then the overall experience is less fragmented.
I’ll try to show the code for in-app purchase setup somewhere, but in a nutshell, I’m just using client-only StoreKit. You can also search one of the recent WWDC videos about StoreKit 2, they have a pretty good walkthrough on how to set it up.
I think you wanted to build an iphone app, otherwise React Native would've been the choice. Apple does have a nicer platform, at least they care about design and don't guide your app to come out looking like garbage (Material design🤮); it's no secret why nobody is building material looking apps, even on Android. Swift being friendlier by not dealing with all the extra abstractions is a great too. However, if you cared about Android, you wouldn't prefer porting an iOS app to it and effectively building two separate apps.
Pretty sure I did not say that :) I'd prefer react native because it has more straightforward access to native frameworks and UI components. But it's still the best of all evils kind of thing.
I've been working with react native for 4 years now and it"s (imo) still the best option to write cross platform apps. i don't agree with the fact that you rely on community based libraries, because the most crucial libraries (like navigation) come from companies which are exclusively working on those libraries (like software mansion). all other native functionality you can write yourself. i have written multiple native modules in my app (e.g. QR Code scanner, Image to Text with ML Kit) and it works like a charm and it is incredibly powerful. if you install for every little funcionality a library its probably not the technology's fault, rather you not being able to use the technology right.
What gives you the impression? I work with web stack and native ios stuff on a daily basis and had a few react native projects in the past. Though I agree my Flutter knowledge is mostly theoretical, I built only dummy test projects with it.
6:00 "There is technically no way to reuse any of the system UIs, meaning it will be really hard to make sure app feels native". I'm not judging the rest of the video, because it's obvious that the stack you are talking about is wider than the knowledge on this topic presented by you. Flutter can reuse, run and interact with Native components by Method Channel, so you can move out the logic of the native app to flutter to use it on x different platform than iOS. You lost me when you said xCode is better, swift is better... stating your SUBJECTIVE opinion without any metrics and delivering it as a fact. To the broad audience the key factor is if the app is running well and if it's available for their platform. In my 5 y of mobile developer career I was only once ask to use specific Android/iOS layouts, the "native" feeling is no longer something that users care about. To sum up why even bother exploring other tools if you are only considering release on iOS, this will 100% of times scream use native solution, if you want to hang a picture on the wall you use hammer not screwdriver.
@mermonkey8295 Hey 👋 thank you for a thoughtful comment! You clearly have more experience with Flutter, but I don’t think anything is wrong with my statements as I was specifically talking about system UI components (big ones would be scroll views, sheets, media players, etc.), and not only the purely visual part but the interactions as well. There is no way to use those in a Flutter app, and for non-visual stuff I talked about bridging native APIs, and while possible, I described my issues with that approach. Let me disagree with you on the statement that feeling native is not important anymore. Though what that means exactly can vary, so for me feeling native is not only about how the app looks and feels (though I think it’s important as well), it’s also about being a good citizen on the platform and within a bigger ecosystem. For iOS apps this usually means that app has various types of widgets, shortcuts, siri commands, dynamic island and live activity stuff, apps on other apple OSs, etc. everything that goes outside of the main app rectangle. And just anecdotally, I also get a lot of feature requests to implement those integrations in my app, so I see that it is important to day-to-day user experience. Yeah, and those hot takes at the end, I tried to emphasize that those are subjective point (purely based on my experience and preferences), so I don’t think I misled anyone to thinking those are facts, at least that’s my idea of subjectivity. Let me know if you have more thoughts, happy to discuss 🙌
@@mykolaharmash and that's the statement I can get behind, ofc in the big picture I'll agree with this video (besides obvious XCode bcs its trash :')). For the scroll etc. even my CTO who has like 10 years of exp in Swift when he picked up Flutter said I can't see the difference between those two approaches. Swift will always outrun Flutter in access to the new API's and functionalities. About my statement that users wont care about ui being separated by native components, most of the apps usually have the design tailored by the designer to include similar experience across all platform, which means only small portion of platform related stuff differs (android back button, swipe on iOS, prompts to permission etc.) If those are in check designers won't bother to follow cupertino or material in Ui's when it's in good UX and users like it
@mermonkey8295 @mermonkey8295 right, and that was one of my point as well, instead of using something like cupertino widgets, better to go with a custom design to avoid the uncanny valley effect. I did not articulate this point well in the video, but I was talking about cases like my app where I explicitly want the app to use as much of system iOS UI as I can, and for me Flutter would bot work unfortunately. Btw, as a Flutter dev, what’s the usual approach for implementing iOS widgets for example or apple watch complications, stuff like this? Do you just decide explicitly to avoid those or Flutter devs still know a bit of Swift/Kotlin in order to implement those kind of technology-dependent features?
@@mykolaharmash logic side most of the API's are already exposed via packages, UI side it's trully only the designer job. If something is not looking crisp I'll tell him what should we do to make it better but making one ui per platform is no longer needed by the clients
I’m quite far from mastering swift myself tbh:) and the documentation mostly sucks, but you’ll find your intuition about finding the right information, it will just come with a bit of experience.
100%, everything here is subjective and based on my own experience. And tbh, that’s what I want to hear as well from other devs, I’m not really interested in objective spec comparison, I can read the docs for that :)
@@mykolaharmashI have used both ReactNative and Flutter, I stuck to the later since it is more easier to develop CrossPlatform apps with and it does achieve native performance(ReactNative has some lag)... I'd like to wonder why you would prefer ReactNative to Flutter but then there are personal preferences
Got it 👍 My preference for react native is mostly because for my apps I want to use system UI components. Though I understand this does not fit every app. And performance is a good point, I could imagine how not having so much middle layers would help Flutter be a bit snappier:)
... Okay, I don't like VSCode, so maybe I could agree that Xcode is better, but Xcode is by no means a good editor. It's so slow, and so janky. Sure, it's the best option for working with SwiftUI, but that's because it's practically the *only* option.
I knew Xcode thing would be a controversial take 😅 It definitely requires more context, and you're totally correct that it's not the best editor, but as an IDE, I stand by what I said in the video. Things like Organizer, StoreKit debugger, String Catalogs, Xcode Cloud, Previews, integrated test runner including performance test metrics, Playgrounds, view hierarchy debugger, ... in my experience, there is nothing out there that provides this level of integration and holistic development experience. I appreciate snappy text editing and fast file navigation as anyone, but writing code is only one part of building an app.
@@mykolaharmash To be fair, what I had said came from a primarily Rust developer, who primarily uses an editor made entirely with Rust, so I suppose I’m lucky to not have to deal with performance issues when I work on things. And, to be fair, the many features of Xcode _are_ cool, but, honestly, maybe it’s too many features if it’s the cause of Xcode’s bloat- writing code may not be absolutely all of software development, but for me it’s reeaaally most of it. Again, maybe it’s different for app dev, but I’ve wanted to really get into app dev myself and I’ve always been deterred by Xcode falling behind as I code.
TL;DR: Maybe Xcode is good enough for most app devs, but it falls short of my preexisting standards
Yeah, I get your point. And I wish Xcode team would bring more attention to the basics. Different projects require different dev environments, like I can comfortably work on a web project in vim, but I would hate to build an app in it.
@@mykolaharmash I have seen something like X-Editor on GitHub some where
@@valentinegbHere comes the “I write Rust, btw” buffoon.
Saying Xcode is a good IDE is like calling a potato a smartphone
Haha, I 100% hated it at first as well, then over time it’s just clicked. It has A LOT of issues, but it handles the complexity of building and maintaining a modern software product end-to-end. With other editors/IDEs I’d need a bunch of additional services to achieve what Xcode has out of the box. I hope I’ll give more context to that phrase in the video at some point, it’s a topic by itself.
@@mykolaharmash yeah absolutely
Xcode is a really heavy app (size and CPU resources), it has a lot of flaws, but when Xcode it works properly, there is no IDE that can compare with it.
@@gaussito it is much lighter in size nowdays than before, it used to be so huge and painful, it has improved quite a lot
It's a good IDE for swiftUI. I tried it recently and I was impressed how easy it made things.
"Xcode is a better IDEA than any JetBrains IDEAs"... Dude, Are you high?
with the current context it is
Depends on how you define better. It’s a lot easier for a beginner to learn Xcode with SwiftUI than it is the android version, from my experience.
Yes, it is, in the context of developing iOS apps.
In a normal sense why must use intelij idea rather than Android studio... Yeah android studio is now built on top of intelij idea but there's a reason they did that
you must be pretty trying to pull in Jebrains into this conversation😂😂..their IDES are top tier
I work with RN for 4 years and I never touched Swift code. In JavaScript word, you will find library for everything u want. RN is popular, so u will find a native lab
Cross platform will never be better than native. Even more so if you want to use the last SO stuff provided by the manufacturer. But, If you don't care about that kind of stuff (like the vast majority apps), u can go with RN. Amazon, Microsoft Office, Discord and more are examples
with swift you barelly need to search library. everything what you need you have in the language core :) having a lot of libs doesn't a good sign. It's just pointing to the fact, that JS as a language is a very limited trash :)
@@jackdanyal4329 opinion of a dev who never used RN. ok, thanks
odd take.
Swift/Swift ui dev for almost a decade. And when i saw the Vuejs, it was like a breath of fresh air.
My vue apps, you wont be able to tell its not native, as i get the navigation animation almost perfectly. And that was before ai helped with the subtle animations / effects.
My PTSD from Angular 1 days gets triggered when I see Vue templates, haha 😅 But seriously, as I said in the video, with the right amount of effort you can get pretty close, but to me it's always an uphill battle and not worth, I like to keep web stack for web. Btw, can I have a look at some of your apps? Not to prove you wrong or anything, genuinely curious.
@@mykolaharmash skill issues
Are you using NativeScript Vue? Maybe Quasar?
SwiftUI is the best option when building for iOS for me, and second best option for me is Flutter if building small to mid scale apps for both iOS and Android.
I'd probably go with Flutter, but only if I was going for a completely custom design and I knew upfront I don't need any system UIs. Though, I have an accessibility concern with Flutter. I know that it generates an accessibility tree for assistive tech, but I have not tried how well it really works. Do you have any experience with it?
@@mykolaharmash Yes I have experience implementing accessibilities with SwiftUI, haven't tried accessibility for Flutter though, since It's been only a few weeks since I've been using Flutter, while it's easy for us to pickup flutter as mobile devs, though I still have surface level of knowledge, while
I have 2.5 years experience with SwiftUI, and 7 years with UIKit.
Some Native mobile devs I know tried to use Flutter in their enterprise mobile apps, and they have some complaints when it comes to developer experience, for weeks they seem to get harder to maintain, but I dunno, I still yet to experience larger scale apps for Flutter.
I'll absolutely be going to use a lot of Flutter and SwiftUI for my personal side-projects in the future.
@@mykolaharmash Thanks for the nice video btw
Flutter is dead in my country. No company use it. Let go with React env. IT the future belive me😊
@@mykolaharmashwe implemented it atmy job in a couple of projects. Works fine, but a bit clumsy to work with and test.
I totally agree with you
There is no need to even look at cross/hybrid frameworks if you are only targeting one platform because there are only useful when you want to have the same app on multi platforms
This is correct, if you want to build for only IOS it only makes sense to just use SWIFT. Or if you are a company with lots of funds and need a cross-platform app, you can have to team build two apps that are the same but one on SWIFT and the other on Kotlin, which will be the most effective.
Right, and the issue is that many people (especially coming from webdev) are choosing cross-platform frameworks not because it's necessary but because the tech or tooling is familiar.
The only problem I have for VS code is it's so slow compared to other IDE's but in terms of customization, community and extendability nothing comes close. Every time I open Xcode I just want to close it right away. Hopefully you can make a video justifying your statement Xcode is a better choice.
yeah, I know he said subjective but this one really shocked me, he should probably drop a video explaining that.
I hated Xcode at first coming from super-customizable VSCode/vim (and before that JetBrains stuff, Sublime, Nova, ... in different times), but I've grown to appreciate Xcode's more opinionated approach, though it for sure has a lot of issues. I'll try to expand on this thought at some point.
@@mykolaharmash Hmm, intresting
@@mykolaharmash everything has its pros and cons and I'm sure XCode has its own great Pros too, I haven't used it before but I'm sure its probably alright
Great video on this topic, thanks. As a guy in management who unfortunately hasn't coded in many years, you helped me understand why cross-platform frameworks which compile native can still have many real-world limitations.
Xcode being better than vscode or any jet brains product, are you good?
Stand by this 100%, though it requires more context :)
Would love if you made a video going into the 3 subjective reasons you like SwiftUI. I started learning SwiftUI coming from a React background and I was very surprised to end up having the same opinions.
I’ll try to cover those point in some way, whether in a dedicated video or as a segment somewhere. Though seems like we are in a minority here judging from the comment section 😅
Hmm, for building iOS apps of course swift is the best option. Literally all the other options you talked about are to let you build for other platforms in the process. So if you are not considering other platforms it’s stupid to choose anything else!
I would not say it’s stupid, there are some other factors here. Like many webdevs choose Ionic or React Native only because the frameworks and tooling is familiar and not because they want to build for multiple platforms. It’s kind of understandable, people want to stay in the comfort zone.
“Most people will feel that something is off even if they couldn’t articulate what exactly is wrong there” - THIS is also my conclusion after building Ionic apps 👍
Need to consider social aspects, in USA is easy to ignore Android, but in other countries is mostly 50/50 Android and iOS
78% Android in Spain for example
@@caresvlbdjz 81% Android in Brazil
Thanks for your opinion and for sharing your experience with us.
Followed the same path years ago with the same result, well articulated 👍
Hey, I really like your videos and how you turn ideas into apps. Could you do a video on how much the app has made so far? Also, any tips on becoming a top 1% developer? Not sure if you’re more into web or iOS right now, but it’d be cool to hear your journey and get some advice. By the way, what skills do you think are valuable outside of coding? I noticed you’re good with Figma, Blender, and video editing. Those animations are pretty cool.
Thank you for the kind words! My next video will be another devlog about the app with all the numbers breakdown including proceeds so far :)
I enjoy both web and iOS dev pretty much equally at least when in comes to pure technology, though I think web stack became too messy in the recent years and I enjoy it less than say a 5 years ago.
For skills outside of coding, I think you got this already - design, video stuff and motion graphics will give a huge unfair advantage, at least for your personal projects. In the world where everyone is assembling apps out of most popular component libraries, you’ll be able to stand out if you add some unusual animation or 3D elements. Not to mention you’ll be able to market your work much better.
Thing is. If I were to build a cross platform application, I wouldn't be using then native UI elements because that would make the app look different on iOS and Android. My problem with React Native is that it takes a bit of effort to make the app look same on the both platform.
Yeah, that's a very good point. One thing is to technically make the app run on both platforms but another thing is to make them look and feel at home there. Even those the majority of the code could be shared there still will be a lot of tweaking and edge-case handling for each OS individually.
kotlin multiplatform is a nice idea imo, but it's still too much in alpha to use. takes too much time to compile and the community isn't too big yet. definitely look into that for the future tho
Interesting, never heard of it before, will hate a look, just out of curiosity.
At least a comment about Kotlin multi platform.
I was looking in comment if someone asked him about kotlin! :)
Outstanding video. 👏
You’ve earned yourself a sub.
you are only considering your developer experience here, you forgot that we build apps to solve problems, each problem deserves it's own solution so no framework is better than other, that's what any engineering manager would tell you. even if your points are valid related to native development it may not be applicable for issues with the business or so many other reasons
Broadly, I agree with you, though I tried to focus specifically on indie devs where it’s easier to optimize for developer experience and your satisfaction from the process while building stuff as there are less factors and stakeholders in play.
I agree with your take on this, having experienced all 3 tech in one form or another.
Usually for indie dev, it makes more sense to build iOS-only app at first.
Do you have any experience on how dev would look like if you then had to also invest in building an equivalent app in android? Would you go react native or native android? Are there any tools that can help us at least bridge the design language across the native apps?
Expanding to other platforms is a really tricky thing. I'd say, ideally, you'd have this plan (specifically a plan, not just an aspiration) upfront and would be able to be strategic in terms of choosing tech stack and UI designs. Specifically for iOS to Android transition, React Native would probably be the best choice because than you'd be able to bridge and re-use some of the already written Swift code. All other options are basically a complete re-write.
I could also make a super far-fetched argument that, if your app is so successful on iOS that you want to expand to other platform, maybe there is an option to hire another developer and keep two versions of the app run in parallel. But it's more from a fantasyland:)
I'm a backend SWE and wanted to mess around with building an app. Really blown away with Swift and SwiftUI so far. Basically just abstract the bs away and let me make my app.
Yeah, it's pretty great I agree.There are still rough edges and you'll get your fair share of frustration, but overall it's a solid dev experience.
Honest question. If you need an app for iOS and Android you still use this approach? Develop in swift and kotlin instead of a single codebase?
I mentioned in the video that I’d go for React Native, mostly because it has the most straightforward way of using native frameworks. Though it’s the best of all evils kind of thing :)
How DARE YOU! ... I mean, actually a great video with a lot of good arguments. Nice to see you come out with some hot takes.
Although I'd love to challenge you on most, I'm selecting just two underlying beliefs you seem to have.
1. "An indie hacker will not lose much by not offereing cross-platform"
I feel this falls apart the moment you try to develop something that is not just intended for one person on their one device.
Building anything for a company and its customers or employees? - Unless everyone uses a company iphone, you need both
Building something with a booking system? - You have to support both platforms or say goodbye to X% of potential revenue
Building something where users can add their friends / contacts? - You'd only retain users who only have iPhone friends (definitely a highter % in the US but still).
2. "Most apps needs to look or at least feel like an iOS app".
As an indie hacker I believe that there is also a perfectly valid approach of building fast, tiny and scrappy products that you share with your audience in niches, especially if your idea is original or serving an underserved market.
Do I believe Swift is necessary to make the best iOS apps? 100% For indie hackers however, I'd say it's much closer to a 50/50 call, completely dependent on what they want to make.
PS:
*Xcode has caused me every single major headache in development for the last 2-3 years and I swear I try to touch that monster as little as possible. (definitely biased and unfair as I only need to use it once every 2-3 months and thus it always need breaking updates)
*I'm super excited to see how apple implements AI into Xcode over the next years, as they have the perfect setup for creating something that always gives up-to-date documentation-backed suggestions.
*iOS widgets are awesome and I'm jealous of how much easier you can implement them with swift.
*Dart is the better language and that is simply an undeniable fact (in my head at least).
I warned you that you would not like this video 😅 But seriously, thank you for a thoughtful comment!
On the points: I tried to emphasize the indie developer perspective because you're totally right that for a larger company, it's a completely different argument, and going cross-platform is the most reasonable option. My issue is that many people (especially those who come from webdev) choose a cross-platform framework not because it's necessary but because it's a familiar tech stack and tooling. Or some indie devs have an aspiration to build the next big thing and they want to capture the largest audience possible. In those cases, I'm advocating for a more humble/niche approach.
On the native look and feel thing, my main point is that you should not try to mimic system UIs, it's a much better UX when the app has a custom design instead of an uncanny valley feeling of something like Cupertino Widgets. I don't have anything against apps looking different and custom. The problem with Flutter specifically though (sorry 🙈) is that if you want your app to feel native, Cupertino Widgets is your best option and it's not a good one IMO.
The Xcode thing is a controversial take I understand, haha :) It requires more context, I'll try to expand on this at some point.
And about "Dart is the better language and that is simply an undeniable fact", let's not get carried away here 😜
@@mykolaharmash Haha who said I didnt like it? Had a blast, and looking from all the comments I'd say the video is a great success😄
Always great to see developers from very different "corners" of the dev world actually get together in a somewhat civil debate. (and I will admit it feels nice to see the rally against xcode 🤣)
No for sure, even though I feel the comments section is a bit emotional, it's super cool to see people being passionate about tech. In a day-to-day corporate world, I don't see that often these days.
"and I will admit it feels nice to see the rally against xcode 🤣"
haha, it's so unanimous, starts to feel like a conspiracy 😄
Very very fair notes, besides the xcode one (yikes).
I would say, something BIG you've missed is how easy it is to push updates using Expo (RN). You don't need to go through the review process that can take day(s). If you want to hotfix something or push an analytics event you've missed, it takes a few minutes.
That’s a very good point 👍
Flutter the best of the best for everyone )))
And just like that my Xcode take does not sound that crazy anymore 😜
I would also add that instead of creating an app for two platforms, lean towards iOS. It’s most likely they will pay for apps/services/subscriptions instead of Android users.
In my head Android still holds this reputation where everyone pirates stuff and don’t pay for anything, it was like this when I was using it 10 years ago. But I wonder if it’s still true though 🤔
Just hopping on here to say that the RN team is making improvements in regards to the Bridge, by giving the option of removing the need for it altogether with the new architecture. Also, the great thing about RN is that you can write native code! You don't necessarily need to depend on random devs and their libraries as you can write the latest OS features in Swift/SwiftUI and use it in the RN app. You are not stuck, you will always have the option to write native code with SwiftUI and AppKit. Doesn't seem like you are planning to do multiplatform though, so Swift/SwiftUI is definitely the obvious #1 choice. I really enjoy SwiftUI. Recently wrote a macOS app to help me when using Expo.
And yes! Your reasoning makes total sense! I personally like to develop for iOS (I have deep have for developing for Android LOL). I have been moving away from RN for personal projects because I am not planning on ever releasing stuff for Android, so SwiftUI is my focus right now.
Yeah, that’s my thinking ad well about RN and why I’d prefer it if I needed to go multi-platform. Having the option to use native UIs is a must have for the type of apps I want to build.
Haha, I’m curious what went wrong with android dev for you?:)
if you want to build flutter app based on clean architerture, and a good state magement like bloc this is a good starting point.
I like your content keep going
Thank you!
Thanks for this video! Currently I am a Product Manager and I want to build my own app. I was always fighting with myself whether to learn Swift/SwiftUI or Dart/Flutter.
I now tried both for a few weeks each and I have to admit: At the beginning I liked Flutter for the reason to build an app once and have it both on iOS/Android to make more money. But i just HATE how VS Code and the Code in Flutter looks like xD the colors, a trillion indents and brackets for all the 2342034 widgets, childs, childs, TextWidget, child, child are just ugly and annoying. And semicolon at the end of every line haha
Swift and XCode just look beautiful - and it makes coding SO much more enjoyable.
Your video just gave me the confirmation again to stick with Swift, so thanks for that :D
Glad to hear that! Though don’t be deceived but the appearance, Swift and Xcode will give you a fair share of frustration 😅 Still a better choice IMO
Hmm, I'm curious, did you try React Native?
Bad title, better one will be, swiftUI vs flutter vs react native making iOS apps
But then we all would miss out on all the fun in the comments, I could not let it happen 😅 You're right though, I'll probably change it later today.
I agree with you, but I think you ignored the reason for using Cross Platform, cost.
I think a lot of people choose cross-platform frameworks just because of the familiar tech and tooling and still build apps for one specific platform. In these kinds of cases, there is a cost of switching tech if an indie dev, say with web experience, decides to go with SwiftUI, but it's not the cost in the purely monetary sense. For companies though, you're totally right, it's a whole different story and the cost is one of the main (if not the main) factors.
Bro 100% ate this. they gonna hate you🤣🤣🤣 They don't want the truth. You just motivated me to finish the video i started
I regret nothing 😅 Good luck with the video!
I know this is off topic, but I would like to know which shirt brand you using? because it looks high quality cloth
Hey, I believe it’s just random Uniqlo thing :)
react native is literally backed by numerous fortune 500 companies who invest resources in different forms into ensuring that is up to date with the native platforms as they rely on it themselves.
these companies are actively invested in different parts of the library that make it better from static hermes to supporting more platforms beyond just mobile so on.
Your point on third party dependencies therefore doesn't make sense as you speak on it like the eco-system there just comprises of people who can just decide their tired and call it quiets thus compromising your application.
I don’t fully buy this argument tbh. For example “react-native-health” package that is quite popular, was last updated a year ago and has 95 open issues majority of which labeled as “bug”. While I see you point that most common integrations might be supported by larger organizations with lot more resources, there are a ton of smaller packages supported by individuals in their spare time.
May I ask why Ionic not an option? I think it deserve some recognition.
Sure, if you decide to go the web stack route Ionic is one of the best options for sure. My problem with it is mainly about not having access to native UI elements, and also my personal thing about web technologies not being suited well for interactive UIs in general. But if you don’t care about that, by all means, Ionic does a great job in terms of dev experience.
Good UX comes from intentional design, not from tech stack.
Agree, tech stack still matters though. Because things like UI performance and responsiveness, familiarity and visual appearance are also part of UX and they are very much driven by the underlying tech stack.
I am not really familiar with Swift but I wonder if it has a feature to export to Web? For me React Native has its issues but I really like the way that when I mainly focus for instance or Android it takes a really little effort to also have my app as a WebApp on internet for everyone on almost every operating system. This mainly depends on what type of app is anyone developing, but I really like that one the mobile app is the comfort for users, but for someone who likes the idea or functionality have something at least from the Web. Swift looks really good, but can give hard time someone who is not fully in the ecosystem. Also great video, really nice animations and simple explanations. Keep it up 🫶
Thanks! Swift has some packages that let you write DSL which renders into HTML, but it’s very rudimentary, mostly for static pages. I agree that some projects, especially for bigger companies, require to reach people on all platforms and they have to go with a cross-platform framework and absorb their shortcomings. For indies though, who are not trying to build the next big thing, I think we still have the luxury of being able to focus on a specific ecosystem and deliver a great experience there, while of course knowingly limiting the audience. It’s kind of a complex topic I understand, and I oversimplified it a bit in the video.
Wait what ? "xcode is better than jetbrains products". Dude what ? Sure jetbrains IDEs are heavy but they are one of the most advanced piece of engineering that we devs can get
Depends on what you’re building. JetBrains doesn’t have a good solution specifically for mobile app development. AppCode, even before they’ve shut it down was always behind Xcode in terms of latest Swift features integrations, not to mention all the SwiftUI specific stuff like Previews. Also, things in Xcode like StoreKit in-app purchase debugger, String Catalogs, Organizer, Xcode Cloud, etc. all of the stuff that help you build and maintain your app end-to-end. The closet thing would probably be Android Studio, but even that does not have the same integration into the ecosystem as Xcode.
як краще всього початківцю вивчати Swift+SwiftUI? із врахуванням, що це не стане роботою, більше хобі. Можливо якісь ресурси+роудмапу порадите?
Привіт. Якщо чесно, я сам все вивчав дуже рандомно поки намагався зробити свій додаток. Якщо немає досвіду в програмуванні, то звісно почати треба з мови, базові речі Swift, не дуже глибоко тому що там багато всього і воно закріплюється тільки на практиці. Офіційної доки було б достатньо. Потім теж базові речі по SwiftUI (знову ж таки є офіційні туторіали) і потім почати будувати якийсь дуже маленький додаток, бажано що тобі самому потрібно щоб мотивації на довше вистачило:) А там вже розбиратись з окремими концептами коли хочеш щось зробити але не знаєш як. Відео з WWDC дуже допомагають, я б рекомендував в першу чергу там шукати інформацію. І звісно, копі-пастити з chatGPT поменше і дійсно розбиратись як воно працює. Це з мого особистого досвіду, те що здається спрацювало. Якщо буде потрібна допомога з чимось конкретним, пиши мені на пошту mykola.harmash@gmail.com 🙌
@@mykolaharmash дякую за відповідь!
Я вже багато відео передивився, повторював багато додатків з відео, але при такому розумію все або багато, а запамʼятовується дуже мало) своє намагався писати, але впирався в примітивні речі, які просто не міг згадати. Передивився чи загуглив - все просто ніби. І так по колу
Тоді буду більше на практику робити фокус. Ще раз дякую)
@drudyak так так, на цьому етапі 100% поменше туторіалів і побільше практики, воно тільки так і працює. У мене та сама історія, поки 10 разів не зробив приблизно однакову річ, доводиться постійно гуглити, але потім з часом якось воно все таки вкладається в голові.
"Xcode is a better IDEA" after this I can confirm that dude is totally biased 😂
How about kotlin multiplatform?
It was not on my radar tbh, a few people pointed it out to me, will take a look at least out of curiosity.
I really like to follow mvvm architecture with swiftui
How do you implement models, SwiftData or something else? In my app I, for now, avoided to have a model layer. I keep state directly in views and everything is a value type. There is no observables or anything fancy, requires a bit more manual management but it’s very straightforward and easy to reason about.
@@mykolaharmash Same! Don't fight the framework
@@mykolaharmash if I were to use a persistance data storage I prefer SwiftData, that'll vary based on the context, and I prefer Core Data where you need to store user data locally, such as notes, tasks, or any other form of structured data.😉
@mykolaharmash what design pattern are you using?
I’m not really sure if it’s any particular design pattern. I try to follow a uni-directional data flow and split my views into stateful and stateless (which are the majority). I kind of picked up this pattern on the web and transferred it over to mobile. My core principle is simplicity over cleverness. I wrote enough clever code over the years, and I regretted it almost every single time 😅
Beautiful video, by the way, what do you use to edit it?
I'm fullstack web dev (ts/js) with ~10 years in web development, and I'm thinking about using SwiftUI as well. Initially I thought about Flutter, but I worked with Ionic a couple of years ago and experience wasn't good at all, + I also saw the pain of my friends who worked with React Native trying to find a solution & fixes for third party packages. So I decided that probably the best way is to go native.
Definitely give SwiftUI a try, I think Apple’s tech stack is in a very good shape at the moment, and both Swift and SwiftUI are mature enough for production.
I have developed with flutter, react-native, and ionic, just now started trying compose multiplatform, all i can say is, code in swift for iOS and code in kotlin for android, the con of maintaining two code bases is way smaller to the benefits you get coding natively with all their latest libraries/packages, tools, profilers, etc. not only that, to me as much as all this crossplatforms claims performance to match native, i always found them lagging and do not feel right.
By the way saying xCode is a good IDE is out of line.
I don't know what perspective you're taking, maybe from a resource standpoint, the con for two codebase farrrr outweigh any pros, it's too much work for an indie dev and will cost too much to maintain two separate Dev teams and test teams for two separate code bases when it's an organization
@@maran.ath4 even if you have 2 code bases, a lot of the work is already shared.
logic, features, roadmap, assets. the hard part should be translating the code from one language/framework to another which involves a lot of extra typing but that is not that hardwork as you have AI tools that does great job once you have a clear idea of what you need.
But in the end if you are an indie dev, i guess the most important thing is that you enjoy the tools you are working with.
I honestly didn't enjoy bit working with cross-platform solutions.
@@sergioqcostas still wastes time and resources and leaves a lot of room for error, we all know how AI hallucinates, translating logic from one language and framework to another is not gonna be as easy as you think with AI in its current state, take your kotlin code and ask AI to rewrite the logic in swift and do it for a full cycle, business logic might work, but, Application logic? Translating state management logic? Translating UI logic? Come on mate. Idk what apps you've built where these things were easy to manage on two separate codebases.
Development time increases exponentially, for teams as well, this is gonna be the same, not as difficult as with an indie dev because I assume a company would hire experts in each stack, but inter team collaboration is never easy, one framework might have limitations which will cause a feature to be delayed for one platform whereas the other platform is already using said feature...
So again, I don't know how you can confidently say that the cons for cross platform development outweigh those for managing two code bases
I really like Fluent UI. That is good.
Oh wow, I did not this thing existed. I'll check it out, at least out of curiosity.
@@mykolaharmash I found about this when I was checking arc browser used swift ui.
@@mykolaharmash it is just Flutter under the hood but by using python instead of dart
Everyone bashing you for stating that Xcode is the best IDE for developing iOS Apps 😅- When building for the Apple ecosystem Xcode has unbeatable 1st party dev experience. Oh and it's also inevitable... you better "get gud" at Xcode when the shit (debugging) hits the fan. Being proficient with Xcode is not optional as an iOS developer, it's part of the basic skill set.
Yep, agree 100%
The React Native fabric architecture would solve the bridge architecture.
And i prefer building in RN. if there something i need to really build for a platform
I can easily build using native framework line swift
That is a cool mix of skills to know some cross-platform thing but still be fluent enough with native 👍
this video will age like milk
We’ll see 😉
“Xcode is better IDE than VSCode” - true, because VSCode is not an IDE. It is a text editor that can have code intelligence via LSP/DAP protocols.
Xcode is obviously a best IDE for swift development because it is made by apple (similar to how Intellij is best IDE for java ecosystem.) That doesn’t mean it is best IDE overall Xcode sucks, but it is still a best option for swiftui development because it is kinda only option until sourcekit-lsp become more mature.
I personally don’t like general idea of IDEs so I’m looking forward to apple supporting sourcekit-lsp more. Seeing Neovim for swift development from WWDC 2024 was great.
About VScode, it’s a fine line. It has a built-in debugger, terminal emulator, language servers, git integration, etc. It’s not clear to me at which point the conceptual transition from a text editor to IDE happens 🤷♂️ Out of the box VScode handles the webdev use case not too much different from say WebStorm which is considered a "proper" IDE.
Regarding Xcode, you're right, I was comparing it to other IDEs only in the context of app development, not as a generic IDE (if those even exist). However I don't agree with the premise that Xcode is the best because it's the only option. There are a ton of tools within Xcode that other IDEs just won't have regardless of how good their code editing experience might be. Things like Organizer, String Catalogs, Playgrounds, performance metrics, Xcode Cloud, Previews of course with all the dynamic type/appearance settings, etc. Yeah, I appreciate snappy code editing as anyone, but building a software product these days is so much more than writing code and so far I found that Xcode is the only IDE that covers the whole dev and maintenance cycle end-to-end.
when you said, between cross platform, u would choose react native instead of flutter.. but u explained correctly how each framework works.. makes me wonder.. are you high?? listen to your own explanation. flutter s performance is so much better, there are benchmarks available too. but react native looks more like native so u would choose react?? wow bro wow....
haha, I see your point, but to me, access to the system components still outweighs the architectural downsides. And at least in terms of perceived performance, I did not have issues with React Native when I was using it a couple of years ago, I'd expect they did not make it dramatically worth
@@mykolaharmash I think the key point you needed to emphasize in your video is what you're building. If I remember correctly, you mentioned that having access to system components was crucial for your project, but I think that point may have been overlooked by many. Highlighting this would have really clarified and justified your perspective.
speaking of performance, is the performance that relevant? is it really a deal breaker, cause when you think of it, there are major aps out there that use RN and are OK which really makes me wonder if the difference is NIGHT and DAY
" If I remember correctly, you mentioned that having access to system components was crucial for your project, but I think that point may have been overlooked by many. Highlighting this would have really clarified and justified your perspective."
That's a great suggestion, thank you!
react native is not the only one who uses native UI components, Nativescript does anything react native does but better. I don't trust react native AT ALL. One system update and its gone, compilation crashes and it's a nightmare. Also... it can't handle a simple shadow effect
Oh, I have not looked at Nativescript in a while, kind of forgot it existed tbh 🙈 Yeah, the fragility of some of those solutions scares me as well.
Why am I thinking that I have the biggest apple fanboy here doing the video. I mean good for him but apple is only a small chunk of my userbase.
Well, in his case IOS is a bug chunk of his user base, if not 100%. So you need to understand where he is coming from and put yourself in his shoes.
haha, you're not wrong 😅 Could you share what you're building?
@@mykolaharmash well not a IOS app It's a language learning plattform that I'm building using Laravel and for now only html scss js without a framework on the front-end. But I'm thinking about to rewrite the frontend to react in the future. I have worked 4 months with Flutter in 2021 and I loved the experience. And I'm also slightly biast against apple (the only products I respect iTunes from back in the day the first iPad and the new Laptops with an M-Processor)
Your videos are very inspiring. Keep up the good work! You said you already have 15 years of professional experience as a web developer, but you still decided to learn a new tech stack and go into native iOS development.
Why is that?
I am a backend developer and would like to create my own product in the future.
But I am currently facing the decision to learn web stack or mobile stack. I wonder why you didn't start a micro SaaS as an indie project with your strong experience in the web?
Some indie hackers I follow are very successful with (micro) SaaS.
Would you say mobile apps are better suited for indies than (micro) SaaS?
Thank you! Web started to feel a bit limiting for the things that I wanted to build. I wanted to have access to haptics, camera, direct interactions with touch, all that stuff. Plus, I’ve been a bit of an apple fanboy for quite some time and I vibe with their developer community more than web dev community.
I’ve got some ideas for web projects as well and will try to build something there as well. But specifically about the micro SaaS movement, I’m not sure tbh, I feel like a lot of it a survivorship bias and a blatant BS in some cases :)
Whats your opinion on the discord mobile app?
Its made with react native and does feel like a native app
Nice, I did not know it’s react native. But that’s the thing, it probably uses a bunch of Swift/Kotlin components under the hood, that’s why it feels native and that’s why I said that react native would be my choice if I had to build cross-platform app.
Xcode has many flaws, and I would not call it better than VS Code. VS Code has excellent plugin support, which is an area where Xcode does not excel. Xcode also has numerous issues, such as code completion sometimes not working at all. If I don't delete derived data periodically, it will display errors that can be days old.
SwiftUI is great, although not as powerful as UIKit, it handles most tasks very well. The main problem is with Swift. Don't get me wrong, Swift is a great language, and I wouldn’t want to use anything else, but the compiler is a mess, especially in ViewBuilder. Apple forced the language into the shape they wanted for SwiftUI, and they did a poor job with optimization. Even a small issue can break the compiler, and after a few minutes, it will simply tell you that it has no idea what is happening. For example, the Image view has a modifier called "resizable," which is not available on any other view. However, if you accidentally swap this with any other modifier and try to place it second, it will break the compiler in slightly larger views.
Oh sure, totally agree about Swift/SwiftUI having questionable design choices here and there and they definitely accumulated over the years, I’m sure we’re bot that far away from a major breaking SwiftUI release where a few core principles will be re-thought, like the ViewBuilder that you’ve mentioned.
Xcode for me feels like a proper IDE, where the UI works together with the code and external services. Things like Organizer, StoreKIt transactions editor, String Catalogs, integrated metrics for performance tests, Xcode Cloud, Previews of course, etc. gives a feeling of a true integrated environment and that’s what I ment by it being a better IDE. A lot of issues, for sure, but I grown to appreciate the walled garden that is not that diverse in terms of plugins, but a bit more cohesive. My experience with VSCode plugins outside of the big ones, was subpar unfortunately: bugs, lack of long-term support, etc. usual stuff for a community-driven ecosystem:)
@@mykolaharmash resizable is not a view modifier but rather a function of Image struct.
did you checked skip tools
Person on Threads pointed out them to me. Have not tried it myself so no opinion, but the idea of writing SwiftUI for both platforms definitely looks interesting.
You title should be "My honest opinion about building iOS app using SwiftUI and not with Flutter/React Native"
Not that catchy though, isn't it 😅 But seriously, my choice of SwiftUI was a consideration, if there was something better for my purposes, I'd go with it 100%.
You have compared SwiftUI & Swift with Hybrid Platforms, but i think there will be space for Kotlin & Kotlin Compose UI. What About Kotlin Multiplatform ?
also Xcode is good choice with Swift as you sounded like.
Visual Studio is The Best IDE for C#
A few people mentioned Kotlin Multiplatform and I have to admit I never heard of it before, will take a look out of curiosity. Mainly want to understand the broad architecture of how they go about cross-platformness.
I use iPhone and Mac forever. I still don't know what that "native feel" is supposed to be on mobile. I guess 5% of iOS users care?
Ah, just read comments on Xcode. Dude, "are you high?"..
For the native feel, I think it shifted a bit overtime. At first, it was purely about the UI (visual style, animations, whimsical gimmicks, etc.), you’re right that now people don’t care about that ad much (though some, including myself, still do:).
Currently I think it’s more important to be native in terms of integrations into the ecosystem. For iOS app it would be widgets (home screen, lock screen, control center), siri commands, shortcuts, live activities, dynamic island, iCloud sync, all that stuff. And beyond that are apps on more apple platforms with their own “native” patterns.
@@mykolaharmash Thanks for your exhaustive answer, makes sense!
I think you can do all/most of this indirectly (flutter plugins, native channel). But it's painful, and a lot of additional effort (e.g. widgets).
So if you need those, it could actually make sense to go native. Xcode and waiting for compiles is really appalling :)
this video is pointless, you are comparing multiplatform tools that make some sacrifices or concessions so you only have to write the code one time or have minimal work to configure your app to run on the other platform, native option always be the best, so swift for IOS and Kotlin for Android, the thing is you could make a multiplatform app only with Kotlin and technically be native.
YOUR needs and objective was to create an app on IOS, so using the native tools is the obvious answer, comparing he different multi platform options when you are not going to use them is like those people that make videos of this language (for example python) vs C++ and make the conclusion that one is better because is 100x faster to fo a simple calculation, or someone that compares all the JS frameworks to do a static webpage when HTML, CSS and JS is easier.
Also the Bias is obvious, Xcode a better IDE???, like what???
I see your point, though I also see many people choosing React Native or Flutter even when they do not intend to use their cross-platform capabilities, only because the tech or tooling is familiar, or people decide to build cross-platform apps persuaded by a larger potential audience, and often even not considering focusing on a single platform, while for a lot of small/medium apps is a completely viable option. Though I understand I did not get this point across that well.
I knew Xcode thing would trigger a few people 😅 I hated it at first as well, and it has a lot of issues but I stand by what I've said in the video. It's not the best in terms of editing code, navigating files, etc. but the tools it provides like Organizer, StoreKit debugger, String Catalogs, Xcode Cloud, Previews, integrated test runner including performance test metrics, Playgrounds, view hierarchy debugger, ... there is nothing out there that gives that level of integration with the ecosystem.
Anyway, I appreciate your thoughtful comment!
@mykolaharmash Familiarity can be a huge factor. There might be time constraints that make learning a new language or framework impractical. Imagine spending three years building with React and then suddenly needing to switch to Swift. The experience and expertise you've built up over the years with one tool can't easily be replicated with something new. You’re likely to make a lot of rookie mistakes when working with a framework you’ve just learned.
Good point, agree! There are definitely more factors in play when choosing the tech stack, time constraints are indeed a huge one, and choosing a familiar tech can be a massive shortcut. You just have to be mindful that the shortcut will come at some cost one way or another.
how about hot reload?
Previews in Xcode give you a pretty similar experience to hot reload. You still sometimes need to compile the whole app and run it in a simulator but it is mostly when you use some more advanced OS features or external services. Swift compiler has a dynamic method injection feature, so Previews in Xcode reload almost instantly, at least if you keep your component size reasonable.
JetBrains IDEs => Kia trying to be TOYOTA (keep trying b)
haha, JetBrains Fleet looks promising though as a viable VSCode alternative
@@mykolaharmash but it's not free and it's adopting adobe creative cloud app approach
@sweetmax337 good point. And it’s still in preview, it’s been like 3 years if not more, they are really taking their time with this one
Liked your app dude
Thanks! There will be another update about the app soon:)
Everything was right until making Xcode better than Vscode, that literally killed everything
That’s a common trend in the comment 😅 That statement requires more context. I use VSCode daily at my day-job, and as an IDE, it’s not even close to Xcode. Yeah, the text editing is snappier in VSCode, navigating the codebase is also a bit more comfortable. But other than that I think VSCode became a feature-creep with no cohesive vision about end-to-end developer experience. Xcode is more opinionated, you cannot customize every little thing, which over time I started to appreciate because then the overall experience is less fragmented.
can you make video tutorial about payment gate way how you link to your application it would be great help for us.
I’ll try to show the code for in-app purchase setup somewhere, but in a nutshell, I’m just using client-only StoreKit. You can also search one of the recent WWDC videos about StoreKit 2, they have a pretty good walkthrough on how to set it up.
@@mykolaharmash thank you.
interesting point of view
Video is a bit pointless.
I think you wanted to build an iphone app, otherwise React Native would've been the choice. Apple does have a nicer platform, at least they care about design and don't guide your app to come out looking like garbage (Material design🤮); it's no secret why nobody is building material looking apps, even on Android. Swift being friendlier by not dealing with all the extra abstractions is a great too. However, if you cared about Android, you wouldn't prefer porting an iOS app to it and effectively building two separate apps.
Yep agree, I mentioned this in the video as well, if I had to build cross-platform I’d choose react native. +1 on material design being ugly :)
and KMP? your share the business logic and make the UI Layey with platform frameworks: SwiftUI(iOS) and Jetpack Compose (Android)
Yeah, a few people pointed it out. I have not tried it myself yet, but on a surface looks interesting ✨
You are the only dev who prefers flutter over react native(with virtual DOM overhead)for performance reasons.
Pretty sure I did not say that :) I'd prefer react native because it has more straightforward access to native frameworks and UI components. But it's still the best of all evils kind of thing.
Xcode is a better IDE he says 🤣🤣🤣🤣🤦♂🤦♂
i just see a person who worship apple that's it
Some parts of the company are better than others for sure, but Swift and SwiftUI teams are doing an incredible job.
I've been working with react native for 4 years now and it"s (imo) still the best option to write cross platform apps. i don't agree with the fact that you rely on community based libraries, because the most crucial libraries (like navigation) come from companies which are exclusively working on those libraries (like software mansion). all other native functionality you can write yourself. i have written multiple native modules in my app (e.g. QR Code scanner, Image to Text with ML Kit) and it works like a charm and it is incredibly powerful. if you install for every little funcionality a library its probably not the technology's fault, rather you not being able to use the technology right.
I think he only really knows a single technology and talks based on that
What gives you the impression? I work with web stack and native ios stuff on a daily basis and had a few react native projects in the past. Though I agree my Flutter knowledge is mostly theoretical, I built only dummy test projects with it.
6:00 "There is technically no way to reuse any of the system UIs, meaning it will be really hard to make sure app feels native". I'm not judging the rest of the video, because it's obvious that the stack you are talking about is wider than the knowledge on this topic presented by you.
Flutter can reuse, run and interact with Native components by Method Channel, so you can move out the logic of the native app to flutter to use it on x different platform than iOS. You lost me when you said xCode is better, swift is better... stating your SUBJECTIVE opinion without any metrics and delivering it as a fact. To the broad audience the key factor is if the app is running well and if it's available for their platform.
In my 5 y of mobile developer career I was only once ask to use specific Android/iOS layouts, the "native" feeling is no longer something that users care about. To sum up why even bother exploring other tools if you are only considering release on iOS, this will 100% of times scream use native solution, if you want to hang a picture on the wall you use hammer not screwdriver.
@mermonkey8295 Hey 👋 thank you for a thoughtful comment! You clearly have more experience with Flutter, but I don’t think anything is wrong with my statements as I was specifically talking about system UI components (big ones would be scroll views, sheets, media players, etc.), and not only the purely visual part but the interactions as well. There is no way to use those in a Flutter app, and for non-visual stuff I talked about bridging native APIs, and while possible, I described my issues with that approach.
Let me disagree with you on the statement that feeling native is not important anymore. Though what that means exactly can vary, so for me feeling native is not only about how the app looks and feels (though I think it’s important as well), it’s also about being a good citizen on the platform and within a bigger ecosystem. For iOS apps this usually means that app has various types of widgets, shortcuts, siri commands, dynamic island and live activity stuff, apps on other apple OSs, etc. everything that goes outside of the main app rectangle. And just anecdotally, I also get a lot of feature requests to implement those integrations in my app, so I see that it is important to day-to-day user experience.
Yeah, and those hot takes at the end, I tried to emphasize that those are subjective point (purely based on my experience and preferences), so I don’t think I misled anyone to thinking those are facts, at least that’s my idea of subjectivity.
Let me know if you have more thoughts, happy to discuss 🙌
@@mykolaharmash and that's the statement I can get behind, ofc in the big picture I'll agree with this video (besides obvious XCode bcs its trash :')). For the scroll etc. even my CTO who has like 10 years of exp in Swift when he picked up Flutter said I can't see the difference between those two approaches. Swift will always outrun Flutter in access to the new API's and functionalities. About my statement that users wont care about ui being separated by native components, most of the apps usually have the design tailored by the designer to include similar experience across all platform, which means only small portion of platform related stuff differs (android back button, swipe on iOS, prompts to permission etc.) If those are in check designers won't bother to follow cupertino or material in Ui's when it's in good UX and users like it
@mermonkey8295 @mermonkey8295 right, and that was one of my point as well, instead of using something like cupertino widgets, better to go with a custom design to avoid the uncanny valley effect. I did not articulate this point well in the video, but I was talking about cases like my app where I explicitly want the app to use as much of system iOS UI as I can, and for me Flutter would bot work unfortunately.
Btw, as a Flutter dev, what’s the usual approach for implementing iOS widgets for example or apple watch complications, stuff like this? Do you just decide explicitly to avoid those or Flutter devs still know a bit of Swift/Kotlin in order to implement those kind of technology-dependent features?
@@mykolaharmash logic side most of the API's are already exposed via packages, UI side it's trully only the designer job. If something is not looking crisp I'll tell him what should we do to make it better but making one ui per platform is no longer needed by the clients
please can you make video about how to master swift and its documentation
I’m quite far from mastering swift myself tbh:) and the documentation mostly sucks, but you’ll find your intuition about finding the right information, it will just come with a bit of experience.
A miss
Ты откуда братуха?
Now react native talk dirctly with native lyer
it turns out, this video is just apple fanboy bragging
I can agree with the fanboy part 😅 but what am I bragging about?
I don't see him bragging. 😅
vscode is not even an ide
It’s a fine line though. WebStorm, which is considered a “real” IDE is not that much different from VSCode out of the box.
As always, such videos are made based on one's experience and take, have lots of bias
100%, everything here is subjective and based on my own experience. And tbh, that’s what I want to hear as well from other devs, I’m not really interested in objective spec comparison, I can read the docs for that :)
@@mykolaharmashI have used both ReactNative and Flutter, I stuck to the later since it is more easier to develop CrossPlatform apps with and it does achieve native performance(ReactNative has some lag)... I'd like to wonder why you would prefer ReactNative to Flutter but then there are personal preferences
Got it 👍 My preference for react native is mostly because for my apps I want to use system UI components. Though I understand this does not fit every app. And performance is a good point, I could imagine how not having so much middle layers would help Flutter be a bit snappier:)
haha seriously?
Sure ;)
Xcode sucks and so does vscode.
What do you prefer?
Xcode sucks
Ok I’m starting to notice a trend in the comments ;)