iPad as a Development Machine

A couple weeks ago, I surrendered my MacBook to the Apple Store for a screen repair. Due to part shortages, the timeline for me being able to use my MacBook again was at least a week. When I thought about what I could use to get some work done, I realized I already have a computer with me that’s (theoretically) just as powerful, my iPad! It has the same CPU as my laptop, it’s more portable, and has extra features like cellular. So, I got a keyboard for my iPad and set off to see if I could exclusively use my iPad for the next week.

Normally, I use my iPad almost exclusively for notes and entertainment. I spend a couple hours a day taking notes using my Apple Pencil and GoodNotes, and when I want to watch TV or browse the internet, my iPad is the perfect device for that. In those cases iPadOS works fine, but when you start getting into more complicated use cases, iPadOS starts to become a limiting factor. Apps work great on phones and tablets, but it doesn’t cut the bill when you need to develop in a bunch of languages or build web apps. Is it possible to get past the limitations of iPadOS and use it like a normal computer?

Development on iPads has come a long way

Development on iPads has always been possible, but through a limited amount of workflows. You can use an app to SSH into a Linux environment and use the iPad like a dummy SSH terminal without a GUI. Or you can find a set of apps, like a code editor, git manager, terminal, etc. and stitch together a workflow native to iPadOS. However, these are all workarounds that could work but disrupt my usual workflow.

The recently added saving grace to iPad development is not made by Apple, but by Microsoft, the owner of GitHub. They recently released GitHub Codespaces, a tool that runs an instance of Visual Studio Code in your browser, and gives you a full containerized Linux environment to work with. This is perfect, because I can use the setup I’m used to on my MacBook on any device with a browser.

So, how well did Codespaces work? Actually, pretty well! GitHub Codespaces actually made some serious development on the iPad possible. I used the same workflow as my MacBook on my iPad, and all of the tools(file management, terminal, opening ports) I had were all in one place. I was no longer constrained to Apple’s app ecosystem and model, and instead had a full dev environment in my browser.

Github Codespaces brings development on iPad 90% there.

It’s the little things

Now, if iPads can now do everything MacBooks can do with the power of remote development and the cloud, why don’t we just throw away our laptops? Like I was saying, development on iPad is 90% there, but the 10% that doesn’t work adds up.

What kinds of things don’t work? It’s nothing major, but tons of small issues add up and at end of the day make you feel like you’re fighting your device rather than using it.

  • Trying to fill out a form online? Safari has this weird lag where your cursor won’t actually move for 2-3 seconds after clicking a new text field.
  • Want to write a Google Doc in Safari just like on a Mac? Some of the buttons don’t work when you click them, and some links require triple or four-finger clicks.
  • iPads are clever, and system-wide autocorrect applies to the physical keyboard too even if you don’t want it. Luckily, there is an option to disable this in Settings.
  • When using GitHub Codespaces in the browser, the iPad’s predictive text bar covers the Terminal making it hard to see. This can also be turned off in Settings, but only system-wide and not just for one website. This is an example of the iPad not being customizable enough.
  • Safari on iPadOS doesn’t give you access to developer tools, so good luck trying to do serious web development or debugging.

Nothing is a total dealbreaker, but at the end of the day it results in a more frustrating experience compared to a normal computer.