What can 2023 offer in good cross platform app development tools?
October 8, 2023 7:10 PM Subscribe
I would like to build an app for my own personal use. I would like a single codebase to emit versions of it for Android, iOS and Web. I have plenty of software development experience but none at all in mobile app development. Which of today's well supported development tools is going to annoy me the least?
I'm only interested in using and making free software so proprietary tools, or proprietary environments required to host the tools, are off the table. Generally happier using vim, bash and ssh than any kind of IDE but will grin and bear them if they're genuinely and compellingly worth it. Happy to learn new languages.
The app I'd initially like to build will be very simple: an always-visible text entry box and button that lets me enter a number and have it timestamped and added to an ever-growing log in a simple text format like CSV. The log file needs to be kept locally on the phone, preferably in a way that makes it available to sharing services like Dropbox. The app would use the current wall clock time plus the contents of the currently active log to compute an always-visible status condition that updates every minute or so.
I'd also need a settings page that lets me choose a log file to be the currently active one, give log files names, and easily export and import them from elsewhere. Later on I'd also want a very basic log file editor that lets me scroll backwards and forwards to fix data entry mistakes, but initially I don't mind relying on the export and import facilities to do that.
Because this app is doing essentially nothing I want it to be small, and to launch quickly and work responsively even on the cheapest, slowest, nastiest phones available; as a point of reference, the launch speed achieved by Cx File Explorer on Android is completely acceptable. If the app development toolchain emits a Hello World app that looks as pretty as Cx File Explorer by default, that's a bonus but butt-ugly is OK as long as styling is reasonably straightforward.
If you spend your billable hours working on phone apps, what's the dev platform you wished your shop would let you use?
DuckDuckGo says I should look at Kotlin. Any good?
I'm only interested in using and making free software so proprietary tools, or proprietary environments required to host the tools, are off the table. Generally happier using vim, bash and ssh than any kind of IDE but will grin and bear them if they're genuinely and compellingly worth it. Happy to learn new languages.
The app I'd initially like to build will be very simple: an always-visible text entry box and button that lets me enter a number and have it timestamped and added to an ever-growing log in a simple text format like CSV. The log file needs to be kept locally on the phone, preferably in a way that makes it available to sharing services like Dropbox. The app would use the current wall clock time plus the contents of the currently active log to compute an always-visible status condition that updates every minute or so.
I'd also need a settings page that lets me choose a log file to be the currently active one, give log files names, and easily export and import them from elsewhere. Later on I'd also want a very basic log file editor that lets me scroll backwards and forwards to fix data entry mistakes, but initially I don't mind relying on the export and import facilities to do that.
Because this app is doing essentially nothing I want it to be small, and to launch quickly and work responsively even on the cheapest, slowest, nastiest phones available; as a point of reference, the launch speed achieved by Cx File Explorer on Android is completely acceptable. If the app development toolchain emits a Hello World app that looks as pretty as Cx File Explorer by default, that's a bonus but butt-ugly is OK as long as styling is reasonably straightforward.
If you spend your billable hours working on phone apps, what's the dev platform you wished your shop would let you use?
DuckDuckGo says I should look at Kotlin. Any good?
I have a feeling Google-branded makes this a non-starter for you, but Flutter fits the bill, including being open source. The language you'd be writing is Dart.
posted by michaelh at 7:29 PM on October 8, 2023
posted by michaelh at 7:29 PM on October 8, 2023
Response by poster: Doesn't electron make apps that are essentially a condom over an entire web browser and a whole node stack? That sounds like way overkill for what I need.
posted by flabdablet at 7:38 PM on October 8, 2023
posted by flabdablet at 7:38 PM on October 8, 2023
Response by poster: I would find flutter development experience recounts, or dev recounts in general, very useful. I have no objection to using Google's tooling as long as the objects it emits can be relied upon not to phone home to the mother ship unless specifically told to.
I think that's enough clarification, so I'll stop threadsitting at this point.
posted by flabdablet at 7:50 PM on October 8, 2023
I think that's enough clarification, so I'll stop threadsitting at this point.
posted by flabdablet at 7:50 PM on October 8, 2023
Personally, I'd look into Qt first and pick something else if it turned out not to do what I wanted it to do. There are bindings for nearly every popular language and it's pretty damn simple to use.
posted by wierdo at 12:14 AM on October 9, 2023 [1 favorite]
posted by wierdo at 12:14 AM on October 9, 2023 [1 favorite]
I just came across this question last week and the answer is (basically) Flutter, Kotlin Multiplatform, and React Native. That's from a year ago, but there could be newer questions in the sidebar.
posted by rhizome at 12:47 AM on October 9, 2023
posted by rhizome at 12:47 AM on October 9, 2023
My understanding is that Kotlin Multiplatform isn't quite "there" yet (though I've forgotten if it's web or iOS that is the furthest from ready for the real world), but your use case is likely simply enough that it's viable.
posted by hoyland at 4:16 AM on October 9, 2023
posted by hoyland at 4:16 AM on October 9, 2023
I've worked with Flutter before, and while I'd prefer it to other options, the part where you say you want to use it in iOS makes me lean heavily to seeing if I could do this as a web app (in a website). For Android you can plonk an APK into your phone but Apple is not that flexible. As far as I know there's no easy way to get your personal homemade app onto your iPhone. If it were me I'd want to do this through a browser. Also trying to build the iOS app is a hassle because XCode is terrible.
Flutter was not too hard to learn coming from a JavaScript/Vue/React kind of background. I did have to struggle through a lot of annoying layout errors for something that would have been no problem for flexbox.
I remember getting this error all the time.
https://docs.flutter.dev/testing/common-errors#vertical-viewport-was-given-unbounded-height
It was reasonably painless building an Android app and a web app with Flutter.
Getting everything set up at first is a pain but at least the flutter doctor command was relatively clear about what was wrong. I guess you need an Apple machine for the iOS app part. Click through to see what the setup is.
https://docs.flutter.dev/get-started/install
Anyway, maybe it's the web dev in me, but it seems like apps are too much of a hassle for something that could be put into a webpage. The stuff you're talking about should be doable through the browser. I think. If I wanted to make something very simple without a bunch of build tools I'd stuff a couple of CDNs into an html page: Tailwind CSS for styling, Alpine.js for reactive stuff if necessary, other libraries as needed if working with the filesystem or editing is too clunky.
(I'm insecure about answering these kinds of questions, apologies in advance if not a very good answer)
posted by karasu at 6:24 AM on October 9, 2023 [4 favorites]
Flutter was not too hard to learn coming from a JavaScript/Vue/React kind of background. I did have to struggle through a lot of annoying layout errors for something that would have been no problem for flexbox.
I remember getting this error all the time.
https://docs.flutter.dev/testing/common-errors#vertical-viewport-was-given-unbounded-height
It was reasonably painless building an Android app and a web app with Flutter.
Getting everything set up at first is a pain but at least the flutter doctor command was relatively clear about what was wrong. I guess you need an Apple machine for the iOS app part. Click through to see what the setup is.
https://docs.flutter.dev/get-started/install
Anyway, maybe it's the web dev in me, but it seems like apps are too much of a hassle for something that could be put into a webpage. The stuff you're talking about should be doable through the browser. I think. If I wanted to make something very simple without a bunch of build tools I'd stuff a couple of CDNs into an html page: Tailwind CSS for styling, Alpine.js for reactive stuff if necessary, other libraries as needed if working with the filesystem or editing is too clunky.
(I'm insecure about answering these kinds of questions, apologies in advance if not a very good answer)
posted by karasu at 6:24 AM on October 9, 2023 [4 favorites]
QT-quick, but there's bindings to almost any language you'd prefer for full QT.
posted by k3ninho at 10:05 AM on October 9, 2023
posted by k3ninho at 10:05 AM on October 9, 2023
I don't have experience with it, but have been looking at Kivy, the Python library, for app development.
posted by taltalim at 8:53 AM on October 10, 2023
posted by taltalim at 8:53 AM on October 10, 2023
I came for Dart. I only played with it a little bit but back in the day Randal Schwartz of long time Perl 5 fame liked it the same way many Perl programmers liked Ruby. Dart looked like a nice language. IIRC (and I may be totally wrong) Dart can go native code generation or it can go JavaScript browser thing. It looked pretty decent as a language as a whole. I haven't kept up with it though, just went through the docs and "Hello World" type example stuff.
You might also look into Haxe - The Cross-platform Toolkit which I've seen mentioned a few times on HN. I don't really know anything about it though.
posted by zengargoyle at 7:08 PM on October 10, 2023
You might also look into Haxe - The Cross-platform Toolkit which I've seen mentioned a few times on HN. I don't really know anything about it though.
posted by zengargoyle at 7:08 PM on October 10, 2023
And oh... BTW... if you do find something let me know. :)
posted by zengargoyle at 7:09 PM on October 10, 2023
posted by zengargoyle at 7:09 PM on October 10, 2023
And ah man is there a Tcl/Tk for platforms. Old School is best School.
posted by zengargoyle at 7:12 PM on October 10, 2023
posted by zengargoyle at 7:12 PM on October 10, 2023
Thanks for the nightmares, zengargoyle.
posted by wierdo at 8:03 PM on October 10, 2023 [3 favorites]
posted by wierdo at 8:03 PM on October 10, 2023 [3 favorites]
This thread is closed to new comments.
Any other suggestions?
posted by kschang at 7:27 PM on October 8, 2023