# ITMS-90683: missing purpose string in Info.plist

> Getting the error ITMS-90683, missing purpose string in Info.plist? Here is how to fix it. Add the permission sentence Apple names, in plain language.

**ITMS-90683: missing purpose string in Info.plist.** The app, or a plugin in it, can use the camera, photos, location or similar, and Info.plist doesn’t say why. Apple requires a sentence for each of those permissions.

- App Store Connect. A permission message is missing.
- Interactive page: https://capwr.app/free-tools/build-error-explainer/itms-90683
- Build error explainer: https://capwr.app/free-tools/build-error-explainer
- Last updated: 2026-10-03

## What this error means

The app, or a plugin in it, can use the camera, photos, location or similar, and Info.plist doesn’t say why. Apple requires a sentence for each of those permissions.

## Why it happens

A plugin, or the app, references a protected API such as the camera, and Info.plist has no sentence explaining why. App Store Connect blocks the upload until that key exists.

## The message tools print

```
ITMS-90683: Missing purpose string in Info.plist - The Info.plist file for the "App.app" bundle should contain a NSCameraUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data.
```

## How to fix it

1. Add the key named in the error (NSCameraUsageDescription, for example) to ios/App/App/Info.plist, with a sentence saying what the app does with it.
2. Write it for people: “Harbor uses the camera to scan your boat’s registration.”
3. If no feature needs it, remove the plugin that triggers it.

## Check a log that shows this

Paste the failing step into the [build error explainer](https://capwr.app/free-tools/build-error-explainer). It matches this message, and any others in the same log, in your browser. Nothing is uploaded.

## Other App Store Connect errors

- [ITMS-90725: iOS SDK version is too old](https://capwr.app/free-tools/build-error-explainer/itms-90725)
- [ITMS-90189: Redundant Binary Upload](https://capwr.app/free-tools/build-error-explainer/itms-90189)
- [ITMS-90186: Invalid Pre-Release Train](https://capwr.app/free-tools/build-error-explainer/itms-90186)
- [ITMS-91053: Missing API declaration](https://capwr.app/free-tools/build-error-explainer/itms-91053)
- [ITMS-90717: app icon has an alpha channel](https://capwr.app/free-tools/build-error-explainer/itms-90717)
- [Authentication credentials are missing or invalid](https://capwr.app/free-tools/build-error-explainer/app-store-connect-authentication-invalid)

## Send the next upload without this rejection

CapWrapp uploads to App Store Connect from GitHub Actions and bumps the build number on every ship. When an upload fails, History can explain it from the full log.

[Get started free](https://capwr.app/login).

## About CapWrapp

CapWrapp turns a web app on GitHub — built with Lovable, Bolt, Base44, Cursor or by hand — into iPhone and Android apps. It adds Capacitor if the repo needs it, signs the builds, and ships them to TestFlight and Google Play from GitHub Actions, with no Mac or Xcode on your side. [Get started free](https://capwr.app/login) · [Lovable to App Store guide](https://capwr.app/guides/lovable-to-app-store)
