A year of Ice Cubes

A retrospective on my full-featured, open source, SwiftUI Mastodon client

Thomas Ricouard
5 min readDec 29, 2023

As I recently updated the Ice Cubes’s repository readme, I also wanted to archive here how big this year has been for this side project of mine. It could have never been that big without the help of more than 100 contributors, helping implement new features, fix bugs, report issues, and localize!

It’s now been over a year since Ice Cubes was first released, and I wanted to highlight all the features the application has. It’s probably the Mastodon client with the most significant number of features.

It started as an iOS-only app and was extended to iPadOS and now macOS as a Catalyst app. The UI is tailored for each OS, with a tab bar on iOS and an extensive sidebar on macOS and iPadOS. And it’ll be available on day one as a native visionOS app!

Now, I wish it could be a simpler app. If I were building another product, I would probably create an app closer to what Threads did, a simpler app with a minimal number of features. But Ice Cubes is a collaborative effort, and the Mastodon community caters to a wide range of people with big demands for various features.

On the surface, it’s a simple app, especially with the new layout, but you can tweak it to your needs if you start to dig into the settings.

It’s free for you to download on the App Store, and you should definitely join us on the fediverse.

Here is an exhaustive and illustrated list of features Ice Cubes now have.

The Timeline

  • A navigation bar title menu lets you easily swap between your home, local, federated, and trending timeline.
  • You can also easily access your lists, followed tags, and tag groups.
  • Tag groups are custom timelines made of multiple tags, a feature unique to Ice Cubes.
  • Quote post!
  • You can also add a remote local timeline. A helpful feature to browse the public timeline of other instances. Another Ice Cubes only feature.
  • Ice Cubes relies heavily on the streaming events of Mastodon to do stuff like showing new posts live in the home timeline and editing and deleting your posts.
  • The timeline sync is semi-automatic; your position is sent to the Mastodon marker API, and from another device running Ice Cubes, you can resume your home timeline position.
  • The home timeline is cached using the third-party library Bodega. A lite SQLite wrappers. The current position is saved in user default, so when you switch accounts or launch the app, your cached home timeline and position are restored. Then new posts will be fetched and displayed with an unread counter.
  • iCloud sync of tag groups, remote timelines and drafts.
  • Server-side filters support.
  • Create and switch to your lists.

Editor / Composer

  • Full-featured post editor.
  • You can write threads up to 5 posts.
  • Upload up to 4 images.
  • AI-assisted tools using OpenAI API for text correction, hashtag generation, and more.
  • Generate image description using AI!
  • Custom emojis support.
  • Add polls and content warnings.
  • Save/restore from drafts.
  • Use the Apple language detection feature to suggest the language before posting.

Notifications

  • Full support for push notifications.
  • Ice Cubes runs its proxy between Mastodon and APNS, which is necessary for Mastodon to route push notifications to the user’s device.
  • Push notifications are never and can’t be read by the proxy.
  • Push notifications content/body is decoded on the device. Look for NotificationServiceSupport
  • Push notifications are rich, and use Apple INSendMessageIntent API for contact pictures.
  • Push notifications are grouped by activities, like mentions, favorites, boosts, etc…
  • Notifications within the app are also grouped/stacked.
  • You can select which kind of push notifications you want to receive within the app.
  • Route to the correct post and switch to the proper account when taping notifications.

Explore / Search

  • Dedicated explore/search tab for trending users, tags, posts, and links.
  • Easy access to all those categories from the top area.
  • You can search for everything or filter by users, tags, and posts.
  • See a graph for the activities on the trending tags.
  • See more from each category to access the full-screen view.

Direct Messages

  • Dedicated tab for direct/private messages.
  • Chat like UI
  • You can use the inline composer for a quick chat or the full editor.

Profile

  • Rich profile support.
  • Fully access & tweak your privacy settings.
  • Edit your profile, from your bio to your custom fields.
  • Easy access to Mastometrics.
  • Add a custom server-side note visible only to you for any profile.
  • Translate the bio of any profile to your language.
  • Easy access to edit your server-side timeline filters.
  • Easy access to share your profile outside of the app.

Multi Accounts

  • Support for an unlimited of Mastodon accounts.
  • Easily browse/discover instances and log in!
  • Swap account from any screen on iOS.
  • Swap your account from the macOS/iPadOS sidebar with just one click.
  • Full server-side and client-side account settings support.
  • Swipe to delete an account from the settings.
  • Safe authentication using Apple’s WebAuthenticationSession
  • The account token is securely stored in the keychain.

Other

  • You can support this project with tips in the app and Github sponsoring.
  • Massive amount of customization settings.
  • You can tweak the display settings like the font, line spacing, status actions buttons, etc…
  • Many built-in themes.
  • Make your theme.
  • Customize your swipe gestures.
  • Customize your tabbar entries.
  • Sound & haptic feedback support.

--

--

Thomas Ricouard

📱 🚀 🇫🇷 [Entrepreneur, iOS/Mac & Web dev] | Now @Medium, @Glose 📖| Past @google 🔍 | Co-founded few companies before, a movies 🎥 app and smart browser one.