Open-source project
signalapp/Signal-iOS avatar
signalapp/Signal-iOS

Signal-iOS: the build chain the README never explains

A private messenger for iOS.

12,329 stars3,542 forksSwiftAGPL-3.0

At a glance

What is it?
The Swift iPhone client for Signal, licensed AGPLv3 and with 8.35.1.1964 as its latest release, keeps its whole dependency setup inside a Makefile. Its Makefile runs a private-pods setup script, and the README defers build instructions to BUILDING.md.
Who is it for?
Use this repository if you are shipping the iPhone build or auditing what the app does at rest, since the source is complete and the last push landed 2026-11-02. Skip it if you want installation help, migration answers, or a feature comparison, because none of those exist here.
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 November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • signalapp/Signal-iOS12,329 ★ · +84
Star history
Repository2026-09-222026-11-13
signalapp/Signal-iOS12.2k12.3k

84 Stars in the last 52 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

The README points to BUILDING.md instead of listing a build path

This is a Swift iOS app distributed through the App Store, but its README never gives a build recipe. It states that instructions for configuring the development environment and building Signal iOS live in BUILDING.md, and that contributors should also read CONTRIBUTING.md. What the repository root actually contains is the evidence: Signal.xcodeproj, Signal.xcworkspace, a Podfile and Podfile.lock, a Gemfile and Gemfile.lock, a .ruby-version, a .xcode-version, .swiftformat, .clang-format, and a Pods directory that is its own git submodule alongside MAINTAINING.md and SECURITY.md. A clone of the top repository alone contains no dependency tree, so the dependency setup runs through the `make dependencies` Makefile target.

make dependencies fans out into pod setup, backup tests, and RingRTC

The Makefile sets SCHEME=Signal, PODS=Pods, and BACKUP_TESTS=SignalServiceKit/tests/MessageBackup/Signal-Message-Backup-Tests, then defines dependencies as pod-setup followed by backup-tests-setup and fetch-ringrtc. No xcodebuild invocation appears anywhere in it, so compilation still happens inside Xcode against Signal.xcworkspace, and release plumbing is left to the separate fastlane, ci_scripts, and Scripts directories rather than to this file. Note the ordering inside pod-setup: the Pods checkout is wiped and hard-reset before the submodules are updated, which discards any local edits a developer made inside that directory. Verbatim, pod-setup runs:

make
git -C ${PODS} clean -xfd
git -C ${PODS} reset --hard
./Scripts/setup_private_pods
git submodule update --init --progress ${PODS}

backup-tests-setup runs:

make
git submodule update --init --progress ${BACKUP_TESTS}

and fetch-ringrtc runs:

make
$(CURDIR)/Pods/SignalRingRTC/bin/set-up-for-cocoapods

setup_private_pods runs with no documented pod source or credential

The call to `./Scripts/setup_private_pods` sits between the hard reset of Pods and the submodule update in pod-setup. The README does not say what the script does, so read Scripts/setup_private_pods and BUILDING.md before running it. For troubleshooting, the README directs people to the support center at support.signal.org and the unofficial community forum at community.signalusers.org.

No analytics and no telemetry makes your own words the only crash report

The project states that Signal iOS collects no analytics or telemetry, and that it relies on your feedback to help troubleshoot and fix problems when something is not working correctly. That is a privacy decision with an operational cost, and the cost lands on the person holding the phone. The app cannot hand a crash signature or a usage breadcrumb back to maintainers on its own, so a misbehaving install has to be described in prose by whoever hit the problem, and the quality of that report is entirely in the reporter's hands. The README points to support.signal.org for bug reports and support requests, and separately offers a community forum at community.signalusers.org, which it labels unofficial rather than a supported channel.

A MessageBackup test suite exists with no backup or transfer documentation

BACKUP_TESTS resolves to SignalServiceKit/tests/MessageBackup/Signal-Message-Backup-Tests, and backup-tests-setup initializes that submodule, which places message backup inside the tested surface of the project rather than in a future bucket. The README does not explain how a backup is produced, where it is kept, how it is restored, or what happens to it when an iPhone is replaced or when someone moves to an Android handset. Linked devices are not described either, so a reader gets no statement of what a multi-device setup requires or how a second device is authorized. The consequence is concrete: a migration plan cannot be assembled from this README, and the support center plus the unofficial forum are the only named paths to those answers.

ECCN 5D002.C.1 and the TSU exception govern who may build this

The README carries a cryptography notice saying that the country in which you currently reside may place restrictions on the import, possession, use, and re-export of encryption software, and asking you to check your own laws before using any encryption software at all. It records the U.S. Department of Commerce Bureau of Industry and Security classification as Export Commodity Control Number 5D002.C.1, described as information security software that uses or performs cryptographic functions with asymmetric algorithms. It also states that the form of the distribution is eligible for export under the License Exception ENC Technology Software Unrestricted exception, cited to Section 740.13 of the BIS Export Administration Regulations, for both object code and source code. Building and moving this code across a border is a legal question here, not just a technical one.

Android and Desktop live in separate repositories with no shared contract

The README names signalapp/signal-android and signalapp/signal-desktop as the companion builds, each its own repository, and this repository covers the iPhone only. No statement anywhere describes which features track across the three, so a reader asking whether an iPhone capability exists on Android, or how far Desktop has diverged, has to visit those repositories directly. The iOS release cadence is visible in the tag numbers: 8.35.1.1964 on 2026-11-02, 8.35.0.1954 on 2026-10-28, and 8.34.0.1942 on 2026-10-22, with the most recent push landing 2026-11-02. Treat this tree as authoritative for iOS behavior alone, and treat any cross-platform claim as unverified until checked at the source.

Editorial conclusion

Use this repository if you are shipping the iPhone build or auditing what the app does at rest, since the source is complete and the last push landed 2026-11-02. Skip it if you want installation help, migration answers, or a feature comparison, because none of those exist here. Before you start, open BUILDING.md, find out where the private pods come from, and confirm your own country's rules on encryption software.

Frequently asked questions

Why would someone use the Signal app on an iPhone?

Signal describes it as a free and open source messaging app for simple private communication with friends. The iPhone build ships through the App Store, is written in Swift, and is released under the GNU AGPLv3.

Is Signal a Russian-owned app?

No country of ownership appears anywhere in the README. The only attribution given is the license line, Copyright 2013-2026 Signal Messenger, LLC, and the project homepage is listed as signal.org.

Is Signal available for iOS?

Yes. This repository is the iOS client itself, with SignalNSE, SignalShareExtension, SignalUI, SignalServiceKit, and a Signal.xcworkspace in the tree, and the README links an App Store listing.

Which is safer, iMessage or Signal?

The README makes no comparison against iMessage. What it does state is that Signal iOS collects no analytics or telemetry, and that troubleshooting and support requests go through support.signal.org.

what is signal ios

It is the iOS client for Signal, a private messenger, licensed under the GNU AGPLv3 with the license text hosted at gnu.org/licenses/agpl-3.0.html. Build guidance is delegated to BUILDING.md rather than written in the README.

signal ios vs android

They are separate repositories, signalapp/Signal-iOS and signalapp/signal-android, and the README also names a separate desktop repository. No shared feature list is published, so parity between the clients cannot be established from this README.

Official sources

  1. License: AGPL-3.0
  2. Project website
  3. README
  4. Releases
  5. signalapp/Signal-iOS on GitHub
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/signalapp-signal-ios.svg)](https://hysenlabs.com/projects/signalapp-signal-ios)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/signalapp-signal-ios.svg)](https://hysenlabs.com/projects/signalapp-signal-ios)

Was this useful?