Skip to content

fix(mobile): declare iOS memory entitlements for every build profile - #7750

Merged
iscekic merged 2 commits into
mainfrom
fix/mobile-ios-memory-entitlements
Oct 16, 2026
Merged

iscekic merged 2 commits into
mainfrom
fix/mobile-ios-memory-entitlements

Conversation

@iscekic

@iscekic iscekic commented Oct 16, 2026

Copy link
Copy Markdown
Collaborator

Summary

The kilo-app Release iOS build fails since yesterday evening. Xcode rejects the App Store profile for com.kilocode.kiloapp: the profile does not include the Extended Virtual Addressing and Increased Memory Limit capabilities.

Root cause:

  • The llama.rn config plugin adds com.apple.developer.kernel.extended-virtual-addressing and com.apple.developer.kernel.increased-memory-limit only when EAS_BUILD_PROFILE is production.
  • A development build or an eas credentials run evaluates the config without these entitlements.
  • EAS then syncs the App ID capabilities from that config and disables both capabilities.
  • The App Store profile became invalid, EAS made a new one without the two capabilities, and every production build since fails.

This change declares both entitlements in ios.entitlements for every profile and turns off the plugin's profile-dependent copy (enableEntitlements: false). Production entitlements do not change.

Follow-up outside the repository

The CI build does not sync capabilities for the main target. In eas-cli, the App Store Connect key loads only after the first target is set up. So the App ID still needs the two capabilities turned on again once, with an interactive Apple login.

Verification

  • npx expo config --json now resolves both entitlements for no profile, development, and production. On main, no profile and development resolve neither entitlement.
  • pnpm assert:config with EAS_BUILD_PROFILE=production passes.

llama.rn adds the extended-virtual-addressing and increased-memory-limit entitlements only under the production profile. A development build or an eas credentials run then syncs the com.kilocode.kiloapp App ID without them, EAS disables both capabilities, and the regenerated App Store profile no longer matches the production entitlements.
@iscekic iscekic self-assigned this Oct 16, 2026
Comment thread apps/mobile/app.config.ts Resolved
@kilo-code-bot

kilo-code-bot Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Executive Summary

The incremental commit only rewords the llama.rn plugin comment in apps/mobile/app.config.ts; the wording now accurately states that each listed option disables an on-by-default plugin behavior, resolving the prior suggestion.

Files Reviewed (1 file)
  • apps/mobile/app.config.ts

Notes

  • Reworded comment at apps/mobile/app.config.ts:328-333 (docs(mobile): clarify llama.rn plugin option comment) correctly describes enableEntitlements: false, forceCxx20: false, and enableOpenCLAndHexagon: false as turning off on-by-default behaviors. The previously flagged inaccuracy is fixed.
  • No code, entitlement, or configuration behavior changed in this incremental diff; the kernel entitlements declared in ios.entitlements (lines 211-212) remain as reviewed previously.
Previous Review Summary (commit 3c083cd)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit 3c083cd)

Status: 1 Issue Found | Recommendation: Address before merge

Executive Summary

The iOS entitlement fix is functionally sound for the EAS App ID sync; the only finding is an inaccurate plugin-option comment in apps/mobile/app.config.ts.

Overview

Severity Count
CRITICAL 0
WARNING 0
SUGGESTION 1
Issue Details (click to expand)

SUGGESTION

File Line Issue
apps/mobile/app.config.ts 328 Reworded comment groups enableEntitlements with the two default-off options; it is on by default

Fix these issues in Kilo Cloud

Files Reviewed (1 file)
  • apps/mobile/app.config.ts - 1 issue

Notes

  • Declaring both com.apple.developer.kernel.* entitlements unconditionally in ios.entitlements and disabling the plugin's profile-dependent copy is a correct fix for the App ID capability sync described in the PR. Production entitlements are unchanged.
  • The container may still lack the two capabilities on the com.kilocode.kiloapp App ID until the interactive Apple step noted in the PR description is done; until then, non-production builds that sync capabilities may also be affected. This is a follow-up outside the repository, not a code defect.
  • I could not read the vendored llama.rn 0.12.9 Expo config plugin in this checkout, so the enableEntitlements default is inferred from the PR's own root-cause statement (the plugin was already injecting the entitlements before this change).

Reviewed by deepseek-v4.1-flash · Input: 35.7K · Output: 3.4K · Cached: 174.3K

Review guidance: REVIEW.md from base branch main

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.

2 participants