Skip to content

Custom camera provides a significantly lower photo quality compared to the native iOS camera. #6098

@vnescape

Description

@vnescape
  • I have searched open and closed issues for duplicates
  • I am submitting a bug report for existing functionality that does not work as intended
  • This isn't a feature request or a discussion topic

Title: Custom camera provides a significantly worse user experience, lower photo quality, and creates unnecessary maintenance overhead compared to the native iOS camera.

Bug description

When a user captures a photo or video within a Signal conversation, the app uses a custom-built camera interface. This approach creates three major problems:

Significantly Worse Photo/Video Quality: The custom camera is a basic implementation that cannot access Apple's advanced computational photography pipeline. This means all photos and videos taken within Signal are missing core features like Portrait Mode, automatic Night Mode, Cinematic Mode, Deep Fusion, and Smart HDR. The resulting media is often flat, poorly lit, and visibly inferior to what the native iOS Camera app can produce with the exact same hardware.

Poor User Experience: Because the quality is lower, users who care about their photos are forced into a frustrating workaround: leave Signal, open the native Camera app to take a high-quality shot, then return to Signal, navigate to the conversation, and attach the photo from the library. This multi-step process discourages spontaneous, in-the-moment sharing, a core function of a messaging app.

Unnecessary Development Burden: From a development perspective, maintaining a custom camera is a significant and continuous engineering effort. Apple's camera technology is a fast-moving target, with major advancements released every year. By choosing to build its own, Signal is committing to a perpetual game of catch-up, attempting to re-implement features that Apple provides to all developers for free. This diverts valuable engineering resources away from Signal's core mission of private communication.

In essence, the current approach results in a worse product for the user (lower quality, poor UX) and more work for the developer.

Steps to reproduce

In a dim room, open a conversation and tap the camera icon.
Take a photo of an object.
Close Signal and open the native iOS Camera app.
Take a photo of the same object. The native app will automatically engage Night Mode.
Compare the two photos.
Actual result
The photo taken within Signal is dark, noisy, and lacks detail. The photo taken with the native Camera app is bright, clear, and significantly higher quality. The Signal camera provides no access to the advanced modes that make the iPhone camera a market leader.

Expected result

I expect to access the full suite of my iPhone's camera features directly within Signal. When I tap the camera icon, I should be presented with the familiar, powerful, and full-featured native iOS camera interface, allowing me to take Portrait, Cinematic, or Night Mode shots without leaving the app.

Possible solution

The most effective solution is to delegate media capture to the native UIImagePickerController.

This single change would:

For Users: Instantly provide access to all of Apple's best-in-class camera features, dramatically improving the quality of shared media.
For Signal Developers: Eliminate the ongoing engineering cost of maintaining a custom camera, freeing up resources. It also future-proofs the app, which will automatically inherit new camera features from Apple (like Vision Pro spatial video capture) for free with each iOS update.
The existing custom camera can remain for specialized functions like QR code scanning, but for the primary use case of capturing and sharing media in a chat, the native controller is the superior choice.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions