In 2018, we wrote a post about using AppKit from the command line. We can use exactly the same technique to run a SwiftUI app directly from a Swift file.
When you’re writing a quick tool, perhaps to visualize something, or to get user feedback, an Xcode project can feel like overkill. It’s often very useful to have a single file that you just run with
swift myfile.swift from Terminal. Likewise, when you’re inside a Swift Package Manager project, you might not want to create an additional Xcode project when you’re just testing things out.
What if you could just do the following?
.frame(maxWidth: .infinity, maxHeight: .infinity)
Fortunately, you can, by pasting in the boilerplate code from this gist. Simply run
swift boilerplate.swift in Terminal and you’ll have a macOS app up and running.
If you’re building a complex app, you’ll almost certainly want to move to a “real” application, but for one-off tools and prototyping we’ve found this shortcut very useful.
In Swift Talk Episode #145, which is free to watch, we use the same technique to create an AppKit app using Swift Package Manager.