apache / apache/cordova-ios

Support for iOS App Extension targets in plugin.xml (Notification Service Extension, Share Extension, etc.)

Open
#1,641 0 comments 1 reaction 0 assignees View on GitHub
Dominant language
JavaScript
Stars
2.2k
Forks
1k
Avg merge
12h 11m
Merged PRs (30d)
18

Description

Summary

There is currently no way to declare an iOS App Extension target (e.g., Notification Service Extension, Share Extension, Widget Extension) in plugin.xml. Every plugin that needs an extension target must
manually manipulate the Xcode project file (project.pbxproj) using the xcode npm module in a hook script. This is fragile, error-prone, and creates significant maintenance burden for plugin authors. Or even worse, write manual instructions for clients on how to create a separate target using Xcode.

Motivation

Push notification SDKs (Infobip, OneSignal, Airship, etc.) require a Notification Service Extension to support:
- Rich push notifications (images, video, GIFs on the lock screen)
- Accurate delivery reporting (the extension runs even when the main app is killed)
- Content modification before display

Apple requires this to be a separate target in the Xcode project with its own bundle ID, entitlements, Info.plist, and source files. Currently, every plugin author must reimplement the same complex Xcode
project manipulation independently.

It would be great if all this could be handled by using config.xml file. Expo tools for React Native already has this support so idea can be taken from them.

BR, Ivan.

Contributor guide

Open the contributing guide

Research direction

Start by examining plugin.xml and config.xml handling, then trace how the Xcode project.pbxproj is generated or modified. Compare the approach with Expo tools and existing xcode npm hook scripts. Done means a plugin can declare an app extension through configuration and receive a separate target with its bundle ID, entitlements, Info.plist, and source files without manual project manipulation.

Written by the indexing model from the issue text.

Assessment

Tech stack
ios, javascript
Domain
build-system, mobile
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.