Library / SDK
element-hq/element-x-ios avatar
element-hq/element-x-ios

Element X iOS is a SwiftUI rewrite on the Rust SDK

Next generation Matrix client for iOS built with SwiftUI on top of matrix-rust-sdk.

954 stars397 forksSwiftAGPL-3.0

At a glance

What is it?
Element X iOS is the next generation Matrix client from Element, and it is not an update to the old app but a total rewrite, with SwiftUI on the surface and the Matrix Rust SDK underneath. The interesting architectural decision is that the Rust SDK is exposed to Swift as a package, so the same core runs on the iOS and Android clients.
Who is it for?
Element X iOS fits a user who wants the current Matrix client on Apple hardware and is willing to move from Element Classic, since the project states that new users are recommended to use it instead of the previous generation app.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Swift, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A rewrite rather than a refresh

Element X iOS is the next-generation Matrix client provided by Element, and the README is careful about the scale of the change. Compared to the previous-generation Element Classic, it is a total rewrite using the Matrix Rust SDK underneath, and it targets devices running iOS 18 and later. Those three sentences set the expectations. A total rewrite means the old codebase is not a starting point, so anything you learned about Element Classic, its settings, its behaviours and its extensions does not necessarily carry over. The Rust SDK underneath is the more consequential choice, because it is the same SDK that the Element X Android client uses, and that is what makes the two clients behave consistently rather than merely look similar. The iOS 18 floor is worth checking early, because it rules out older devices outright rather than degrading on them.

The Rust SDK arrives as a Swift package

The mechanism that makes the Rust SDK usable from a SwiftUI application is described in its own section, and it is the part to understand if you want to contribute. Element X leverages the Matrix Rust SDK through an FFI layer exposed as a Swift package, the matrix-rust-components-swift repository, which the final client imports and uses directly. The stated reason is to share code between platforms, with Element X Android using the same SDK. So the division of labour is that the protocol handling, the synchronisation and the state management live in Rust, and the Swift side is the interface layer plus the user interface, with a published Swift package as the bridge. That is why the project can be called a rewrite and still share its brain with the Android client, and it is also why the repository has a separate Package.swift and Package.resolved for the dependencies that come in that way.

Status: actively developed and the recommended client

The status section is short and unambiguous. The project is actively developed and supported, and new users are recommended to use Element X instead of the previous-generation app. For an open source project maintained by a company, that sentence is a statement about the product roadmap rather than about the repository, and it tells you what to install and what to test against. The release naming follows a calendar scheme, with the tags at 26.10.4 and 26.10.3 both published on 2026-10-16 and 26.09.2 on 2026-09-23, so the version carries the year and month of the release. The default branch is develop rather than main, which is the usual arrangement for a project where the stable line is cut as tags from a development branch, and it means the code on the default branch is ahead of any release you can install.

The repository is a full application workspace

The top level of the repository shows a complete iOS application rather than a library. There is ElementX.xcodeproj and an ElementX/ directory for the app, Components/ for the shared UI, a ShareExtension/ for the share sheet integration, Tools/ for build and project tooling, an Enterprise/ directory, a compound-ios/ directory, and project.yml and app.yml, alongside Package.swift for the Swift package dependencies. The test surface is extensive, with UnitTests/, IntegrationTests/, UITests/, PreviewTests/ and AccessibilityTests/ directories, which is a good sign for a client where the accessibility of a chat interface is not a trivial requirement. The tooling around it is modern as well, with a.swiftlint.yml, a.swiftformat, a.periphery.yml for finding unused code, renovate.json for dependency updates, a localazy.json for localisation, ci_scripts/,.githooks/ and both AGENTS.md and CLAUDE.md for coding agents. The changelog is a CHANGES.md file, and there is a separate SECURITY.md and a codecov configuration for coverage reporting.

Forks, support and how to report a crash

There is a dedicated section on forking, with a forking guide in the docs directory, which tells you that a fork is a supported path rather than something to be improvised. The support section has a clear order. If you are experiencing an issue, first search the GitHub issues, and then the Matrix room, and if after that research you still have a question, ask in the room, and otherwise feel free to create a GitHub issue if you encounter a bug or a crash by explaining clearly in detail what happened. There is a second path worth knowing, which is that you can perform bug reporting, called Rageshake, from the Element application by going into the application settings, and the documentation recommends this especially when you encounter a crash. That is a sensible ordering, because a crash report from inside the app carries the state that a GitHub issue usually does not, and the community room is where a maintainer will actually look.

Dual licensed, and the copyright history

The licence section is the one to read before you deploy a modified build. The software is dual licensed by Element Creations Ltd, and it can be used either for free under the terms of the GNU Affero General Public License, either version 3 of the License or, at your option, any later version, or under the terms of a paid-for Element Commercial License agreement between you and Element, whose terms may vary depending on what you and Element have agreed. The project metadata records the licence as AGPL-3.0. The copyright lines tell the history, with Element Creations Ltd for 2025 and 2026 and New Vector Ltd for 2022 to 2025, which tracks the rewrite: the earlier years belong to the company that shipped Element Classic, and the current year belongs to the entity that ships Element X. As always with the AGPL, the practical question is what your distribution model triggers, and the forking guide is the place to look for how Element expects that to work.

Editorial conclusion

Element X iOS fits a user who wants the current Matrix client on Apple hardware and is willing to move from Element Classic, since the project states that new users are recommended to use it instead of the previous generation app. It does not fit someone who needs iOS 17 or earlier, because the client targets iOS 18 and later, and it does not fit a company that wants to ship a modified client without a licence conversation, because the project is dual licensed and the AGPL route is one of two options rather than the only one. Before you fork it, read the forking guide, check the AGPL obligations against your own distribution model, and note the release state, where the current tags are 26.10.4 and 26.10.3 from 2026-10-16 and the development branch is where the work continues.

Frequently asked questions

What is Element X iOS?

It is the next-generation Matrix client provided by Element, a total rewrite of the previous Element Classic app, built with SwiftUI on top of the Matrix Rust SDK and targeting devices running iOS 18 and later.

How does the Rust SDK work inside a SwiftUI app?

Through an FFI layer exposed as a Swift package, the matrix-rust-components-swift repository, which the client imports and uses directly. The stated purpose is to share code between platforms, with Element X Android using the same SDK.

Should I use Element X instead of Element Classic?

The project states that it is actively developed and supported and that new users are recommended to use Element X instead of the previous-generation app. The release tags follow a calendar scheme, with 26.10.4 and 26.10.3 published on 2026-10-16.

How do I report a crash in Element X iOS?

Search the GitHub issues and the Matrix room first, then ask in the room, and create a GitHub issue describing in detail what happened. The documentation also recommends performing bug reporting, called Rageshake, from the application settings, especially for crashes.

Can I fork Element X iOS commercially?

The project is dual licensed. It can be used for free under the AGPL version 3 or any later version, or under a paid-for Element Commercial License agreement, and there is a forking guide in the repository docs that explains the expected process.

Official sources

  1. element-hq/element-x-ios on GitHub
  2. License: AGPL-3.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/element-hq-element-x-ios.svg)](https://hysenlabs.com/projects/element-hq-element-x-ios)

Was this useful?