iOS devices: `open <app> <url>` never delivers the URL, `--payload-url` is passed after the bundle ID
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 88/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- ios, typescript
- Domain
- cli, mobile-dev, testing-qa
Research direction
Start in packages/platform-apple/src/core/physical-device-coredevice.ts at the launch-argument construction, then compare it with the expectations in packages/platform-apple/src/core/tests/apps.test.ts. Run the relevant apps tests and verify that the payload URL is treated as a launch option and delivered on physical iOS devices while launch arguments remain supported.
Written by the indexing model from the issue text.
Description
Summary
On a physical iPhone, open <bundle-id> <url> and Maestro openLink launch the app, but the app never receives the URL. The same call with devicectl works when --payload-url comes before the bundle ID.
Cause
The launch arguments put --payload-url after the bundle ID:
devicectl treats everything after the bundle ID as program arguments for the app:
USAGE: devicectl device process launch [<options>] --device <...> <bundle-identifier-or-path> [<command-line-arguments> ...]
So the app receives --payload-url <url> in its argv and opens no link. The unit test pins the same order:
Repro
Same device, same app state (app running on its first screen), custom-scheme link to a screen with a visible marker:
| Call | Link opens |
|---|---|
devicectl device process launch --device <udid> <bundle-id> --payload-url <url> |
no |
devicectl device process launch --device <udid> --payload-url <url> <bundle-id> |
yes |
agent-device open <bundle-id> <url> --platform ios --udid <udid> |
no |
A cold launch with --payload-url before the bundle ID also opens the link.
Possible fix
Push --payload-url <url> before the bundle ID, and keep -- <launch args> after it. Update the two expectations in apps.test.ts.
Environment
- agent-device 0.21.14. Same code in 0.21.15 and on
mainat 16e0757 - iPhone 14 Pro, iOS 26.2, USB, CoreDevice backend
- Xcode 26.4
- Dominant language
- TypeScript
- Stars
- 4.7k
- Forks
- 304
- Avg merge
- 11h 31m
- Merged PRs (30d)
- 513
Getting set up
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from callstack/agent-device
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
callstack/agent-device#2995 ·
Maintainers usually reply within 1 day
-
Proxy lease refuses every iOS install/open: connection platform 'ios' compared with internal 'apple'Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
callstack/agent-device#2962 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
callstack/agent-device#1869 ·
Maintainers usually reply within 1 day
-
Maestro `eraseText` fails on real Android devices: `test` and `replay` cannot opt in to the test IMEOpen
Difficulty 3/5 1-2 days Newbie friendliness 74/100
callstack/agent-device#2997 ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 52/100
callstack/agent-device#2996 · 1 comment ·
Maintainers usually reply within 1 day
All issues in callstack/agent-device
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
microsoft/vscode-livepreview#876 ·
Maintainers usually reply within 1 day
-
needs-triage
Difficulty 1/5 Under an hour Newbie friendliness 90/100
JustJarethB/invoicer#54 ·
-
ICP 1.2.0 shows a scheduled task's interval in milliseconds under the label "Interval (In seconds)"OpenNeeds Triage Type/Bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
wso2/product-integrator#2585 ·
Maintainers usually reply within 1 day
-
check:passed streams:add
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
design
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
MTES-MCT/monitor-field#119 ·
Maintainers usually reply within 1 day