App Store

    Replit Agent ITMS-90078 error: what it actually means, and the fix

    ITMS-90078 push notification entitlement error in Replit Agent iOS build

    The error code in the title of this page is a common Replit Agent failure mode and a common point of confusion: developers see ITMS-90078 and assume the issue is the app icon because the wording in their notes or in second-hand StackOverflow answers conflates 90078 with the missing-icon error 90704. Both errors arrive after the build is uploaded and both block forward progress, which is why the confusion repeats. This page sorts the two error codes, explains why Replit Agent triggers the push notification variant, and gives the two fixes that make the warning go away.

    Short answer

    ITMS-90078 is the Missing Push Notification Entitlement warning, not a missing-icon error. According to Apple's published documentation thread on ITMS-90078, the warning is triggered when the binary registers for remote notifications (typically via a third-party SDK in Replit Agent builds like Capacitor or Firebase) but the app's entitlements file does not include the aps-environment key. The fix is either to enable the Push Notifications capability and add the entitlement, or to remove the SDK call that registers for remote notifications.

    What you should know

    • ITMS-90078 is push notifications, not icons. The missing-icon error code is ITMS-90704.
    • The warning is binary-level. Apple's validator inspects the compiled binary for the registration symbol and flags it independent of whether your code calls the feature.
    • Replit Agent builds commonly bundle Capacitor, Firebase, or OneSignal. All three include push notification registration code by default.
    • Two valid fixes exist. Either enable Push Notifications and add the entitlement, or remove the SDK that registers for them.
    • It is a warning, not a hard rejection as of May 2026, but it should still be resolved before submission.

    What does ITMS-90078 actually check for?

    Apple's app validator inspects the compiled binary for a specific symbol: an implementation of UIApplicationDelegate.application(_:didRegisterForRemoteNotificationsWithDeviceToken:). If that method is implemented anywhere in the bundle, including inside any embedded framework, the validator records the binary as a push-notification-using app.

    The validator then inspects the entitlements file (the .entitlements XML attached to the signed binary) for the key aps-environment. The value of that key should be either development (for development provisioning profiles) or production (for App Store builds).

    When the registration symbol is present and the entitlement key is not, the validator emits ITMS-90078 as a warning. The wording in the email confirms the mismatch: "The app appears to register with the Apple Push Notification service, but the app signature's entitlements do not include the 'aps-environment' entitlement."

    Why does Replit Agent specifically trigger this?

    Replit Agent generates iOS apps through a Capacitor-based pipeline. The Capacitor stack is a hybrid framework that wraps web app code (HTML, JavaScript, CSS) into a native iOS shell. Capacitor's plugin library includes a push notification plugin (@capacitor/push-notifications) that is commonly added during scaffolding even when the app does not actually need notifications.

    When the push notification plugin is in the project, the Xcode build links its Objective-C code into the binary. That code implements didRegisterForRemoteNotificationsWithDeviceToken because the plugin's design requires the method to forward token delivery to JavaScript. The validator sees the method, looks for the entitlement, does not find it, and issues the warning.

    The same pattern repeats with Firebase Messaging (the FirebaseMessaging Pod implements the same delegate method) and with OneSignal. In every case, the SDK adds the symbol that the validator flags, regardless of whether your own code calls it. A Replit Agent build that includes any of these SDKs will produce ITMS-90078 unless the entitlement is added.

    What is the missing-icon error developers actually mean?

    The error code commonly conflated with ITMS-90078 is ITMS-90704, "Missing App Store Icon". The wording in the Apple email reads: "Your app is missing the App Store Icon required for iOS or iPadOS apps. Include a 1024x1024 pixel App Store Icon in PNG format inside the asset catalog."

    The two are different problems with different fixes:

    Error codeMeaningCauseFix
    ITMS-90078Missing Push Notification EntitlementBinary registers for remote notifications without the aps-environment entitlementEnable Push Notifications capability OR remove the registration call
    ITMS-90704Missing App Store IconThe 1024x1024 App Store Icon is missing from the asset catalogAdd a 1024x1024 PNG App Store Icon to Assets.xcassets/AppIcon.appiconset
    ITMS-90717Invalid App Store Icon (transparency)Icon contains an alpha channel or transparencyRe-export the icon as a flat PNG without alpha
    ITMS-90891Missing required iconMissing a specific size icon for iPhone or iPadAdd the size listed in the email to the AppIcon set

    If the email you received says 90078, follow the push notification path below. If it says 90704, 90717, or 90891, the issue is the icon set in the Replit Agent project.

    How do you fix ITMS-90078 if you do want push notifications?

    Four steps, in order:

    1. Open the Apple Developer portal, go to Certificates, Identifiers and Profiles, then Identifiers. Find your App ID and enable the Push Notifications capability.
    2. Regenerate the provisioning profile (development and distribution). Apple's profile signing process updates the embedded entitlements automatically when a capability is enabled on the App ID.
    3. In the Replit Agent project, ensure the aps-environment key is present in the .entitlements file with value development or production depending on the build target.
    4. Re-build the IPA and re-upload to App Store Connect. The warning should be gone on the new submission.

    The Capacitor or Firebase push plugin can stay in the project; it now has the entitlement it needs. If your app actually uses push notifications, you also need a backend that sends the notification payloads via APNs and a way to collect the device tokens.

    How do you fix ITMS-90078 if you do not want push notifications?

    Three steps:

    1. Identify which SDK is registering for remote notifications. In a Capacitor project, the @capacitor/push-notifications package is the usual cause. In a Firebase project, it is FirebaseMessaging (added either via Swift Package Manager or CocoaPods).
    2. Remove the SDK from the project. For Capacitor, run npm uninstall @capacitor/push-notifications and then npx cap sync ios. For Firebase, remove the Pod entry or the SPM dependency.
    3. Re-build the IPA and re-upload. The push registration symbol is no longer in the binary, so the validator does not flag the missing entitlement.

    The removal path is the simpler one for apps that do not use notifications. The capability path is the right one if push is a real product feature.

    What to watch out for

    Three details that recur on Replit Agent builds.

    First, the warning email arrives separately from the build status. The build appears successful in App Store Connect, but the email lists the warning. Some developers miss the email and assume the build is clean; the warning still applies and should be resolved before submission.

    Second, Replit Agent's build process sometimes regenerates the entitlements file from defaults on each build. If you add the aps-environment entitlement by hand to a file Replit owns, the next build can revert it. The correct fix is to enable the capability in the project's iOS configuration that Replit reads, not to edit the generated file directly.

    Third, for security audits PTKD.com (https://ptkd.com) scans the resulting IPA for the actual capabilities the binary uses versus what the entitlements file declares. A mismatch is sometimes a sign of a deeper problem: a third-party SDK using a private API or a capability the team did not intend. The scan maps findings to OWASP MASVS-PLATFORM-1, which covers the platform's required entitlement model.

    Key takeaways

    • ITMS-90078 is push notifications, not icons. The icon error is ITMS-90704.
    • The validator detects the push-registration symbol at the binary level; any bundled SDK with that symbol triggers the warning.
    • Fix it by enabling Push Notifications and adding the aps-environment entitlement, or by removing the SDK that registers for them.
    • For a complete pre-submission audit, PTKD.com (https://ptkd.com) checks declared vs used entitlements alongside credential scans.
    • Document the entitlement decision in your CHANGELOG so the next Replit Agent rebuild does not silently reintroduce the warning.
    • #replit
    • #ios
    • #itms-90078
    • #push-notifications
    • #app-store-connect
    • #entitlements

    Frequently asked questions

    Why does the error reference Missing Icon if it is really about push notifications?
    It does not. The Missing Icon error code is ITMS-90704, not ITMS-90078. The two often get confused because both arrive in App Store Connect emails after a build upload and both block the binary from progressing. If your actual rejection email says 90078, the issue is push notification entitlements; if it says 90704, the issue is the App Store Icon in your asset catalog.
    Why do I get this error when my Replit app does not use push notifications?
    Because a third-party SDK in the bundled framework set is registering for remote notifications even though your code never calls the registration API directly. Replit Agent commonly pulls in Capacitor, Firebase, OneSignal, or similar SDKs that include push-related symbols. The app validator detects the registration call and the missing entitlement, then issues the warning regardless of whether your code uses the feature.
    Is ITMS-90078 a hard rejection or a warning?
    It is a warning. The build will still upload and pass through to TestFlight or App Review; the warning email arrives separately. Apple has not promoted it to a hard rejection as of May 2026. Treat it as something to fix before submission anyway, because reviewers may ask about it and because the warning makes the binary appear less polished.
    What is the safest way to fix it if I do not want push notifications?
    Remove the SDK that registers for remote notifications, or disable the push module inside it. For Capacitor, that means removing the @capacitor/push-notifications package. For Firebase, removing FirebaseMessaging or its Pods entry. The validator detects the registration call at the binary level; the only way to silence it is to keep the call out of the binary.
    If I do enable push notifications, what do I add?
    Two things. First, enable the Push Notifications capability for your App ID in the Apple Developer portal under Certificates, Identifiers and Profiles. Second, ensure your app's entitlements file contains the aps-environment key with a value of development or production. The Xcode capabilities pane handles both when you toggle Push Notifications on in the Signing and Capabilities tab.

    Keep reading

    Scan your app in minutes

    Upload an APK, AAB, or IPA. PTKD returns an OWASP-aligned report with copy-paste fixes.

    Try PTKD free