Skip to content

feat(verify): Customer.io and iOS platform layer - #42

Draft
mahmoud-elmorabea wants to merge 9 commits into
verify-01-corefrom
verify-02-platform-ios
Draft

mahmoud-elmorabea wants to merge 9 commits into
verify-01-corefrom
verify-02-platform-ios

Conversation

@mahmoud-elmorabea

Copy link
Copy Markdown
Contributor

Adds the platform layer verify reads from: the cio CLI's workspaces and profiles, the native project and its framework, and on iOS the Xcode project, simulators, iPhones and their logs.

Part 2 of 8 of verify push, stacked on #41.

🤖 Generated with Claude Code

Reading the cio CLI's workspaces and profiles, finding the native
project and its framework, and on iOS: the Xcode project, simulators and
iPhones, app state, live device logs and notification settings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mahmoud-elmorabea and others added 8 commits October 17, 2026 21:22
- Find the Customer.io package behind a React Native, Expo or Flutter app,
  and the CustomerIO.initialize calls in its JavaScript, TypeScript or Dart.
- Resolve settings with xcodebuild when an app or extension target has no
  bundle id in the pbxproj (set only in .xcconfig files).
- List a workspace's source keys, and find which workspace a key belongs to.
- Read the key the SDK runs with on iOS from its store's file name, and the
  extension's key from its sources where it is a literal.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
An app that changed its key keeps a store for the old one, and the first
one listed could be stale: its identity and key are not the app's.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Finding which workspace a stray key belongs to meant reading every source of
every workspace: one workspace held 101 sources, and the calls slowed to 30s
each.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The SDK's own delivery_context.json names the identified user (and the key, when the
app opts into background delivery) ahead of the CDP layer's store; the stores that were
there at all are said apart from what they held. The native SDK's version comes from
Podfile.lock or Package.resolved, and only a major the readers were checked against is
known. Lines can carry a ' || ev=… key=value' tail, and the SDK's sdk.state line says its
version, user, token and key prefix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Once JavaScript starts, a React Native app sends every SDK line to its JS console
under React Native's subsystem, prefixed [CIO], and none under the SDK's own: the
simulator's capture missed all 181 of them in a launch. The capture now asks for them,
and they read as the SDK's own lines.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lize

A Flutter sample whose lib/src links to another sample's sources was
reported as never initializing the SDK. Each folder is read once, by
its real path, so a link back up the tree ends.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant