Really pleased to show you all something I've been working on since WWDC this summer: the official SwiftUI client for the WriteFreely writing platform!
Just like most everything else the WriteFreely team builds, this has been an open source project from day one. It started with a Swift package wrapping the WriteFreely API; and once that was in a functional state, the client app work was kicked off.
The iOS app has been in beta for a couple of weeks now, and yesterday, we launched the app on the App Store. The Mac app has mostly been getting developed in lockstep with the iOS app, but has recently lagged due to some buggy behaviour in macOS 11 Big Sur. Nonetheless, it's still quite amazing to build out a non-trivial app for iPhone, iPad, and Mac (well, okay, most of a Mac app) in about three months. For a small development team —or if you're in the consulting space— that kind of productivity win is hard to ignore.
That said, it hasn't been all roses. Some outright weird bugs and peculiarities with SwiftUI have bitten this project — beyond, y'know, working with a beta framework in a beta IDE on beta operating systems. Things like preferredColorScheme worked mostly okay on iOS, but not on macOS; on the flip side, subscribing to a didFinishLaunchingNotification publisher works fine on macOS, but forget it on iOS. TextField elements have placeholder text, but multi-line TextEditor elements don't.
The tech stack is, at the end of the day, pretty straightforward:
- "Multiplatform" SwiftUI, dropping into UIKit/AppKit where necessary
- Swift Package Manager for dependencies (really, just the WriteFreely API Swift package)
- Core Data for local data persistence
In case you're interested in my experience working on a multiplatform SwiftUI app, I've been writing about it as I go here: https://write.as/angelo
And if you're interested in contributing, check out the link to the GitHub repo!
- Hacking With Swift (https://www.hackingwithswift.com/)
- Swift by Sundell (https://www.swiftbysundell.com/)
- Swift with Majid (https://swiftwithmajid.com/)
- The SwiftUI Lab (https://swiftui-lab.com/)
- The Lost Moa blog (https://lostmoa.com/blog)
The community has been great, too — there are countless other little blog posts, tweets, and conversations that have helped me get this off the ground. :)