explaingit

dimillian/icecubesapp

6,987SwiftAudience · developerComplexity · 3/5LicenseSetup · moderate

TLDR

Ice Cubes is a free, open-source Mastodon app for iPhone, iPad, Mac, and Apple Vision Pro, built with SwiftUI and covering timelines, notifications, direct messages, and multi-account support.

Mindmap

mindmap
  root((IceCubesApp))
    Platforms
      iPhone
      iPad
      Mac
      Vision Pro
    Core Features
      Home timeline
      Notifications
      Direct messages
      Hashtag following
    Unique Features
      Tag groups
      Remote timelines
      AI hashtag suggest
    Tech
      SwiftUI
      MVVM
      OpenAI API
      Swift packages
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Use Ice Cubes as a full-featured Mastodon client on iPhone, iPad, or Mac with push notifications and multi-account support.

USE CASE 2

Study the codebase as a real-world SwiftUI reference to learn layouts, data handling, and MVVM architecture across Apple platforms.

USE CASE 3

Build a custom Mastodon feature by forking the project and adding it to one of the existing Swift feature packages.

USE CASE 4

Create a custom timeline by combining multiple Mastodon hashtags into a single tag group view.

Tech stack

SwiftSwiftUIOpenAI API

Getting it running

Difficulty · moderate Time to first run · 30min

Requires an Apple developer team ID and bundle prefix, copy the config template file before compiling.

The app is described as free and open-source, no specific license text was provided.

In plain English

Ice Cubes is a free, open-source app for Mastodon, a decentralized social network that works similarly to Twitter or Bluesky but where many independent servers (called instances) connect together instead of one company controlling everything. The app is available on the App Store and works on iPhone, iPad, Mac, and Apple Vision Pro. It is built entirely with SwiftUI, Apple's modern framework for building interfaces across all its platforms. The app covers the full range of things you would expect from a social app: browsing your home timeline, seeing posts from your local server or the broader network, following hashtags, direct messages, notifications, and exploring trending content. A few features are specific to Ice Cubes: tag groups (custom timelines built from multiple hashtags at once), the ability to add remote local timelines so you can browse another instance's public feed, and AI-assisted tools in the post editor that use the OpenAI API to suggest hashtags or describe image attachments. Your timeline position syncs between devices through the Mastodon server API, and your home timeline is cached locally so you can see recent posts even before new ones load. Push notifications are supported with a proxy that routes Mastodon notifications to Apple's notification system. The notification content itself is decoded on the device, not on the proxy, so the proxy cannot read the content of messages. The app supports multiple accounts, stores authentication tokens in the device keychain, and uses Apple's built-in secure login flow. The codebase is organized into separate Swift packages by feature area (timeline, editor, notifications, accounts, and so on), and the author notes in the README that it is a good project to read through if you are learning SwiftUI, since it covers layouts, data handling, and user interaction in a real-world context. The architecture follows a straightforward pattern called MVVM without additional frameworks layered on top. To build it locally you clone the repository and copy a configuration template file before compiling, then fill in your Apple developer team ID and app bundle prefix.

Copy-paste prompts

Prompt 1
I am learning SwiftUI and want to understand how Ice Cubes implements its timeline list with local caching. Walk me through the relevant Swift package and key files.
Prompt 2
How does Ice Cubes handle push notifications for Mastodon without the proxy reading message content? Explain the architecture.
Prompt 3
I want to add a custom timeline filter to Ice Cubes. Which Swift package should I modify and what data model do I need to extend?
Prompt 4
Show me how Ice Cubes uses MVVM without additional frameworks, point me to a simple screen that demonstrates the pattern.
Open on GitHub → Explain another repo

← dimillian on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.