WriteFreely SwiftUI Multiplatform App (Mac, iPhone, iPad)

Following up on the WriteFreely Swift package, I’m happy to announce that work is starting on a WriteFreely client app for Mac, iPhone, and iPad!

We’re building this as a SwiftUI multiplatform app targeting iOS/iPadOS 14 and macOS 11, coming this fall. This is a totally new way to build apps for Apple platforms, and I’m personally pretty excited by the idea of being able to build apps for three different devices out of a common codebase.

The goal is to launch this on the App Stores in time for the release of iOS 14 and macOS 11. That’s a tight deadline, so we’re limiting the initial scope of the app to a subset of actions that are most important to WriteFreely users:

  • logging into your WriteFreely account
  • creating a new draft locally
  • publishing local drafts to the server, either as a draft or to a collection
  • updating your published drafts

If you’re interested in helping build this, the source code is in this GitHub repo — the project is open to developers of all experience levels, just let me know in this forum topic!


This is great news. I am looking forward to it. Its the one thing thats lacking at the moment. Thanks.


I posted a little update on how things are going: https://write.as/angelo/the-promise-vs-reality-of-swiftui-multiplatform

By the way, if you’d like to contribute to the project, please don’t hesitate! I wrote a bit more about how to contribute here.

Another progress update! You can read about how things are going here, and I thought I’d share a few screenshots in this thread.

:point_up_2: The app running on iPhone and iPad. You can choose a collection to view posts in that collection, or choose “Drafts” to see posts that don’t belong a collection, just like on WriteFreely. There’s also an “All Posts” library, to show you, as you might guess, all your posts.

:point_up_2: Here it is, running on the Mac. Same kind of navigation setup — a sidebar to choose the collection, which populates a list of posts in the selected collection, and then an editor for the selected post. Notice there are two fields in the editor: one to edit the title, and another to edit the content. This is a departure from the web app.

:point_up_2: Yep, it supports “Dark Mode” — this feature mostly comes for free when you’re using standard SwiftUI elements, but I had to use a bit around of a workaround for Xcode/iOS/macOS beta 4 to let you choose if you wanted the app to always use a light scheme, always use a dark scheme, or simply follow the OS setting. Not sure if that bug’s been fixed in later betas.

There’s still lots to do, but it’s coming along!

I’m very excited to announce that the public beta is now live! I wrote about it here, and recommend that anyone interested in testing go over the information in that post.

Once you’ve done that, sign up for the TestFlight beta by following the instructions here: https://writefreely.org/apps/ios/beta

Hi. I registered for the beta and downloaded the apps. I have a pro write.as account and a custom domain. When I insert the username and password and the url, I never actually login. The logging in action never completes or errors. I’m unsure what url to use so I tried the write.as one when I view my blog on the menu and my custom domain. Here’s a screen capture on my iPad Air 2019 model running iOS 14.0.1. Can you let me know whether I should use the custom domain? The password was input. Is there a separate forum post for beta users? Thanks for the app

When this eventually makes it to the App Store, will there be support for lower iOS versions? I’m stuck on iOS 12 for the foreseeable future, but run maintain two blogs through my pro account and would love to have the option to post directly through the app. While I’m sure it’s more fully featured than the current W.a app, I can’t imagine a writing app not being able to run on these lower iOS versions? Also, since it’s been in development since lot before iOS 14 debuting. I suppose I would really know, but I’m keeping my fingers crossed that this will be possible, either way. In the months spent following these updates, I guess I hadn’t assumed the situation might be otherwise.

Hey @mpmilestogo, thanks for checking out the beta!

You don’t need to add the /mpmilestogo path to the end of the server address — you just need to enter https://write.as (or even just write.as, without the https://) to log in.

Sorry about the login action never completing — we’re aware of this bug and it’s slated to be fixed before the final release. To get the app out of this state, double-click the home button on your 2019 iPad Air to show all running apps, find the WriteFreely app, and swipe up on it to terminate the app. You should then be able to launch it again with the form reset and ready for you.

(If that doesn’t work, or if it’s giving you a hard time, delete the app from your iPad and re-install it from the TestFlight app.)

So cool! I just logged in and got my previous posts and a draft local post I had started playing around with the app. I’ll make my next post with it. This is very nice!


Hey @anx, I’m really sorry for not communicating minimum system requirements more clearly in my articles on Write.as and in my posts here.

Because we’re trying to build both an iPhone app, an iPad app, and a Mac app all at the same time, the technology stack we’re using (SwiftUI multiplatform) to move this project forward for all of those platforms at the same time aren’t available prior to iOS 14/macOS 11.

Apple announced the SwiftUI multiplatform framework at their June developer conference, and I’ve been using their beta operating systems and developer tools since then to develop the suite of apps. As the sole developer on the project, it’d have been impossible to get to this point and support two very different codebases if I’d been building this using the older iOS and Mac frameworks.

Again, I’m sorry for the disappointing news. My hope is that since everything is open source —including the code library we’re using to communicate with WriteFreely— the community will build an ecosystem of great apps for everyone!

