Messages Inbox

Messages Inbox puts an email-style inbox and archive on top of Apple's Messages. Replies archive themselves, a new text brings a conversation back, and the app never writes to Messages' database. I forked Ronak Malde's version in July and made commits on top of it.

Below are the details I spent the most time on.

Archived until they write back

Archiving stamps the conversation with the current time. It stays archived while their newest message is older than the stamp, so my own replies never pull it back, and their next message does. The stamp lives in the app's own store, keyed by the chat's ID. Messages' chat.db is only ever read.

Archive Sam

Replies archive themselves

When I reply from the Inbox, the conversation archives itself seconds later, or anywhere from to in Settings. Messages moves a conversation to the top the moment I reply, so the list would jump under my cursor. Until it archives, the row keeps its old slot, and then the selection moves to whichever conversation slides into that slot.

Switch to Messages

Tapbacks through Messages' own actions

Messages has no public way to send a Tapback or a threaded reply. I didn't want to drive its window or ask for Accessibility, so a small helper app finds the message by its ID, and three saved Shortcuts call Messages' own Reply, Tapback and Read State actions. Messages stays hidden, and the reaction posts as a real Tapback.

Pick a Tapback

Thousands of rows, a few drawn

The sidebar draws only the rows near what's on screen. Every row is px and every section label px, so the app places all of them up front, finds the first visible one by binary search, and draws px past each edge. Conversations open on their latest messages and load earlier ones as I scroll up.

Scroll the list

It reads ~/Library/Messages/chat.db with Full Disk Access, sends ordinary messages through Messages, and checks for new messages every seconds while it's in front. Native actions need an Apple silicon Mac on macOS 15 or newer. tests cover it.