Hackernoon logoNo Mac, No Problem: How to Write Native iOS Apps, Sans Apple by@maxired

No Mac, No Problem: How to Write Native iOS Apps, Sans Apple

Author profile picture


Software developer building awesome products

Hi, I am Max, Javascript Developer and this post is about how I write IOS apps without owning any Apple hardware, nor running a Hackintosh. BTW, I am not affiliated with any of the tools presented here.

Do you even need a native App?

Before going further, it might be worth asking yourself whether you even need an app. Progressive Web Apps, PWA, have done a long way and are now ready for prime time. The current iOS 13 did introduce better support for PWA, and for a low-cost budget, it is one option to consider. But be aware that for now, iOS PWA can’t handle push notification or background activities. They are an option but there are lots of cases where you would need a native app.
In case you are developing a PWA, or even just a responsive website and don’t have a mac, there is plenty of options online to test your application on an iOS simulator, or even on a real phone. Such options include https://www.browserstack.com/ or https://app.lambdatest.com/. Of course, you can just test the responsive layout of your website by reducing your browser and using included mobile development tools, but by the end, you will need to test on a real device.

Use a remote macOS

If you are developing an Objective-C/Swift based iOS app chances you are owning a mac. if you don’t, there is still a solution for you: use a remote macOS. You will find online several companies providing Mac computer accessible remotely, via RDP, VNC, or even directly in your browser. I don’t have huge experience with that solution, but I did use macinacloud and have been happy about it. If you plan to use it as your main development platform, I would suggest you go for 16GB of RAM, especially if you plan to use the simulator.
If you don’t have a mac but does have an iOS device that you want to use to debug your app, you will get two options:
Use TestFlight so you can build in on your mac and share it with your device. This is the easiest to setup upUse a remote USB connection. The idea here is to use a software that will forward your USB connection from your local computer to your remote mac. I am not sure about other providers, but when using macinacloud, you will need to use an external tool, as described in their documentation.

Use Expo App

So you want to develop a Mobile Application with offline support, notification or maybe just want to be visible on the Apple Store? There is another solution in which you won’t have to have a Mac or use Xcode. I named it: Expo.
I am Javascript Developer for 10 years and started to code in React in 2015, so I am definitely biased, but this is the setup up I am currently using, and I love it.
Expo is a suite of tools based on React-Native and aiming to help you create React-native apps without the hassle. The tools are improving very fast, so if you tried them a few months ago and hit some bugs or issues, you should give them another chance.
Since Expo 33, released June 2019, you can now render your React-Native application on iOS and Android devices, but also as a web page. This is a good option when developing.
Moreover, Expo comes with the Expo Client. Though the expo client, you can distribute your React-Native code to your iOS device. You will have a joyful development experience, with live-reload and remote debugging.
Don’t own an iOS device? Expo has also a service side part, that can build your application bundle ;-) Still, you will probably want to test it before delivering it to your users and submitting it to the AppStore. I am currently using Appetize, which allows you to run the build provided by Expo on an iOS simulator.
Need to run on a real device? BrowserStack also provides this option.

Ask somebody else ;-)

Thanks for reading so far. I tried to keep it short but at the same time to be very concrete. If you have more questions or maybe realize that developing yourself your next mobile app might be a not so great idea, be aware that there are lots for people out there that could help you design and develop your apps, beyond what you imagined. As for me, you can find me on Linkedin or Codementor.
PS: Sorry Flutter developers, I don’t know much about solutions that you would use. Don’t be shy and share it in commentary ;-)


The Noonification banner

Subscribe to get your daily round-up of top tech stories!