Source: https://seerepo.com/r/signalapp/Signal-Android/built
Markdown source: https://seerepo.com/r/signalapp/Signal-Android/built.md
Description: Signal-Android is a Kotlin repo built with Jetpack Compose, androidx.navigation3:navigation3-runtime, androidx.navigation3:navigation3-ui,…

# What is Signal-Android built with?

Signal-Android is a Kotlin repo built with Jetpack Compose, androidx.navigation3:navigation3-runtime, androidx.navigation3:navigation3-ui, androidx.lifecycle:lifecycle-viewmodel-navigation3, androidx.compose.runtime:runtime-livedata, and 11 more. It stores its data in androidx.sqlite:sqlite, signs people in with com.google.android.gms:play-services-auth, credentials-play-services-auth, androidx.biometric:biometric, and androidx.credentials:credentials, makes its content with android-integration, camera-extensions, documentfile, Glide, com.google.zxing:core, and 3 more, is tested with ui-test-junit4 and ui-test-manifest, and uses sqlite-framework and Firebase. It has 951,618 written lines, with 1,054 test files.

Read on November 8, 2026, at commit a74583b.

Repository: https://github.com/signalapp/Signal-Android

## Frontend

### The base

- **[Jetpack Compose](https://seerepo.com/uses/jetpack-compose)**: 733 files
- **androidx.navigation3:navigation3-runtime**: 38 files
- **androidx.navigation3:navigation3-ui**: 11 files
- **androidx.lifecycle:lifecycle-viewmodel-navigation3**: 6 files
- **androidx.compose.runtime:runtime-livedata**: 4 files
- **androidx.navigation:navigation-compose**: 4 files

### Interface

- **Airbnb**
- **com.google.android.flexbox:flexbox**
- **gridlayout**
- **media3-ui-compose**
- **recyclerview**
- **window-java**
- **[Google](https://seerepo.com/uses/google)**: 193 files
- **[androidx.appcompat:appcompat](https://seerepo.com/uses/androidxappcompat-appcompat)**: 123 files
- **androidx.constraintlayout:constraintlayout**: 43 files
- **com.airbnb.android:lottie**: 24 files
- **androidx.compose.material3.adaptive:adaptive**: 14 files
- **androidx.window:window**: 13 files
- **androidx.media3:media3-ui**: 6 files
- **com.google.accompanist:accompanist-drawablepainter**: 6 files
- **androidx.preference:preference**: 5 files
- **androidx.camera:camera-view**: 4 files
- **androidx.paging:paging-compose**: 2 files
- **androidx.camera:camera-compose**: 1 file

### Icons

- **androidx.compose.material:material-icons-extended**: 3 files

## Backend

### Data

- **sqlite-framework**
- **androidx.sqlite:sqlite**: 15 files

### Sign-in

- **com.google.android.gms:play-services-auth**
- **credentials-play-services-auth**
- **androidx.biometric:biometric**: 7 files
- **androidx.credentials:credentials**: 2 files

### Services

- **[Firebase](https://seerepo.com/uses/firebase)**: 3 files · [app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/advanced/AdvancedPrivacySettingsRepository.kt, line 4](https://github.com/signalapp/Signal-Android/blob/a74583b01e260944f699c4da03ba4e8ce04de32b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/advanced/AdvancedPrivacySettingsRepository.kt#L4)

## Support

### The base

- **[core-ktx](https://seerepo.com/uses/core-ktx)**
- **fragment-ktx**
- **lifecycle-common-java8**
- **lifecycle-livedata-ktx**
- **lifecycle-process**
- **[lifecycle-runtime-compose](https://seerepo.com/uses/lifecycle-runtime-compose)**
- **lifecycle-viewmodel-savedstate**
- **navigation-fragment-ktx**
- **navigation-ui-ktx**
- **org.jetbrains.kotlin:kotlin-stdlib-jdk8**

### Content

- **android-integration**
- **camera-extensions**
- **documentfile**
- **Glide**
- **[com.google.zxing:core](https://seerepo.com/uses/comgooglezxing-core)**: 7 files
- **androidx.exifinterface:exifinterface**: 4 files
- **com.github.jknack:handlebars**: 2 files
- **androidx.camera:camera-video**: 1 file

### Testing

- **ui-test-junit4**
- **ui-test-manifest**

### Tools

- **com.android.application.gradle.plugin**
- **com.google.devtools.ksp.gradle.plugin**
- **gradle**
- **jsr305**
- **kotlin-gradle-plugin**
- **ksp**
- **ktlint-gradle**
- **profileinstaller**
- **ui-tooling**
- **ui-tooling-preview**
- **androidx.annotation:annotation**: 1,594 files
- **androguard**: 1 file
- **androidx.benchmark:benchmark-gradle-plugin**: 1 file
- **com.google.protobuf:protobuf-gradle-plugin**: 1 file

### Other

- **arrow-core**
- **camera-camera2**
- **com.google.guava:guava**
- **concurrent-futures**
- **conscrypt-android**
- **dnsjava**
- **[JetBrains](https://seerepo.com/uses/jetbrains)**
- **kotlinx-coroutines-play-services**
- **kotlinx-serialization-json**
- **lifecycle-viewmodel-ktx**
- **okhttp**
- **okhttp-coroutines**
- **paging-runtime**
- **play-services-base**
- **play-services-wallet**
- **rxandroid**
- **sharetarget**
- **io.reactivex.rxjava3:rxjava**: 267 files
- **com.squareup.okio:okio**: 142 files
- **androidx.lifecycle:lifecycle-viewmodel-compose**: 56 files
- **com.fasterxml.jackson.core:jackson-databind**: 34 files
- **androidx.media3:media3-exoplayer**: 20 files
- **com.google.accompanist:accompanist-permissions**: 13 files
- **com.android.tools:desugar_jdk_libs**: 10 files
- **androidx.camera:camera-core**: 8 files
- **com.fasterxml.jackson.module:jackson-module-kotlin**: 6 files
- **androidx.media3:media3-session**: 5 files
- **androidx.camera:camera-lifecycle**: 4 files
- **com.android.billingclient:billing-ktx**: 3 files
- **androidx.media:media**: 2 files
- **me.leolin:ShortcutBadger**: 1 file

## Other repos with a similar stack

- [omnivore-app/omnivore](https://seerepo.com/r/omnivore-app/omnivore/built): Jetpack Compose, androidx.compose.runtime:runtime-livedata, androidx.navigation:navigation-compose, Firebase, core-ktx, lifecycle-livedata-ktx, lifecycle-runtime-compose, lifecycle-viewmodel-savedstate, Google, androidx.appcompat:appcompat · [Compare](https://seerepo.com/compare/omnivore-app/omnivore/vs/signalapp/Signal-Android)
- [ReVanced/revanced-manager](https://seerepo.com/r/ReVanced/revanced-manager/built): Jetpack Compose, androidx.compose.runtime:runtime-livedata, androidx.navigation:navigation-compose, core-ktx, lifecycle-runtime-compose, androidx.appcompat:appcompat, com.google.accompanist:accompanist-drawablepainter, androidx.paging:paging-compose, androidx.compose.material:material-icons-extended · [Compare](https://seerepo.com/compare/ReVanced/revanced-manager/vs/signalapp/Signal-Android)
- [android/nowinandroid](https://seerepo.com/r/android/nowinandroid/built): Jetpack Compose, androidx.navigation3:navigation3-runtime, androidx.navigation3:navigation3-ui, androidx.lifecycle:lifecycle-viewmodel-navigation3, Firebase, core-ktx, lifecycle-runtime-compose, androidx.compose.material3.adaptive:adaptive, androidx.compose.material:material-icons-extended · [Compare](https://seerepo.com/compare/android/nowinandroid/vs/signalapp/Signal-Android)
- [topjohnwu/Magisk](https://seerepo.com/r/topjohnwu/Magisk/built): Jetpack Compose, androidx.navigation3:navigation3-runtime, androidx.navigation3:navigation3-ui, androidx.lifecycle:lifecycle-viewmodel-navigation3, core-ktx, lifecycle-runtime-compose, Google, androidx.compose.material:material-icons-extended · [Compare](https://seerepo.com/compare/signalapp/Signal-Android/vs/topjohnwu/Magisk)
- [TeamNewPipe/NewPipe](https://seerepo.com/r/TeamNewPipe/NewPipe/built): Jetpack Compose, fragment-ktx, lifecycle-livedata-ktx, Google, androidx.appcompat:appcompat, androidx.constraintlayout:constraintlayout, androidx.preference:preference · [Compare](https://seerepo.com/compare/signalapp/Signal-Android/vs/TeamNewPipe/NewPipe)
- [bumptech/glide](https://seerepo.com/r/bumptech/glide/built): Jetpack Compose, core-ktx, fragment-ktx, lifecycle-runtime-compose, androidx.appcompat:appcompat, com.google.accompanist:accompanist-drawablepainter, androidx.exifinterface:exifinterface · [Compare](https://seerepo.com/compare/bumptech/glide/vs/signalapp/Signal-Android)

## Frequently asked questions

### What language is Signal-Android written in?

Signal-Android is written in Kotlin, with 951,618 written lines.

### What framework does Signal-Android use?

Signal-Android is built with Jetpack Compose, androidx.navigation3:navigation3-runtime, androidx.navigation3:navigation3-ui, androidx.lifecycle:lifecycle-viewmodel-navigation3, androidx.compose.runtime:runtime-livedata, androidx.navigation:navigation-compose, core-ktx, fragment-ktx, lifecycle-common-java8, lifecycle-livedata-ktx, lifecycle-process, lifecycle-runtime-compose, lifecycle-viewmodel-savedstate, navigation-fragment-ktx, navigation-ui-ktx, and org.jetbrains.kotlin:kotlin-stdlib-jdk8.

### What database does Signal-Android use?

Signal-Android stores its data in androidx.sqlite:sqlite.

### What does Signal-Android sign people in with?

Signal-Android signs people in with com.google.android.gms:play-services-auth, credentials-play-services-auth, androidx.biometric:biometric, and androidx.credentials:credentials.

### What services does Signal-Android use?

Signal-Android uses sqlite-framework and Firebase.

### Does Signal-Android have tests?

Yes. Signal-Android has 1,054 test files and is tested with ui-test-junit4 and ui-test-manifest.

### Which repos have a stack like Signal-Android's?

The ones that share most of its stack: omnivore-app/omnivore, ReVanced/revanced-manager, and android/nowinandroid.

## What is your repo built with?

Any public repo, with no account: https://seerepo.com/r/owner/repo/built, with the owner and name it has on GitHub.