Excellent! Glad that worked for you, and I’m having a look at that bug today. :slight_smile:

Hey, I signed up for the beta and tried out the application. The look and feel are minimal just like Write.as and Writefreely itself and I love it. One of the things I miss in the application is to migrate posts from one collection or drafts to another but there is already an open issue for it.

I’d like to add a separate feature request about the selection of collection before submitting the post. “All Posts” seems to be the default view in the application and so it is only natural for users to create new post in this section. But, the problem is that once you are ready to post it, you can’t select the collection and it by default goes to the Drafts collection. The possible work around is to manually copy the text and paste it in a new post under the desired collection. This could be avoided by presenting a drop-down right before submitting the post.

Good comment, thanks @arg! Just to add some detail, if you’re in the “All Posts” list and create a new post, it’ll be added to your Drafts. The thinking was that combined with the issue for choosing a collection/blog, from this “All Posts” view, you could create a new draft, and if you wanted it to be published under a given collection, that would be possible (once that feature was implemented). In other words:

  1. If you’re in Drafts or All Posts, tap the new-post button to create a new post in Drafts
  2. Write your post in the editor
  3. Optionally, select the collection/blog you want to publish to in the editor
  4. Publish your post

Would that flow work for you?

By the way — I believe this is the first WriteFreely/Write.as client app that has an “All Posts” view, and I’d love some feedback on whether folks find it valuable or not.

Yes, that’s exactly the feature I would like in the app. I like the idea of the “All Posts” and one benefit that I can right away see is that I get to see all posts including “Drafts” in a single view that makes it much easier to publish drafts by changing there collection once the feature is in. I think I’ll only be able to give better feedback once I use it with my existing blogs though.

One other thing I noticed is that “Drafts” become a bit redundant with the new in-app local drafts. But, potentially server-side sync between compatible apps would be really nice. This way, the unpublished drafts can truly remain private but still accessible from different platforms.

I have some private blogs on WriteFreely with a lot of posts (journals, etc). One big pain point for me currently is the difficulty to read the entries of a specific date in the past (where the date is the title of the post). All of the search solutions mentioned in this forum are either public search engine-based or the ones which require public or at least an unlisted blog. What I would love to have is at least a title-based search if not full-text search locally in the application either on the “All Posts” view or collection specific view or both that lets me find and jump to the older articles quickly. That will be a big value add I think.

That’s okay. Thank you @angelo for taking the time to respond so thoroughly. Hopefully by the time the official is released, I’ll have been able to update to iOS 14 (it’s a jailbreaking issue, so its ultimately by choice that I’m not just being a normal person and updating like everyone else). Also, I’m hoping that eventually we’ll gain the ability to update our blogs through iA Writer, which will make for a close second, as far as options go. Cheers and keep up the great work!


Thanks for this feedback! I don’t think search is something we can do a good job of implementing for 1.0, but it’s certainly a conversation we can have at the platform level.

Tip: when I want to search for something a site that doesn’t have a search feature, I generally use a site query on DuckDuckGo.com, like so:

site:http://write.as/angelo SwiftUI

Coming soon to a TestFlight beta near you! :smile:

Beta 2 is now live! I wrote about what’s new here:

New Local Posts Are Always Drafts

The first change is that any new post is created as a local post in your Drafts. Previously, if you were viewing the posts in your My Cool Blog collection, creating a new local post would place it in that collection; now, no matter what you’re looking at, it will always end up in Drafts. This makes the button’s behaviour easier to understand — no having to guess where the new post you created ended up.

Moving Posts Between Collections

The biggest change, though, is that you can now move posts between your Drafts and collections. I’m personally pretty excited about this, because it wasn’t even in-scope for the first release. But we got it done, and I’m really happy with how it works!

There are three parts to this feature.

First, the Share and Publish buttons in the post editor have been moved under a single Menu button. Tap it, and you’ll find a few actions you can take on the post.

If this is a local Draft, tapping the Menu button presents two options: Publish… and Share . The Share option will be disabled, because the post is local — you can’t share a link to something that’s not live on the web, after all.

Tapping the Publish… option presents a submenu asking you where you’d like to publish the post. Choose the blog you want the post to be a part of (or Drafts), and it’ll be published there!

If you’ve got a published post loaded in the editor, the menu is a little different. You’ll still see the Publish and Share options, but below that you’ll also see a list of your blogs. Just tap the blog you want to move the post to, and the app will send the request to the server for you.

You can also check out the release notes for bugfixes and other changes.


Hey @angelo ! Very cool update. Let me ask a writing or posting question on the beta. If I install the editor on my iPad and iPhone both and I wish to edit the posts on either device or the other device, what is the best way to do this with the second beta? I’d like to start a post on my iPhone when I’m out and about but finish on my iPad later in the day. It may be I add a link to images or just change the post somehow prior to publishing? What is the easiest workflow to allow this kind of functionality without first publishing the post? Perhaps write it as anonymous and then change the collection to my blog?

Thanks for the second beta. Going to go test and have fun with it now.