Skip to content

fix(mobile): push gating and personal-team hardening for Android PR#3643

Open
bmdavis419 wants to merge 2 commits into
android-dev-pr-3514from
fix/android-pr-push-gating
Open

fix(mobile): push gating and personal-team hardening for Android PR#3643
bmdavis419 wants to merge 2 commits into
android-dev-pr-3514from
fix/android-pr-push-gating

Conversation

@bmdavis419

@bmdavis419 bmdavis419 commented Jul 2, 2026

Copy link
Copy Markdown

PR into #3579 carrying the fixes from #3575 that its snapshot of that branch missed (it absorbed an older version of fix/mobile-device-builds-and-android-ui).

What's included

Push registration gating for Personal Team builds (cherry-picked from #3575's 2e5b83f4c):

  • New agent-awareness/capabilities.ts with supportsAgentAwarenessPush(), driven by extra.iosPersonalTeamBuild
  • Relay device registration payload forces liveActivitiesEnabled/notificationsEnabled off when push is unsupported (+ test)
  • Settings switches for Device Notifications and Live Activity Updates disabled/forced-off on Personal Team builds

Hardening on top:

  • nativePushTokenRegistration now also checks supportsAgentAwarenessPush(), so Personal Team builds never call getDevicePushTokenAsync() without the aps-environment entitlement (previously only the payload was gated — a build with previously-granted permission would still attempt token acquisition and could stall waiting on didRegisterForRemoteNotifications)
  • T3CODE_IOS_PERSONAL_TEAM_BUNDLE_ID validated as a reverse-DNS identifier instead of just non-empty
  • extra.iosPersonalTeamBuild exposed in the Expo config (required for the runtime gating above)
  • Comment documenting that the appleSignIn: !isIosPersonalTeamBuild gate on the Clerk plugin is load-bearing (the .cjs entitlements plugin runs before plugins earlier in the array, so it can't strip Clerk's entitlement)
  • Restored react-native-keyboard-controller 1.21.7 — main bumped it in [codex] Upgrade Legend List chat scrolling #3545; the 1.21.6 pin here is a stale carryover that would silently downgrade it at merge

Verification

  • tsc --noEmit passes
  • agent-awareness tests pass (28/28)
  • The equivalent merged state was built as a release APK and verified running on a Pixel 10 Pro Fold

Supersedes #3575, which is now closed.

🤖 Generated with Claude Code


Open in Devin Review

Note

Gate push notifications and live activity updates for iOS Personal Team builds

  • Adds supportsAgentAwarenessPush helper in capabilities.ts that returns false when Constants.expoConfig.extra.iosPersonalTeamBuild is true.
  • nativePushTokenRegistration skips permission/token requests and returns pushToken: null when push is unsupported; relay registration payload sets liveActivitiesEnabled and notificationsEnabled to false.
  • Device Notifications and Live Activity Updates switches in settings/index.tsx are disabled and show false when push is unavailable.
  • Build config validation in app.config.ts now enforces a valid reverse-DNS format for T3CODE_IOS_PERSONAL_TEAM_BUNDLE_ID when T3CODE_IOS_PERSONAL_TEAM=1.
  • Behavioral Change: Personal Team builds will always report push and live activity features as disabled in relay registrations and settings UI.

Macroscope summarized 4c5185e.

bmdavis419 and others added 2 commits July 1, 2026 20:09
- Validate T3CODE_IOS_PERSONAL_TEAM_BUNDLE_ID as a reverse-DNS identifier
- Expose extra.iosPersonalTeamBuild so runtime capability gating works
- Gate native APNs token acquisition on supportsAgentAwarenessPush() so
  Personal Team builds never call getDevicePushTokenAsync without the
  aps-environment entitlement
- Document why appleSignIn gating on the Clerk plugin is load-bearing
- Restore react-native-keyboard-controller 1.21.7 (main bumped it in #3545;
  1.21.6 here was a stale pin)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 2, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: ec45594b-5676-438f-92d6-38992d8d92db

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/android-pr-push-gating

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Jul 2, 2026
@macroscopeapp

macroscopeapp Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR gates push notification functionality for personal team builds by propagating a config flag to multiple code paths. While well-tested, changes that control feature availability for users warrant human review to verify the intended scope.

You can customize Macroscope's approvability policy. Learn more.

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

Labels

size:M 30-99 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant