Please, no. Your application belongs on the web. I can already tell when applications are written with middleware, cross-platform tools, electron, etc. because they always run like trash. They offer no benefit over a website and only open up your machine to new attack vectors. I know I'll catch flack for this, but we shouldn't lower the bar to entry here. Native app development is not significantly more difficult than web and it's drastically better for the end user.
I don’t mean to sound overly negative but for small shops or individual developers there is simply no way for them to create a web, Mac and Windows version of their app at the same time. Personally, I’m glad that the likes of Electron give them the option. I’d much prefer a fully native version but I’d take Electron over nothing. You’re free to disagree of course, but no one is forcing you to install these things on your computer.
While I don't entirely disagree with your sentiment, this is pretty distinctly not middleware/crossplatform/electron.
The closer analogy here is the iOS ecosystem, where folks ship apps that are really just Safari WebViews inside an app icon, and who would probably be perfectly happy to ship a PWA if users weren't thoroughly trained to use the AppStore.
Historically, developing an app with tools that are native to the platform provided asymptotically better user experience. So, if your goal is to perfect the UX, native is your choice.
In reality, rarely do you need to work on the UX first. It is usually more wise to sketch the idea using cross platform tools, validate the idea, then rewrite parts of it / develop new features with native technologies.
If all you're doing is creating an MVP do whatever is easiest. But yes ideally you would have two separate codebases and obviously it's dependent on your project how much tools can be shared between the projects.
Thanks, these are nice clean ups! I added a note in the blog post that points to your Swizzler example. The final version of Multi didn't end up needing that NSBundle monkey-patch though since it was a "proper app" with an Info.plist file.
This is pretty neat :) I read the blog post about it too, and I definitely feel your multiple chat app pains. I'm curious to hear more about why you avoided Xcode and ViewControllers. In general I know many people dislike Xcode, but I've been doing iOS dev for a while now so I guess I'm used to it (it's a love have situation for me at times)
Thanks! Honestly my reasoning for avoiding XCode is fairly thin—I just hadn't used it before and didn't have it installed when I started. I imagine if I took the time to learn it, it would be fine. But I do also feel a bit weird about how developing for certain platforms requires you to use a specific IDE. I thought that was part of the goal of Swift (vs ObjC), but I may be just reflecting my own biases :)
Yep the macOS + Xcode dependency is quite annoying. If you want a, kind of, in between solution, the true dependency is on the command-line tools. These can be installed independent of Xcode. You could piece together your own build scripts or use something like Buck to build it. If you still want a full-blown IDE, checkout AppCode from JetBrains. It still depends on the aforementioned commandline-tools though.