Native Nextcloud Talk · Not launched yet
Nextcloud Talk, native on Mac and iPhone.
Swift and SwiftUI, on each platform’s own terms. No Electron. No web view rendering your messages. Your conversations are on screen before the first network call returns.
Not launched yet — there is nothing to download or buy today.
Illustrations — real screenshots land with the first builds
A good protocol, wearing a browser.
Nextcloud Talk is a sound piece of infrastructure. Its HTTP API is documented, it long-polls properly, and it is yours to host. The trouble starts at the surface: a web app in a tab, or a web app wrapped in a desktop shell, which is the same web app with a worse relationship to your keyboard.
So text selection behaves almost like text selection. On the Mac the menu bar is almost real; on a phone, it is a website pretending to be an app. Nothing is broken, exactly — it just never stops reminding you where it came from.
kvidr takes the other half of the deal. Nextcloud is the backend and the protocol; Apple’s own Messages is the benchmark for how it should feel, on the Mac and on the iPhone. Where the two disagree, kvidr follows the platform.
Six promises, written as acceptance criteria.
- 01
Instant
The cached conversation list is on screen before the first network call returns. Opening a cached conversation shows its messages in the same runloop turn.
- 02
Native
The platform’s own controls, menus, text selection and navigation — and on the Mac, real menu bar commands and window restoration. Not approximations of them.
- 03
Trustworthy unread
A message is never marked read because it was downloaded. Only because it was selected, in a key window, and actually put in front of you.
- 04
Never janky
Scrolling a ten-thousand-message conversation stays smooth. One incoming message re-renders one row, not the whole transcript.
- 05
Calm
Errors are quiet inline state, not modal alerts. Loading states are subtle. There is no spinner on launch.
- 06
Offline-tolerant
No network means a slightly dimmer app, not an error page. Everything already fetched stays readable, and drafts survive quitting.
Everything you actually do in a day.
Everything below is built into the Mac app ahead of launch; the iPhone app is being built on the same foundations. Every feature is gated on what your server reports it can do, rather than on a version number — so anything your Nextcloud lacks is hidden, not broken.
A sidebar that is already there
Avatars, favourites, unread counts and mention state, grouped into Favourites, Conversations and Archived. Painted from cache before any request is made.
Messages as native text
Markdown, mentions, links, code, quotes, files and rich objects — rendered as real text with real selection. Never as HTML, never in a web view.
Replies, reactions, edits
Optimistic sending with retry, threaded replies, reactions with a who-reacted popover, and editing or deleting wherever the server allows it.
Read markers that mean it
The conversation has to be selected, the app frontmost, the window key, and the transcript at the bottom. Four conditions, all required.
Attachments, properly
Drag-and-drop, ⇧⌘A or paste, with real upload progress. Images preview inline with an in-app viewer. A name clash gets a number, not someone else’s overwritten file.
Search that reaches the server
⌥⌘F finds inside the open conversation instantly. ⇧⌘F searches your whole history on the server, across every conversation, and takes you to the message.
Live, without refreshing
Talk’s long poll with backoff and a visible reconnecting state. Notifications and a Dock badge, including a preview-free mode for shared screens.
An inspector, not a dashboard
A third column with conversation info, participants you can invite and remove, and shared files by kind. ⌘N creates a conversation using Nextcloud’s own people search.
On the Mac, the whole app without the mouse.
Every command has a shortcut, and ⌘/ opens a window listing all of them. A representative handful:
- ⌘KGo to conversation (quick switcher)
- ⌘FSearch conversations
- ⇧⌘FSearch messages on the server
- ⌥⌘FFind in conversation
- ⌥⌘↑or⌥⌘↓Previous / next conversation
- ⇧⌘]Next unread conversation
- ⇧⌘KFocus the message field
- ⌘↑Edit your last message
- ⇧⌘RReply to the newest message
- ⇧⌘UMark as unread
- ⇧⌘AAttach a file
- ⌘NNew conversation
- ⌥⌘IShow conversation details
- ⌘/Keyboard shortcuts
In development
Next: the iPhone.
An iPhone app is in development, built the same way as the Mac app: Swift and SwiftUI, talking directly to the documented Nextcloud Talk APIs, with no web view anywhere near your messages.
The Mac app already keeps everything below the interface in its own Swift package, with no SwiftUI in it. That is what makes an iPhone app a second interface rather than a second app.
It is not ready, and there is no date yet. Join the launch list at the bottom of this page to hear when it is.
Illustration — the iPhone app is in development
Your password is never typed into this app.
kvidr signs in with Login Flow v2. You type a server address; the app opens your browser; you approve it there; the app receives a device-specific app password. Your actual Nextcloud password is never typed into, and never seen by, this application.
That app password lives in the macOS Keychain — never in preferences, never in the cache, never in a log — and it is revoked the moment you remove the account.
The rest of the posture follows from the same instinct:
- HTTPS is required. Plain HTTP is possible only for
localhostand private-network addresses, and only after you turn it on deliberately. - No remote HTML and no remote JavaScript, anywhere in the message pipeline. There is no
WKWebViewrendering chat content, so there is nothing for a message to execute in. - There are no credentials in the repository, and no analytics inside the app.
All of which you can check rather than take on faith — the source is on GitHub.
A narrow tool. Here is exactly how narrow.
This is not for everyone, and pretending otherwise would waste your time. If any line below is a no, kvidr is not yet for you.
- On the Mac: macOS 26 or later
- The app targets macOS 26 and uses Liquid Glass on its floating layer. There is no build for earlier versions.
- An iPhone — soon
- The iPhone app is in development. What it needs will be listed here when it ships, not guessed at before.
- A Nextcloud server with Talk
- Your own, or one you have an account on. kvidr is a client; it hosts nothing and stores nothing on anyone else’s behalf.
- A signed build at launch, or Xcode 26
- There is no signed build yet. Until there is, the source is public: compile it in Xcode 26 and sign it with your own Apple developer account.
- Text chat only
- Calls, audio, video and screen sharing are deliberately out of scope for v1. The architecture leaves room for them; nothing here depends on them.

Get an email the day kvidr launches.
Nothing is out yet: no download, no App Store listing. Leave your email and you will hear when the Mac app launches, and again when the iPhone app does. Launch news only — no newsletter, and unsubscribing takes one click.