UrbanChat is a private Matrix client for Android, built on top of Element X. It uses the Matrix Rust SDK underneath, targets devices running Android 7+, and is written using Jetpack Compose with navigation managed by Appyx.
- Acknowledgements
- What UrbanChat adds to Element X
- Screenshots
- Rust SDK
- Minimum SDK version
- Build instructions
- Copyright and License
UrbanChat is a fork of Element X Android, built and maintained privately by UrbanTechIO. Enormous credit and thanks go to Element and New Vector Ltd for building and open-sourcing the original client this project is based on — including its architecture, the Compound design system, and its integration with the Matrix Rust SDK. UrbanChat exists to customize that foundation for private, personal use, not to compete with or replace it.
If you're looking for the official, publicly supported Matrix client, please use Element X directly.
Everything below is in UrbanChat and not in Element X. Features Element X already has are not listed.
- Theme colour that tints the home screen and headers.
- Frosted glass chat header, message bar and home header, with separate transparency sliders for the header bar, the composer bar and the message bubbles.
- Chat background: a solid colour or your own photo as wallpaper.
- Custom message colours for outgoing and incoming bubbles.
- Favorites, People and Groups sections, with a switch to turn the sections off and see one list sorted by latest activity. A Direct chat setting in room details lets you choose whether a chat counts as a private 1:1 conversation on your device.
- Calls tab with a call log: outgoing, incoming, missed and declined calls and how long answered ones lasted. Tapping an entry opens that chat at the call.
- Voice message mini player under the filter chips, with play/pause, progress and a close button.
- Online status: a green or grey dot next to people in the chat list and in the chat header, and a switch to hide your own status.
- Locked chats: lock any chat to hide it from the list. A locked chat opens only after your device unlock (fingerprint, PIN or pattern), and you can reveal the locked list by typing an access code into the search bar. Sharing into a locked chat also asks for the unlock.
- Disable link previews switch.
- Search inside a chat.
- Sound for open chats: play a sound for messages that arrive in the chat you are looking at.
- Download to Gallery: a download button on received photos and videos that saves them to an UrbanChat folder in your gallery.
- Image editor before sending, also when sharing from another app: crop, rotate, flip, draw, arrows, text, pixelate an area, and undo.
- Large videos always send: a video is re-encoded to fit the server's upload limit instead of failing, whatever its length.
- Sharing a video from another app follows your upload settings, with a quality choice (original, 1080p, 720p, 360p) when optimisation is off and the quality is high.
- Original Size switch: send videos untouched. A video over the server limit is still compressed so it can be sent.
- Hold-to-record starts faster, with smoother animations for the swipe-up lock and for deleting a recording.
- Send straight from hands-free recording, with no separate stop step.
- Playback keeps going when you leave the chat.
- Call timer under the caller's name once the call is answered.
- Full-width audio output picker (Phone, Speaker, Bluetooth, headset) that applies reliably, and an output button that shows the real output.
- Calls start on the loudspeaker, and a proximity sensor moves the sound to the earpiece when you hold the phone to your ear and back when you move it away. It never overrides a Bluetooth or wired choice.
- A speaker choice made while the call is still ringing is kept after it is answered.
- Bluetooth audio on Android 11 and older, which Element X blocks.
- The call controls no longer flicker, and the microphone keeps working when the screen turns off.
Here are some screenshots of the application:
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
UrbanChat leverages the Matrix Rust SDK through an FFI layer that the client directly imports and uses, the same way Element X does.
UrbanChat requires a minimum SDK version of 24 (Android 7.0, Nougat).
Just clone the project and open it in Android Studio. Make sure to select the
app configuration when building (as there are also sample apps in the project).
To build against a local copy of the Rust SDK, see the Developer onboarding instructions.
Copyright (c) 2026 UrbanTechIO.
UrbanChat is a derivative work of Element X Android:
Copyright (c) 2025 Element Creations Ltd. Copyright (c) 2022 - 2025 New Vector Ltd.
This software is dual licensed by Element Creations Ltd (Element). It can be used either:
(1) for free under the terms of the GNU Affero General Public License (as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version); OR
(2) under the terms of a paid-for Element Commercial License agreement between you and Element (the terms of which may vary depending on what you and Element have agreed to).
Unless required by applicable law or agreed to in writing, software distributed under the Licenses is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the Licenses for the specific language governing permissions and limitations under the Licenses.







