January 11, 2019

Best platform for developing iOS apps?

Hello all!

This is my first post, I've been a semi lurker for awhile now. My sister and I are thinking about creating an app for an idea we've had for awhile now. I have a decent background in development, but have never really worked much with iOS apps. Do you recomend a certain software or framework? Thanks!

  1. 2

    If you want to build specifically for iOS, go with what Apple offers: Xcode and Swift. You'll get powerful and well working tools with excellent documentation and you don't need to worry too much about project stability or upgrades.

    If you are certain you want to support Android in the future as well and you know your application will become large enough that maintaining two separate projects is not an option, go with React Native. Just mind you that it will need lots of additional knowledge for building and maintaining a project. If your existing knowledge is around the JavaScript/Node ecosystem, you mind find yourself at home quickly with React Native, though.

    Disclaimer: How do I know? I've had my first iOS app in the store more than ten years ago, built with Objective C and C++. I am working with React Native and little to no native extensions today.

    1. 1

      How do you think React Native compares to Swift and Objective C? I'm thinking of building some test projects on iOS, is it worth taking up Swift or try the React route?

      1. 2

        I find it hard to compare; two very different worlds. Let me give you some examples.

        One difference is, Swift/ObjC are Apple exclusive, there's hardly any use outside that space, except another language learned and another skill on the CV. But when you're using it, you're sailing in relatively calm waters. Apple is opinionated about things, but in return, it's all well documented and it just works. If your goal is solely to build an iOS app, this is probably the easier route.

        When building with plain React Native, you still need to know a bit about the Xcode stuff. At some point, you'll need to fire it up to change the icon, the initial color of the status bar, the splash screen, or to setup distribution profiles, etc. etc.

        Another difference is, Xcode comes with an interface editor that's quite powerful and has really matured over the years. Plain RN, in comparison, comes with literally nothing. More sophisticated UI controls need to be built and styled manually, with code. Styling, btw., can happen through a number of ways, inline, with stylesheets, with styled components,... (Luckily, if you have web development experience, all that will be easy to learn and understand. Flexbox knowledge is particularly helpful.)

        RN in isolation is actually quite limited. For example, once you've designed your first screen and want to move on to the next one, you'll recognise that there's no concept of navigation or routing in RN. When you want to maintain state throughout your app, you'll soon come across Redux and possibly will have to learn another whole new concept and will feel like using a sledgehammer for cracking a nut.

        For me, personally, building with RN is a state of continuous uncertainty. It's working, but am I doing it the right way? Which one of the many npm packages is the right one for the job? Will this still work after upgrade?

        RN is also a fragile environment sometimes. Things work one second, then break the other. Error messages are often buried somewhere in the console output. I found myself clearing the RN package manager cache, the metro bundler cache, the npm cache, installing all modules from scratch and linking the native apps again, out of despair and without much success.

        So to stick to the picture above, building with RN, in comparison, is more like whitewater rafting.

        If you have time to build some test projects, try both and see for yourself! But be sure to include some more complicated stuff.

        1. 1

          Thank you! This is very informative

  2. 2

    If you like javascript you could check out React Native, It's react JS but for apps and is a very widely used framework that's good to learn if you'd later want to find a job as an app developer or if you'd want to go more into web development you can easily pick up react.js afterwards they are very similar.

  3. 1

    I'd say it depends on what you have experience with. If you have experience with one framework, use it.

    Years ago I built a calculator app for iPad ( http://retrocalc.com ) with Corona (a 2D game engine -- not at all a traditional platform for building a utility app).

    Would anyone in their right mind have recommended Corona for that app? No probably not. But I had the idea and wanted something I could use to bang it out quickly. Ultimately, that made Corona the right tool for the job... for me.

    Go with what works for you.

    1. 1

      Really cool, looks like you got some nice ratings. How many downloads have you got so far

      1. 1

        Thanks. I made RetroCalc way back in 2011. I updated it for a little while, and then moved on to other projects. There were some great downloads while I was keeping it fresh, (it even got featured on the front page of the AppStore for a bit) and then the downloads petered off as I let it collect dust.

        I think it's still a nice app, but it needs some love to keep it prominent on the AppStore. (Now it's buried deep in the listings so it does very few sales). I'm too busy to add new skins and keep promoting it.

  4. 1

    That's hard to say without more information. What will be the most complex parts of the app? Are you already familiar with JavaScript? I currently have a React Native app in the app store so I can answer questions related to that framework.

  5. 1

    Learn Xcode and Swift. You get all the functionality and no additional complications or restrictions.

    I learned Swift and released my first app this year.

  6. 1

    You Should Go for zegalogos.com its a complete platform for Developing , graphics designing and other web services