vybekiit 0.7.26 → 0.7.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/dist/bin.js +3910 -1300
  2. package/dist/global-guidance/language.md +443 -0
  3. package/dist/global-skills/add-ai/SKILL.md +1 -1
  4. package/dist/global-skills/add-analytics/SKILL.md +1 -1
  5. package/dist/global-skills/add-blog/SKILL.md +1 -1
  6. package/dist/global-skills/add-crud/SKILL.md +1 -1
  7. package/dist/global-skills/add-files/SKILL.md +1 -1
  8. package/dist/global-skills/add-images/SKILL.md +1 -1
  9. package/dist/global-skills/add-language/SKILL.md +1 -1
  10. package/dist/global-skills/add-notifications/SKILL.md +1 -1
  11. package/dist/global-skills/add-realtime/SKILL.md +1 -1
  12. package/dist/global-skills/add-route/SKILL.md +1 -1
  13. package/dist/global-skills/add-search/SKILL.md +1 -1
  14. package/dist/global-skills/add-signin/SKILL.md +1 -1
  15. package/dist/global-skills/add-teams/SKILL.md +1 -1
  16. package/dist/global-skills/add-upload/SKILL.md +1 -1
  17. package/dist/global-skills/aws-cdk/SKILL.md +19 -5
  18. package/dist/global-skills/aws-cdk/references/fast-deployments.md +191 -0
  19. package/dist/global-skills/aws-cdk/references/troubleshooting-deployment.md +16 -0
  20. package/dist/global-skills/aws-cloudformation/SKILL.md +16 -26
  21. package/dist/global-skills/aws-cloudformation/references/check-cloudformation-template-compliance.script.md +7 -3
  22. package/dist/global-skills/aws-cloudformation/references/cloudformation-language-server.md +177 -0
  23. package/dist/global-skills/aws-cloudformation/references/cloudformation-pre-deploy-validation.script.md +8 -2
  24. package/dist/global-skills/aws-cloudformation/references/persist-template-context.script.md +5 -8
  25. package/dist/global-skills/aws-cloudformation/references/retrieve-template-context.script.md +1 -1
  26. package/dist/global-skills/aws-cloudformation/references/security-considerations.md +51 -0
  27. package/dist/global-skills/aws-cloudformation/references/troubleshoot-failed-stack.script.md +138 -0
  28. package/dist/global-skills/aws-cloudformation/references/{validate-cloudformation-template.script.md → validate-with-cfn-lint.script.md} +15 -27
  29. package/dist/global-skills/aws-cloudformation/references/validate-with-cloudformation-validate.script.md +181 -0
  30. package/dist/global-skills/aws-cloudformation/references/validation-tool-selection.md +44 -0
  31. package/dist/global-skills/aws-serverless/SKILL.md +9 -1
  32. package/dist/global-skills/aws-serverless/references/architecture.md +3 -1
  33. package/dist/global-skills/aws-serverless/references/lambda.md +3 -1
  34. package/dist/global-skills/aws-serverless/references/orchestration.md +1 -0
  35. package/dist/global-skills/back-up-my-code/SKILL.md +1 -1
  36. package/dist/global-skills/better-auth-best-practices/SKILL.md +18 -8
  37. package/dist/global-skills/buy-domain/SKILL.md +1 -1
  38. package/dist/global-skills/check-safety/SKILL.md +1 -1
  39. package/dist/global-skills/configure-capabilities/SKILL.md +1 -1
  40. package/dist/global-skills/connect-account/SKILL.md +1 -1
  41. package/dist/global-skills/connect-account-backend/SKILL.md +1 -1
  42. package/dist/global-skills/design-my-data/SKILL.md +1 -1
  43. package/dist/global-skills/doctor/SKILL.md +1 -1
  44. package/dist/global-skills/eas-app-stores/SKILL.md +31 -15
  45. package/dist/global-skills/eas-app-stores/agents/openai.yaml +2 -2
  46. package/dist/global-skills/eas-app-stores/references/ios-app-store.md +37 -32
  47. package/dist/global-skills/eas-app-stores/references/native-ios.md +167 -0
  48. package/dist/global-skills/eas-app-stores/references/play-store.md +3 -7
  49. package/dist/global-skills/eas-app-stores/references/testflight.md +39 -35
  50. package/dist/global-skills/eas-simulator/SKILL.md +48 -26
  51. package/dist/global-skills/eas-simulator/references/controllers.md +32 -3
  52. package/dist/global-skills/eas-simulator/references/run-your-app.md +34 -4
  53. package/dist/global-skills/eas-simulator/references/troubleshooting.md +8 -4
  54. package/dist/global-skills/eas-update/SKILL.md +146 -0
  55. package/dist/global-skills/eas-update/agents/openai.yaml +4 -0
  56. package/dist/global-skills/expo-animation/RECIPES.md +2 -2
  57. package/dist/global-skills/expo-animation/SKILL.md +9 -2
  58. package/dist/global-skills/expo-brownfield/SKILL.md +18 -11
  59. package/dist/global-skills/expo-brownfield/agents/openai.yaml +2 -2
  60. package/dist/global-skills/expo-brownfield/references/brownfield-integrated.md +94 -69
  61. package/dist/global-skills/expo-brownfield/references/brownfield-isolated.md +40 -42
  62. package/dist/global-skills/expo-brownfield/references/comparison.md +5 -5
  63. package/dist/global-skills/expo-brownfield/references/feature-integration.md +163 -0
  64. package/dist/global-skills/expo-brownfield/references/troubleshooting.md +17 -17
  65. package/dist/global-skills/expo-brownfield/references/version-compatibility.md +40 -0
  66. package/dist/global-skills/expo-data-fetching/SKILL.md +27 -6
  67. package/dist/global-skills/expo-design-system/SKILL.md +27 -7
  68. package/dist/global-skills/expo-design-system/references/audit.md +7 -2
  69. package/dist/global-skills/expo-design-system/references/native-slop.md +74 -0
  70. package/dist/global-skills/expo-examples/SKILL.md +0 -1
  71. package/dist/global-skills/expo-examples/references/catalog.md +1 -1
  72. package/dist/global-skills/expo-migrate-module/SKILL.md +21 -10
  73. package/dist/global-skills/expo-migrate-module/references/compatibility.md +80 -23
  74. package/dist/global-skills/expo-migrate-module/references/migration-map.md +162 -11
  75. package/dist/global-skills/expo-native-ui/SKILL.md +25 -16
  76. package/dist/global-skills/expo-native-ui/agents/openai.yaml +2 -2
  77. package/dist/global-skills/expo-native-ui/references/controls.md +5 -46
  78. package/dist/global-skills/expo-native-ui/references/icons.md +21 -2
  79. package/dist/global-skills/expo-native-ui/references/media.md +15 -20
  80. package/dist/global-skills/expo-native-ui/references/visual-effects.md +12 -11
  81. package/dist/global-skills/expo-overview/SKILL.md +17 -12
  82. package/dist/global-skills/expo-router/SKILL.md +5 -3
  83. package/dist/global-skills/expo-router/references/tabs.md +5 -5
  84. package/dist/global-skills/expo-upgrade/SKILL.md +3 -1
  85. package/dist/global-skills/expo-web-to-native/references/false-friends.md +2 -2
  86. package/dist/global-skills/expo-web-to-native/references/native-patterns.md +1 -1
  87. package/dist/global-skills/firebase-ai-logic-basics/SKILL.md +13 -16
  88. package/dist/global-skills/firebase-ai-logic-basics/references/ios_setup.md +4 -5
  89. package/dist/global-skills/firebase-ai-logic-basics/references/usage_patterns_android.md +4 -4
  90. package/dist/global-skills/firebase-ai-logic-basics/references/usage_patterns_web.md +3 -3
  91. package/dist/global-skills/firebase-auth-basics/SKILL.md +11 -6
  92. package/dist/global-skills/firebase-auth-basics/references/client_sdk_android.md +4 -5
  93. package/dist/global-skills/firebase-auth-basics/references/client_sdk_web.md +3 -3
  94. package/dist/global-skills/firebase-auth-basics/references/flutter_setup.md +24 -25
  95. package/dist/global-skills/firebase-auth-basics/references/security_rules.md +4 -2
  96. package/dist/global-skills/firebase-crashlytics/references/android_setup.md +7 -4
  97. package/dist/global-skills/firebase-crashlytics/references/ios_setup.md +2 -3
  98. package/dist/global-skills/firebase-data-connect/SKILL.md +2 -1
  99. package/dist/global-skills/firebase-data-connect/examples.md +4 -4
  100. package/dist/global-skills/firebase-data-connect/reference/config.md +5 -4
  101. package/dist/global-skills/firebase-data-connect/reference/realtime.md +1 -2
  102. package/dist/global-skills/firebase-data-connect/reference/sdk_flutter.md +2 -2
  103. package/dist/global-skills/firebase-data-connect/reference/sdk_ios.md +2 -2
  104. package/dist/global-skills/firebase-data-connect/reference/sdk_web.md +17 -6
  105. package/dist/global-skills/firebase-data-connect/reference/security.md +5 -5
  106. package/dist/global-skills/firebase-data-connect/templates.md +2 -1
  107. package/dist/global-skills/firebase-firestore/SKILL.md +20 -8
  108. package/dist/global-skills/firebase-firestore/references/enterprise/android_sdk_usage.md +5 -4
  109. package/dist/global-skills/firebase-firestore/references/enterprise/data_model.md +12 -3
  110. package/dist/global-skills/firebase-firestore/references/enterprise/indexes.md +16 -18
  111. package/dist/global-skills/firebase-firestore/references/enterprise/provisioning.md +1 -1
  112. package/dist/global-skills/firebase-firestore/references/enterprise/python_sdk_usage.md +5 -1
  113. package/dist/global-skills/firebase-firestore/references/enterprise/web_sdk_usage.md +7 -7
  114. package/dist/global-skills/firebase-firestore/references/standard/android_sdk_usage.md +5 -5
  115. package/dist/global-skills/firebase-firestore/references/standard/flutter_setup.md +4 -4
  116. package/dist/global-skills/firebase-firestore/references/standard/indexes.md +16 -18
  117. package/dist/global-skills/firebase-firestore/references/standard/provisioning.md +1 -1
  118. package/dist/global-skills/firebase-remote-config-basics/SKILL.md +0 -5
  119. package/dist/global-skills/firebase-remote-config-basics/references/android_setup.md +36 -8
  120. package/dist/global-skills/firebase-remote-config-basics/references/ios_setup.md +1 -7
  121. package/dist/global-skills/firebase-security-rules-auditor/SKILL.md +17 -6
  122. package/dist/global-skills/{firebase-firestore/references/standard/security_rules.md → firestore-rules-creation/SKILL.md} +24 -13
  123. package/dist/global-skills/go-live/SKILL.md +1 -1
  124. package/dist/global-skills/grow-my-customers/SKILL.md +23 -0
  125. package/dist/global-skills/harden/SKILL.md +1 -1
  126. package/dist/global-skills/instrument-feature-flags/SKILL.md +25 -25
  127. package/dist/global-skills/instrument-feature-flags/references/adding-feature-flag-code.md +141 -285
  128. package/dist/global-skills/instrument-feature-flags/references/android.md +6 -15
  129. package/dist/global-skills/instrument-feature-flags/references/api.md +4 -11
  130. package/dist/global-skills/instrument-feature-flags/references/best-practices.md +1 -13
  131. package/dist/global-skills/instrument-feature-flags/references/django.md +14 -27
  132. package/dist/global-skills/instrument-feature-flags/references/dotnet.md +20 -79
  133. package/dist/global-skills/instrument-feature-flags/references/elixir.md +1 -9
  134. package/dist/global-skills/instrument-feature-flags/references/flask.md +13 -13
  135. package/dist/global-skills/instrument-feature-flags/references/flutter.md +3 -24
  136. package/dist/global-skills/instrument-feature-flags/references/go.md +3 -15
  137. package/dist/global-skills/instrument-feature-flags/references/ios.md +4 -17
  138. package/dist/global-skills/instrument-feature-flags/references/java.md +5 -13
  139. package/dist/global-skills/instrument-feature-flags/references/laravel.md +13 -17
  140. package/dist/global-skills/instrument-feature-flags/references/next-js.md +25 -32
  141. package/dist/global-skills/instrument-feature-flags/references/nodejs.md +8 -15
  142. package/dist/global-skills/instrument-feature-flags/references/php.md +1 -15
  143. package/dist/global-skills/instrument-feature-flags/references/python.md +2 -15
  144. package/dist/global-skills/instrument-feature-flags/references/react-native.md +13 -15
  145. package/dist/global-skills/instrument-feature-flags/references/react.md +17 -21
  146. package/dist/global-skills/instrument-feature-flags/references/ruby-on-rails.md +37 -83
  147. package/dist/global-skills/instrument-feature-flags/references/ruby.md +2 -15
  148. package/dist/global-skills/instrument-feature-flags/references/rust.md +13 -25
  149. package/dist/global-skills/instrument-feature-flags/references/usage.md +14 -63
  150. package/dist/global-skills/instrument-feature-flags/references/web.md +9 -14
  151. package/dist/global-skills/instrument-product-analytics/SKILL.md +29 -29
  152. package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-hybrid.md +3 -1
  153. package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-ssr.md +3 -1
  154. package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-static.md +3 -1
  155. package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-view-transitions.md +3 -1
  156. package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-ruby-on-rails.md +3 -1
  157. package/dist/global-skills/instrument-product-analytics/references/android.md +72 -107
  158. package/dist/global-skills/instrument-product-analytics/references/angular.md +26 -28
  159. package/dist/global-skills/instrument-product-analytics/references/astro.md +13 -24
  160. package/dist/global-skills/instrument-product-analytics/references/configuration.md +45 -63
  161. package/dist/global-skills/instrument-product-analytics/references/django.md +14 -27
  162. package/dist/global-skills/instrument-product-analytics/references/dotnet.md +20 -79
  163. package/dist/global-skills/instrument-product-analytics/references/elixir.md +47 -49
  164. package/dist/global-skills/instrument-product-analytics/references/flask.md +13 -13
  165. package/dist/global-skills/instrument-product-analytics/references/flutter.md +60 -90
  166. package/dist/global-skills/instrument-product-analytics/references/go.md +17 -56
  167. package/dist/global-skills/instrument-product-analytics/references/identify-users.md +15 -15
  168. package/dist/global-skills/instrument-product-analytics/references/ios.md +11 -15
  169. package/dist/global-skills/instrument-product-analytics/references/laravel.md +13 -17
  170. package/dist/global-skills/instrument-product-analytics/references/next-js.md +25 -32
  171. package/dist/global-skills/instrument-product-analytics/references/nuxt-js-3-6.md +13 -27
  172. package/dist/global-skills/instrument-product-analytics/references/nuxt-js.md +14 -28
  173. package/dist/global-skills/instrument-product-analytics/references/php.md +33 -84
  174. package/dist/global-skills/instrument-product-analytics/references/posthog-python.md +229 -9
  175. package/dist/global-skills/instrument-product-analytics/references/python.md +415 -106
  176. package/dist/global-skills/instrument-product-analytics/references/react-native.md +161 -155
  177. package/dist/global-skills/instrument-product-analytics/references/react-router-v6.md +12 -33
  178. package/dist/global-skills/instrument-product-analytics/references/react-router-v7-data-mode.md +15 -33
  179. package/dist/global-skills/instrument-product-analytics/references/react-router-v7-declarative-mode.md +12 -33
  180. package/dist/global-skills/instrument-product-analytics/references/react-router-v7-framework-mode.md +26 -41
  181. package/dist/global-skills/instrument-product-analytics/references/ruby-on-rails.md +37 -83
  182. package/dist/global-skills/instrument-product-analytics/references/ruby.md +48 -108
  183. package/dist/global-skills/instrument-product-analytics/references/svelte.md +18 -24
  184. package/dist/global-skills/instrument-product-analytics/references/tanstack-start.md +17 -19
  185. package/dist/global-skills/instrument-product-analytics/references/usage.md +14 -63
  186. package/dist/global-skills/instrument-product-analytics/references/vue-js.md +29 -28
  187. package/dist/global-skills/manifest.json +8 -2
  188. package/dist/global-skills/mongodb-search-and-ai/SKILL.md +28 -37
  189. package/dist/global-skills/mongodb-search-and-ai/references/automated-embedding.md +438 -0
  190. package/dist/global-skills/mongodb-search-and-ai/references/hybrid-search.md +60 -4
  191. package/dist/global-skills/mongodb-search-and-ai/references/vector-search.md +46 -108
  192. package/dist/global-skills/neon/SKILL.md +207 -213
  193. package/dist/global-skills/neon/references/auth.md +12 -0
  194. package/dist/global-skills/neon/references/claimable-neon.md +10 -14
  195. package/dist/global-skills/neon/references/function-triggers.md +53 -0
  196. package/dist/global-skills/neon/references/logs-loki.md +61 -0
  197. package/dist/global-skills/neon/references/parse-env.md +32 -0
  198. package/dist/global-skills/neon/references/sdk.md +7 -0
  199. package/dist/global-skills/neon-ai-gateway/SKILL.md +14 -16
  200. package/dist/global-skills/neon-auth/SKILL.md +155 -0
  201. package/dist/global-skills/neon-auth/references/managed-auth.md +173 -0
  202. package/dist/global-skills/neon-auth/references/self-managed.md +25 -0
  203. package/dist/global-skills/neon-functions/SKILL.md +159 -84
  204. package/dist/global-skills/neon-functions/references/ai-sdk.md +4 -6
  205. package/dist/global-skills/neon-functions/references/function-triggers.md +249 -0
  206. package/dist/global-skills/neon-functions/references/mastra-studio.md +3 -3
  207. package/dist/global-skills/neon-functions/references/mcp.md +1 -1
  208. package/dist/global-skills/neon-functions/references/production-hardening.md +340 -0
  209. package/dist/global-skills/neon-functions/references/sse.md +8 -5
  210. package/dist/global-skills/neon-object-storage/SKILL.md +10 -11
  211. package/dist/global-skills/neon-postgres/SKILL.md +120 -17
  212. package/dist/global-skills/neon-postgres/references/full-text-search.md +99 -0
  213. package/dist/global-skills/neon-postgres/references/hybrid-search.md +90 -0
  214. package/dist/global-skills/neon-postgres/references/lakebase-search-drizzle.md +172 -0
  215. package/dist/global-skills/neon-postgres/references/vector-search.md +137 -0
  216. package/dist/global-skills/neon-postgres-branches/SKILL.md +3 -3
  217. package/dist/global-skills/neon-postgres-egress-optimizer/SKILL.md +1 -1
  218. package/dist/global-skills/onboarding/SKILL.md +16 -14
  219. package/dist/global-skills/plan-my-idea/SKILL.md +1 -1
  220. package/dist/global-skills/publish-app/SKILL.md +1 -1
  221. package/dist/global-skills/publish-extension/SKILL.md +1 -1
  222. package/dist/global-skills/resend/SKILL.md +4 -2
  223. package/dist/global-skills/resend/references/broadcasts.md +6 -1
  224. package/dist/global-skills/resend/references/receiving.md +29 -10
  225. package/dist/global-skills/resend/references/sending/email-management.md +14 -4
  226. package/dist/global-skills/resend/references/topics.md +9 -6
  227. package/dist/global-skills/resend/references/usage.md +117 -0
  228. package/dist/global-skills/resend/references/webhooks.md +59 -2
  229. package/dist/global-skills/reset-password/SKILL.md +1 -1
  230. package/dist/global-skills/save-data/SKILL.md +1 -1
  231. package/dist/global-skills/setup-email/SKILL.md +1 -1
  232. package/dist/global-skills/setup-payments/SKILL.md +1 -1
  233. package/dist/global-skills/setup-sms/SKILL.md +1 -1
  234. package/dist/global-skills/sign-in-with-email-link/SKILL.md +1 -1
  235. package/dist/global-skills/sign-in-with-google/SKILL.md +1 -1
  236. package/dist/global-skills/sign-in-with-phone/SKILL.md +1 -1
  237. package/dist/global-skills/stripe-best-practices/SKILL.md +35 -29
  238. package/dist/global-skills/stripe-best-practices/references/billing.md +9 -2
  239. package/dist/global-skills/stripe-best-practices/references/payments.md +4 -2
  240. package/dist/global-skills/stripe-best-practices/references/security.md +3 -1
  241. package/dist/global-skills/stripe-best-practices/references/tax.md +39 -20
  242. package/dist/global-skills/supabase/SKILL.md +6 -0
  243. package/dist/global-skills/track-errors/SKILL.md +1 -1
  244. package/dist/global-skills/update-kit/SKILL.md +1 -1
  245. package/dist/global-skills/use-railway/SKILL.md +42 -22
  246. package/dist/global-skills/use-railway/references/analyze-db.md +7 -6
  247. package/dist/global-skills/use-railway/references/cloud-agents.md +70 -0
  248. package/dist/global-skills/use-railway/references/configure.md +17 -2
  249. package/dist/global-skills/use-railway/references/databases.md +107 -0
  250. package/dist/global-skills/use-railway/references/deploy.md +5 -5
  251. package/dist/global-skills/use-railway/references/feature-flags.md +25 -13
  252. package/dist/global-skills/use-railway/references/iac.md +66 -77
  253. package/dist/global-skills/use-railway/references/operate.md +26 -3
  254. package/dist/global-skills/use-railway/references/request.md +31 -23
  255. package/dist/global-skills/use-railway/references/setup.md +16 -5
  256. package/dist/global-skills/use-railway/references/tracing.md +261 -0
  257. package/dist/global-skills/use-railway/references/usage.md +52 -0
  258. package/dist/global-skills/validate-my-idea/SKILL.md +54 -0
  259. package/dist/global-skills/{feedback → vybekiit-feedback}/SKILL.md +17 -13
  260. package/dist/global-skills/watch-my-app/SKILL.md +53 -0
  261. package/dist/global-skills/wire-auth/SKILL.md +1 -1
  262. package/dist/global-skills/wire-database/SKILL.md +1 -1
  263. package/dist/global-skills/wire-email/SKILL.md +1 -1
  264. package/dist/global-skills/wire-payments/SKILL.md +1 -1
  265. package/dist/global-skills/workers-best-practices/SKILL.md +36 -103
  266. package/dist/global-skills/workers-best-practices/references/configuration.md +139 -0
  267. package/dist/global-skills/workers-best-practices/references/platform-apis.md +51 -0
  268. package/dist/global-skills/workers-best-practices/references/{rules.md → runtime-patterns.md} +13 -137
  269. package/dist/global-skills/wrangler/SKILL.md +48 -901
  270. package/dist/global-skills/xcode-project-setup/scripts/xcode_spm_setup/Sources/main.swift +19 -15
  271. package/package.json +9 -8
  272. package/dist/global-skills/expo-native-ui/references/animations.md +0 -220
  273. package/dist/global-skills/firebase-firestore/references/enterprise/security_rules.md +0 -577
  274. package/dist/global-skills/workers-best-practices/references/review.md +0 -174
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: back-up-my-code
3
- description: "the builder's project is saved on GitHub so they never lose work. Use when the builder says something like: save my code; back up; put it on github."
3
+ description: "the builder's project is saved on GitHub so they never lose work. Use when the vibe coder says something like: save my code; back up; put it on github."
4
4
  metadata:
5
5
  vybekiit-generated: buyer-skill-stub
6
6
  ---
@@ -5,7 +5,17 @@ description: Configure Better Auth server and client, set up database adapters,
5
5
 
6
6
  # Better Auth Integration Guide
7
7
 
8
- **Always consult [better-auth.com/docs](https://better-auth.com/docs) for code examples and latest API.**
8
+ ## Documentation Version
9
+
10
+ Use documentation that matches the Better Auth version installed in the project. APIs and plugin names can differ across maintained release lines.
11
+
12
+ 1. Prefer a version explicitly named by the user.
13
+ 2. Otherwise, inspect the resolved `better-auth` version in the lockfile, falling back to the package manifest when no lockfile is available.
14
+ 3. When the Better Auth MCP is available, call `get_doc` with `/llms.txt` to resolve that package version to a documentation identifier. Pass the identifier to every `search_docs` call and pass result paths to `get_doc` unchanged.
15
+ 4. Without MCP, start at [better-auth.com/llms.txt](https://better-auth.com/llms.txt) and follow the matching version index.
16
+ 5. Use the latest documentation only when the project version cannot be determined or the user explicitly asks about the latest release or an upgrade.
17
+
18
+ When planning an upgrade, separate guidance for the currently installed version from guidance for the target version.
9
19
 
10
20
  ---
11
21
 
@@ -16,9 +26,9 @@ description: Configure Better Auth server and client, set up database adapters,
16
26
  3. Create `auth.ts` with database + config
17
27
  4. Create route handler for your framework
18
28
  5. Run migrations:
19
- - **Built-in adapter:** `npx @better-auth/cli@latest migrate`
20
- - **Drizzle:** `npx @better-auth/cli@latest generate --output src/db/auth-schema.ts` then `npx drizzle-kit push` (dev) or `npx drizzle-kit generate && npx drizzle-kit migrate` (prod)
21
- - **Prisma:** `npx @better-auth/cli@latest generate --output prisma/schema.prisma` then `npx prisma migrate dev`
29
+ - **Built-in adapter:** `npx auth@latest migrate`
30
+ - **Drizzle:** `npx auth@latest generate --output src/db/auth-schema.ts` then `npx drizzle-kit push` (dev) or `npx drizzle-kit generate && npx drizzle-kit migrate` (prod)
31
+ - **Prisma:** `npx auth@latest generate --output prisma/schema.prisma` then `npx prisma migrate dev`
22
32
  6. Verify: call `GET /api/auth/ok` — should return `{ status: "ok" }`
23
33
 
24
34
  ---
@@ -35,9 +45,9 @@ Only define `baseURL`/`secret` in config if env vars are NOT set.
35
45
  CLI looks for `auth.ts` in: `./`, `./lib`, `./utils`, or under `./src`. Use `--config` for custom path.
36
46
 
37
47
  ### CLI Commands
38
- - `npx @better-auth/cli@latest migrate` - Apply schema (built-in adapter)
39
- - `npx @better-auth/cli@latest generate` - Generate schema for Prisma/Drizzle
40
- - `npx @better-auth/cli mcp --cursor` - Add MCP to AI tools
48
+ - `npx auth@latest migrate` - Apply schema (built-in adapter)
49
+ - `npx auth@latest generate` - Generate schema for Prisma/Drizzle
50
+ - `npx auth@latest mcp --cursor` - Add MCP to AI tools
41
51
 
42
52
  **Re-run after adding/changing plugins.**
43
53
 
@@ -179,4 +189,4 @@ For separate client/server projects: `createAuthClient<typeof auth>()`.
179
189
  - [Options Reference](https://better-auth.com/docs/reference/options)
180
190
  - [LLMs.txt](https://better-auth.com/llms.txt)
181
191
  - [GitHub](https://github.com/better-auth/better-auth)
182
- - [Init Options Source](https://github.com/better-auth/better-auth/blob/main/packages/core/src/types/init-options.ts)
192
+ - [Init Options Source](https://github.com/better-auth/better-auth/blob/main/packages/core/src/types/init-options.ts)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: buy-domain
3
- description: "the app uses the builder's own web address instead of a temporary one. Use when the builder says something like: get a domain; buy a web address; my own url."
3
+ description: "the app uses the builder's own web address instead of a temporary one. Use when the vibe coder says something like: get a domain; buy a web address; my own url."
4
4
  metadata:
5
5
  vybekiit-generated: buyer-skill-stub
6
6
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: check-safety
3
- description: "confirm the app is protected end-to-end before ship — abuse, database safety, and every. Use when the builder says something like: am i ready to ship; is my app safe; did we cover security."
3
+ description: "confirm the app is protected end-to-end before ship — abuse, database safety, and every. Use when the vibe coder says something like: am i ready to ship; is my app safe; did we cover security."
4
4
  metadata:
5
5
  vybekiit-generated: buyer-skill-stub
6
6
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: configure-capabilities
3
- description: "the app has **only the permissions it needs** — the builder never thinks about Info.plist, Android manifest, or Expo plugins. Use when the builder says something like: camera; location permission; notifications permission."
3
+ description: "the app has **only the permissions it needs** — the builder never thinks about Info.plist, Android manifest, or Expo plugins. Use when the vibe coder says something like: camera; location permission; notifications permission."
4
4
  metadata:
5
5
  vybekiit-generated: buyer-skill-stub
6
6
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: connect-account
3
- description: "people can create accounts and sign in **inside the app**. Use when the builder says something like: sign in; log in; create accounts; add users; forgot password; reset password."
3
+ description: "people can create accounts and sign in **inside the app**. Use when the vibe coder says something like: sign in; log in; create accounts; add users; forgot password; reset password."
4
4
  metadata:
5
5
  vybekiit-generated: buyer-skill-stub
6
6
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: connect-account-backend
3
- description: "people can sign in from the phone app or extension. Use when the builder says something like: connect account backend."
3
+ description: "people can sign in from the phone app or extension. Use when the vibe coder says something like: connect account backend."
4
4
  metadata:
5
5
  vybekiit-generated: buyer-skill-stub
6
6
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: design-my-data
3
- description: "figure out what the app should remember before wiring storage. Use when the builder says something like: design my database; what data do i need; what should my app remember."
3
+ description: "figure out what the app should remember before wiring storage. Use when the vibe coder says something like: design my database; what data do i need; what should my app remember."
4
4
  metadata:
5
5
  vybekiit-generated: buyer-skill-stub
6
6
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: doctor
3
- description: "find out why something isn't working and fix it — without making the builder debug. Use when the builder says something like: it's broken; nothing works; get an error; check my app."
3
+ description: "find out why something isn't working and fix it — without making the builder debug. Use when the vibe coder says something like: it's broken; nothing works; get an error; check my app."
4
4
  metadata:
5
5
  vybekiit-generated: buyer-skill-stub
6
6
  ---
@@ -1,15 +1,24 @@
1
1
  ---
2
2
  name: eas-app-stores
3
- description: EAS service (paid). Deploy Expo apps to the app stores with EAS - build and submit to the iOS App Store, Google Play Store, and TestFlight, configure eas.json build and submit profiles, manage app versions and build numbers, and publish App Store metadata and ASO. Use whenever the user wants to deploy, release, or ship an app to production or the app stores, is preparing a production build, running eas build or eas submit, shipping to TestFlight, bumping version or build numbers, or setting up store listing metadata. For deploying an Expo website or API routes, use the eas-hosting skill.
4
- version: 1.0.0
3
+ description: EAS service (paid). Build and submit iOS and Android apps with EAS to TestFlight, the App Store, or Google Play. Supports Expo and other React Native projects, plus existing native apps. Use for eas.json setup, release pipelines, signing, app versions and build numbers, store submissions, and listing metadata. For Expo websites and API routes, use eas-hosting; for adding React Native screens to a native app, use expo-brownfield.
4
+ version: 1.1.0
5
5
  license: MIT
6
6
  ---
7
7
 
8
8
  # App Store Deployment
9
9
 
10
- > **EAS service - costs apply.** This skill uses Expo Application Services (EAS), a paid product with free-tier limits. `eas build` and `eas submit` consume your plan's build minutes, and store submission requires paid Apple Developer and Google Play accounts. Review https://expo.dev/pricing before running cloud commands.
10
+ > **EAS service - costs apply.** Cloud builds use EAS plan resources, and EAS services have free-tier and paid-plan limits. Apple Developer and Google Play memberships are separate. Check https://expo.dev/pricing for the requested service.
11
11
 
12
- This skill covers building and releasing Expo apps to the iOS App Store, Google Play Store, and TestFlight using EAS (Expo Application Services). For deploying an Expo website or API routes to EAS Hosting, use the `eas-hosting` skill.
12
+ This skill covers building and releasing iOS and Android apps with EAS: Expo and other React Native projects, plus existing native apps. EAS is a delivery service; native apps can use it without adding Expo or React Native to their runtime. The native setup walkthrough currently covers SwiftUI/UIKit on iOS.
13
+
14
+ ## Choose the project path
15
+
16
+ - **SwiftUI/UIKit app with no React Native runtime:** read [references/native-ios.md](references/native-ios.md) before changing its build configuration. Keep the Xcode project and Swift code as the app's source of truth. The Expo/React Native quick-start and development-client examples below do not apply to this path.
17
+ - **Native Android app with no React Native runtime:** preserve its existing native build setup. See [references/play-store.md](references/play-store.md) for submission; the Swift/iOS setup instructions do not apply. A dedicated native Android setup walkthrough is not yet included.
18
+ - **Expo/React Native app:** use the quick-start below, then the relevant store reference.
19
+ - **Adding React Native screens to an existing native app:** use `expo-brownfield` for that integration; return here for distribution.
20
+
21
+ Use the archive and icon checks in [references/native-ios.md](references/native-ios.md) during initial native iOS setup, after changing versioning, bundle IDs, or icons, or when diagnosing a rejected upload. Routine releases follow the EAS build/submit flow and the processing and availability checks in [references/testflight.md](references/testflight.md). A successful EAS build or a queued submission does not establish Apple acceptance, tester access, or an App Store release.
13
22
 
14
23
  ## References
15
24
 
@@ -20,8 +29,9 @@ Consult these resources as needed:
20
29
  - ./references/app-store-metadata.md -- Managing App Store metadata and ASO optimization
21
30
  - ./references/play-store.md -- Submitting Android builds to Google Play Store
22
31
  - ./references/ios-app-store.md -- iOS App Store submission and review process
32
+ - ./references/native-ios.md -- Native Swift/SwiftUI/UIKit setup, versioning, and archive verification without an Expo runtime
23
33
 
24
- ## Quick Start
34
+ ## Expo / React Native Quick Start
25
35
 
26
36
  ### Install EAS CLI
27
37
 
@@ -36,7 +46,7 @@ eas login
36
46
  npx eas-cli@latest init
37
47
  ```
38
48
 
39
- This creates `eas.json` with build profiles.
49
+ `eas init` links or creates the EAS project. Run `eas build:configure` to create build profiles in `eas.json`; preserve existing project and store identifiers when a release setup already exists.
40
50
 
41
51
  ## Build Commands
42
52
 
@@ -57,12 +67,12 @@ npx eas-cli@latest build --profile production
57
67
 
58
68
  ```bash
59
69
  # iOS: Build and submit to App Store Connect
60
- npx eas-cli@latest build -p ios --profile production --submit
70
+ npx eas-cli@latest build -p ios --profile production --auto-submit
61
71
 
62
72
  # Android: Build and submit to Play Store
63
- npx eas-cli@latest build -p android --profile production --submit
73
+ npx eas-cli@latest build -p android --profile production --auto-submit
64
74
 
65
- # Shortcut for iOS TestFlight
75
+ # Expo / React Native shortcut for iOS TestFlight
66
76
  npx testflight
67
77
  ```
68
78
 
@@ -72,7 +82,7 @@ Deploying an Expo website or Expo Router API routes to EAS Hosting (`npx expo ex
72
82
 
73
83
  ## EAS Configuration
74
84
 
75
- Standard `eas.json` for production deployments:
85
+ Example for an Expo / React Native project (native Swift profiles are in `references/native-ios.md`):
76
86
 
77
87
  ```json
78
88
  {
@@ -111,7 +121,8 @@ Standard `eas.json` for production deployments:
111
121
 
112
122
  ### iOS
113
123
 
114
- - Use `npx testflight` for quick TestFlight submissions
124
+ - For native Swift apps, use the explicit build/submit flow in `references/native-ios.md`
125
+ - For Expo / React Native apps, `npx testflight` provides a quick TestFlight flow
115
126
  - Configure Apple credentials via `eas credentials`
116
127
  - See ./references/testflight.md for credential setup
117
128
  - See ./references/ios-app-store.md for App Store submission
@@ -135,9 +146,11 @@ EAS manages version numbers automatically with `appVersionSource: "remote"`:
135
146
  eas build:version:get
136
147
 
137
148
  # Manually set version
138
- eas build:version:set -p ios --build-number 42
149
+ eas build:version:set -p ios
139
150
  ```
140
151
 
152
+ The version-set command prompts for the value. When setting up or changing native iOS versioning, or diagnosing a duplicate build number, inspect the archived `CFBundleVersion`: the remote counter alone does not prove that Xcode used it.
153
+
141
154
  ## Monitoring
142
155
 
143
156
  ```bash
@@ -145,12 +158,15 @@ eas build:version:set -p ios --build-number 42
145
158
  eas build:list
146
159
 
147
160
  # Check build status
148
- eas build:view
161
+ eas build:view BUILD_ID
149
162
 
150
- # View submission status
151
- eas submit:list
163
+ # Inspect submissions (verified with EAS CLI 23.2.0)
164
+ eas submit:list -p ios --json
165
+ eas submit:view SUBMISSION_ID --json
152
166
  ```
153
167
 
168
+ Check the CLI version before interpreting a missing command: these submission commands are available in 23.2.0 but not in the tested 18.6.0 installation. A pinned `npx eas-cli@23.2.0` invocation can use them without changing the global installation. See `references/testflight.md` for live Apple status and retry guidance. Follow the returned log URLs when the JSON result omits the underlying failure. Report the exact build ID/version and the furthest verified release state.
169
+
154
170
  ## Submitting Feedback
155
171
  If you encounter errors, misleading or outdated information in this skill, report it so Expo can improve:
156
172
  ```bash
@@ -1,4 +1,4 @@
1
1
  interface:
2
2
  display_name: "EAS App Stores"
3
- short_description: "Paid EAS service. Build and submit Expo apps to the iOS App Store, Google Play Store, and TestFlight, with eas.json profiles, versioning, and store metadata"
4
- default_prompt: "Use $eas-app-stores when preparing production EAS builds, store submissions, TestFlight distribution, app-store metadata and ASO, or version and build-number management for an Expo app. For web or API route hosting, use eas-hosting instead."
3
+ short_description: "Paid EAS service. Build and submit iOS and Android apps."
4
+ default_prompt: "Use $eas-app-stores to set up or verify EAS builds, TestFlight and store submissions, signing, versioning, and store metadata for iOS and Android apps: Expo and other React Native projects, plus existing native apps."
@@ -1,5 +1,7 @@
1
1
  # Submitting to iOS App Store
2
2
 
3
+ For native SwiftUI/UIKit apps without a React Native runtime, configure the Xcode/EAS path in [native-ios.md](native-ios.md) first. The signing, App Store Connect, and review stages below apply to both native Swift and Expo/React Native apps.
4
+
3
5
  ## Contents
4
6
 
5
7
  - [Prerequisites](#prerequisites)
@@ -7,6 +9,7 @@
7
9
  - [Submission Commands](#submission-commands)
8
10
  - [App Store Connect Configuration](#app-store-connect-configuration)
9
11
  - [TestFlight vs App Store](#testflight-vs-app-store)
12
+ - [Complete the Public Release](#complete-the-public-release)
10
13
  - [App Review Process](#app-review-process)
11
14
  - [Version and Build Numbers](#version-and-build-numbers)
12
15
  - [Release Options](#release-options)
@@ -39,10 +42,7 @@ This interactive flow helps you:
39
42
 
40
43
  API keys avoid 2FA prompts in CI/CD:
41
44
 
42
- 1. Go to App Store Connect → Users and Access → Keys
43
- 2. Click "+" to create a new key
44
- 3. Select "App Manager" role (minimum for submissions)
45
- 4. Download the `.p8` key file
45
+ Use `eas credentials -p ios` to select the build profile and configure its App Store Connect API key. Reuse a working managed key when one already exists. For an existing local team API key, configure the submit profile explicitly:
46
46
 
47
47
  Configure in `eas.json`:
48
48
 
@@ -60,13 +60,7 @@ Configure in `eas.json`:
60
60
  }
61
61
  ```
62
62
 
63
- Or use environment variables:
64
-
65
- ```bash
66
- EXPO_ASC_API_KEY_PATH=./AuthKey.p8
67
- EXPO_ASC_API_KEY_ISSUER_ID=xxxxx-xxxx-xxxx-xxxx-xxxxx
68
- EXPO_ASC_API_KEY_ID=XXXXXXXXXX
69
- ```
63
+ Keep private key material outside version control. Use the installed CLI's credential flow and current documentation when setting up a different key type.
70
64
 
71
65
  ### Apple ID Authentication (Alternative)
72
66
 
@@ -75,23 +69,21 @@ For manual submissions, you can use Apple ID:
75
69
  ```bash
76
70
  EXPO_APPLE_ID=your@email.com
77
71
  EXPO_APPLE_TEAM_ID=XXXXXXXXXX
72
+ EXPO_APPLE_APP_SPECIFIC_PASSWORD=xxxx-xxxx-xxxx-xxxx
78
73
  ```
79
74
 
80
- Note: Requires app-specific password for accounts with 2FA.
75
+ The app-specific password is for the upload flow. Interactive Apple Developer signing setup has a separate authentication flow.
81
76
 
82
77
  ## Submission Commands
83
78
 
84
79
  ```bash
85
80
  # Build and submit to App Store Connect
86
- eas build -p ios --profile production --submit
81
+ eas build -p ios --profile production --auto-submit
87
82
 
88
- # Submit latest build
89
- eas submit -p ios --latest
83
+ # Submit the verified build
84
+ eas submit -p ios --profile production --id BUILD_ID
90
85
 
91
- # Submit specific build
92
- eas submit -p ios --id BUILD_ID
93
-
94
- # Quick TestFlight submission
86
+ # Expo / React Native TestFlight shortcut
95
87
  npx testflight
96
88
  ```
97
89
 
@@ -103,7 +95,7 @@ Before submitting, complete in App Store Connect:
103
95
 
104
96
  1. **App Information**
105
97
  - Primary language
106
- - Bundle ID (must match `app.json`)
98
+ - Bundle ID (must match the archive; Xcode is authoritative for checked-in native projects)
107
99
  - SKU (unique identifier)
108
100
 
109
101
  2. **Pricing and Availability**
@@ -153,8 +145,8 @@ Find `ascAppId` in App Store Connect → App Information → Apple ID.
153
145
 
154
146
  ### TestFlight (Beta Testing)
155
147
 
156
- - Builds go to TestFlight automatically after submission
157
- - Internal testers (up to 100) - immediate access
148
+ - Builds appear after Apple processing; compliance and group assignment may still need attention
149
+ - Internal testers (up to 100) - verify the build is available to the intended group
158
150
  - External testers (up to 10,000) - requires beta review
159
151
  - Builds expire after 90 days
160
152
 
@@ -164,6 +156,18 @@ Find `ascAppId` in App Store Connect → App Information → Apple ID.
164
156
  - Submit for review from App Store Connect
165
157
  - Choose release timing (immediate, scheduled, manual)
166
158
 
159
+ ## Complete the Public Release
160
+
161
+ EAS Submit uploads the binary to App Store Connect. Public distribution continues through the app version's App Review and release flow, as described in the [EAS Submit guide](https://docs.expo.dev/submit/ios/).
162
+
163
+ 1. Open the correct app and iOS version in App Store Connect. In its Build section, select the exact processed version/build you verified. Reuse an eligible TestFlight build when its code, icon, and configuration are ready for production; build again when those must change. Confirm the build is selectable for the App Store version. See [Apple's build-selection guide](https://developer.apple.com/help/app-store-connect/manage-builds/choose-a-build-to-submit/).
164
+ 2. Complete the required listing and review information: screenshots, description, support/privacy URLs, age rating, privacy declarations, export compliance, reviewer contact/login, and pricing/availability as applicable. Resolve the version's outstanding requirements before submission.
165
+ 3. Choose the requested release timing: manual release, automatic release after approval, or automatic release no earlier than a chosen date. Approval is still required for the date-based option.
166
+ 4. Click **Add for Review**, inspect the draft submission, then **Submit for Review**. Adding to a draft alone does not send it to Apple. Handle review messages and verify the resulting status. See [Apple's submission steps](https://developer.apple.com/help/app-store-connect/manage-submissions-to-app-review/submit-an-app/).
167
+ 5. After approval, follow the selected release timing. For manual release, the version waits in **Pending Developer Release** until **Release This Version** is completed. Verify availability in the intended storefronts before reporting it live. See [Apple's release options](https://developer.apple.com/help/app-store-connect/manage-your-apps-availability/select-an-app-store-version-release-option/).
168
+
169
+ Perform these publication steps only within the requested release scope. Preparing documentation or uploading a TestFlight beta does not itself request a public launch. Report the exact version/build and distinguish uploaded, submitted for review, approved, and publicly available.
170
+
167
171
  ## App Review Process
168
172
 
169
173
  ### What Reviewers Check
@@ -201,7 +205,7 @@ iOS uses two version identifiers:
201
205
  - **Version** (`CFBundleShortVersionString`): User-facing, e.g., "1.2.3"
202
206
  - **Build Number** (`CFBundleVersion`): Internal, must increment for each upload
203
207
 
204
- Configure in `app.json`:
208
+ For Expo projects whose native files are generated from app config, configure in `app.json`:
205
209
 
206
210
  ```json
207
211
  {
@@ -214,10 +218,12 @@ Configure in `app.json`:
214
218
  }
215
219
  ```
216
220
 
217
- With `autoIncrement: true`, EAS handles build numbers automatically.
221
+ With `autoIncrement: true` and remote versioning, EAS increments its counter and writes native version metadata during the build. When setting up or changing native Swift versioning, or diagnosing a duplicate build number, verify the archive's `CFBundleVersion` as described in [native-ios.md](native-ios.md). A changing remote counter does not prove Xcode used it.
218
222
 
219
223
  ## Release Options
220
224
 
225
+ These JSON examples are fragments of `store.config.json` for EAS Metadata. They configure release timing; uploading with EAS Submit still requires selecting the processed build and completing App Review before a public release.
226
+
221
227
  ### Automatic Release
222
228
 
223
229
  Release immediately when approved:
@@ -279,9 +285,6 @@ Rollout: Day 1 (1%) → Day 2 (2%) → Day 3 (5%) → Day 4 (10%) → Day 5 (20%
279
285
 
280
286
  ```bash
281
287
  eas credentials -p ios
282
-
283
- # Sync with Apple Developer Portal
284
- eas credentials -p ios --sync
285
288
  ```
286
289
 
287
290
  ## App Store Metadata
@@ -306,11 +309,11 @@ Create the app in App Store Connect first with matching bundle ID.
306
309
 
307
310
  ### "The bundle version must be higher"
308
311
 
309
- Increment build number. With `autoIncrement: true`, this is automatic.
312
+ Compare the number inside the rejected archive with EAS's remote counter. For native Swift, check the plist/build-setting ownership described in [native-ios.md](native-ios.md), then rebuild and submit the corrected artifact.
310
313
 
311
314
  ### "Missing compliance information"
312
315
 
313
- Add export compliance to `app.json`:
316
+ Review the app's actual encryption use and complete Apple's export-compliance requirements. For an Expo app generated from app config, an exempt app can declare:
314
317
 
315
318
  ```json
316
319
  {
@@ -324,10 +327,12 @@ Add export compliance to `app.json`:
324
327
  }
325
328
  ```
326
329
 
330
+ For a checked-in Swift app, the equivalent declaration belongs in its native Info.plist as `ITSAppUsesNonExemptEncryption`. Use the value appropriate to the app; changing app.json alone does not update its native plist.
331
+
327
332
  ### "Invalid provisioning profile"
328
333
 
329
334
  ```bash
330
- eas credentials -p ios --sync
335
+ eas credentials -p ios
331
336
  ```
332
337
 
333
338
  ### Build stuck in "Processing"
@@ -340,7 +345,7 @@ For automated submissions in CI/CD:
340
345
 
341
346
  ```yaml
342
347
  # .eas/workflows/release.yml
343
- name: Release to App Store
348
+ name: Upload production iOS build
344
349
 
345
350
  on:
346
351
  push:
@@ -357,7 +362,7 @@ jobs:
357
362
  type: submit
358
363
  needs: [build]
359
364
  params:
360
- platform: ios
365
+ build_id: ${{ needs.build.outputs.build_id }}
361
366
  profile: production
362
367
  ```
363
368
 
@@ -0,0 +1,167 @@
1
+ # Native Swift iOS apps on EAS
2
+
3
+ Use this path when the app runs SwiftUI or UIKit and the task is to build or distribute it with EAS. Adding React Native screens is a different task. [EAS Build supports native projects without Expo or React Native](https://docs.expo.dev/build/introduction/), but the main setup tutorials assume a React Native project.
4
+
5
+ ## Keep the delivery wrapper small
6
+
7
+ Inspect the Xcode project, shared scheme, Swift entry point, dependencies, signing settings, and current release configuration first. Keep hand-maintained native code checked in. Running `expo prebuild --clean` would regenerate native directories; it is not a setup step for this path.
8
+
9
+ The default EAS iOS pipeline expects a project beneath `ios/`. A typical layout is:
10
+
11
+ ```text
12
+ app.json
13
+ eas.json
14
+ package.json
15
+ package-lock.json
16
+ ios/
17
+ Podfile
18
+ MyApp.xcodeproj/
19
+ MyApp/
20
+ MyApp.swift
21
+ Info.plist
22
+ ```
23
+
24
+ The package file is tooling metadata, not a JavaScript app. A project with no Node dependencies can use:
25
+
26
+ ```json
27
+ {
28
+ "name": "my-app",
29
+ "version": "1.0.0",
30
+ "private": true
31
+ }
32
+ ```
33
+
34
+ Keep a matching lockfile for the chosen package manager. Do not add `expo`, `react`, `react-native`, an `index.js`, Metro, or `expo-dev-client` merely to use EAS. Preserve those dependencies if the app actually uses them. EAS CLI can read a minimal `app.json` without an installed Expo SDK:
35
+
36
+ ```json
37
+ {
38
+ "expo": {
39
+ "name": "My App",
40
+ "slug": "my-app",
41
+ "ios": { "bundleIdentifier": "com.example.myapp" }
42
+ }
43
+ }
44
+ ```
45
+
46
+ `eas init` links the project and writes `extra.eas.projectId`. Reuse the existing ID when one exists. The `expo` JSON key is EAS configuration here, not evidence of an Expo runtime. Xcode's bundle identifier is authoritative for a checked-in native project; keep any duplicate app-config identifier consistent, particularly for GitHub-triggered builds.
47
+
48
+ The [default iOS worker](https://github.com/expo/eas-cli/blob/main/packages/build-tools/src/builders/ios.ts) skips prebuild for checked-in native projects but still runs `pod install`. For an app with no pods, a minimal `Podfile` can serve as an adapter:
49
+
50
+ ```ruby
51
+ platform :ios, '17.0'
52
+
53
+ target 'MyApp' do
54
+ end
55
+ ```
56
+
57
+ Use the app's real deployment target and target name. This does not add React Native pods. If the project must avoid CocoaPods or has a different layout, use a [custom EAS build](https://docs.expo.dev/custom-builds/get-started/) or archive/export with Xcode and submit the resulting IPA. Do not relocate an established native project just to match this example.
58
+
59
+ ## Build and submit profiles
60
+
61
+ Select the actual shared scheme. Set `ios.image` from the [current build-image list](https://docs.expo.dev/build-reference/infrastructure/) when a particular Xcode/SDK is required. Use explicit build configurations; `developmentClient: true` configures Expo's development client, not generic Swift debugging.
62
+
63
+ ```json
64
+ {
65
+ "cli": { "appVersionSource": "remote" },
66
+ "build": {
67
+ "base": { "ios": { "scheme": "MyApp" } },
68
+ "simulator": {
69
+ "extends": "base",
70
+ "ios": { "simulator": true, "buildConfiguration": "Debug" }
71
+ },
72
+ "testflight": {
73
+ "extends": "base",
74
+ "distribution": "store",
75
+ "autoIncrement": true,
76
+ "ios": { "buildConfiguration": "Release" }
77
+ },
78
+ "production": {
79
+ "extends": "base",
80
+ "distribution": "store",
81
+ "autoIncrement": true,
82
+ "ios": { "buildConfiguration": "Release" }
83
+ }
84
+ },
85
+ "submit": {
86
+ "testflight": { "ios": { "ascAppId": "1234567890" } },
87
+ "production": { "ios": { "ascAppId": "1234567890" } }
88
+ }
89
+ }
90
+ ```
91
+
92
+ The IDs and target names above are examples. `ascAppId` is the numeric App Store Connect app ID, not the EAS project UUID, bundle ID, or Apple team ID. Verify the selected Apple team, the native bundle ID, and the app record together; one Apple login may belong to multiple organizations.
93
+
94
+ A pure Swift wrapper with neither Expo dependencies nor Expo SDK metadata needs no Expo Doctor or JavaScript-bundling skip flags. Existing native build phases and actual dependency integrations still need inspection. Avoid carrying unexplained environment overrides from a React Native template; keep native compiler settings in the Xcode project or xcconfig and retain Release debug symbols for crash reports.
95
+
96
+ For icon selection or other native build preparation, use an EAS lifecycle hook such as `eas-build-post-install` when necessary. An Expo config/prebuild plugin will not run on this native path. Preserve an existing hook rather than replacing its other work.
97
+
98
+ ## Versioning and icon troubleshooting
99
+
100
+ These checks address two failures encountered while testing a SwiftUI release: a stale archive build number and a default icon with an alpha channel. Use the relevant check during initial setup, after changing versioning, bundle IDs, or icons, or to diagnose a rejected upload. Routine releases use the EAS build/submit flow below.
101
+
102
+ EAS remote versioning increments a counter. The [native version updater](https://github.com/expo/eas-cli/blob/main/packages/eas-cli/src/build/ios/version.ts) writes `CFBundleVersion` to the target's explicit `INFOPLIST_FILE`. A generated plist with a fixed `CURRENT_PROJECT_VERSION` can leave every archive reporting build 1 even while the EAS dashboard reports increasing numbers.
103
+
104
+ For the default pipeline, an explicit app plist is a tested approach:
105
+
106
+ ```text
107
+ GENERATE_INFOPLIST_FILE = NO
108
+ INFOPLIST_FILE = MyApp/Info.plist
109
+ MARKETING_VERSION = 1.0.0
110
+ ```
111
+
112
+ Include these entries in the complete app plist:
113
+
114
+ ```xml
115
+ <key>CFBundleShortVersionString</key>
116
+ <string>$(MARKETING_VERSION)</string>
117
+ <key>CFBundleVersion</key>
118
+ <string>1</string>
119
+ ```
120
+
121
+ That local build number is a starting value; EAS writes the remote value during the store build. Apply the settings to the app's relevant configurations and preserve the rest of its metadata: identity, privacy usage descriptions, scene/launch configuration, orientations and supported devices. Do not replace a full plist with this excerpt or change test targets indiscriminately. Review extension targets' version synchronization separately.
122
+
123
+ An existing generated-plist setup can also work if its build process explicitly sets `CURRENT_PROJECT_VERSION` before archiving. Keep it when verified; do not migrate every native project automatically. Changing only `app.json` or observing an incremented remote counter is insufficient evidence.
124
+
125
+ When setting up or changing versioning or the bundle ID, or diagnosing a rejected upload, inspect the built app's plist with macOS's built-in tools:
126
+
127
+ ```bash
128
+ plutil -p "/path/to/MyApp.xcarchive/Products/Applications/MyApp.app/Info.plist"
129
+ ```
130
+
131
+ For a downloaded `.ipa`, unzip it into a temporary directory and inspect `Payload/MyApp.app/Info.plist`; for a built `.app`, inspect its `Info.plist` directly. Compare `CFBundleIdentifier`, `CFBundleShortVersionString`, and `CFBundleVersion` with the intended release. Values must be resolved strings, and `CFBundleSupportedPlatforms` must contain `iPhoneOS`, not `iPhoneSimulator`. `eas build:view BUILD_ID --json` provides build details and the artifact URL; its reported version is not a substitute for checking the archive.
132
+
133
+ When adding or changing a default (Any/light) 1024px AppIcon PNG, or diagnosing an icon rejection, inspect the source selected by that build profile:
134
+
135
+ ```bash
136
+ sips -g pixelWidth -g pixelHeight -g hasAlpha "/path/to/AppIcon.appiconset/icon.png"
137
+ ```
138
+
139
+ The default icon should be 1024×1024 with no alpha channel, even if every pixel looks opaque. Preserve transparency in dark variants and Icon Composer layers; follow [Apple's guidance for each appearance](https://developer.apple.com/documentation/xcode/configuring-your-app-icon). These local checks help diagnose the artifact; use the EAS submission logs and Apple processing status to verify acceptance.
140
+
141
+ Check privacy usage descriptions against the features used by the app. Set the encryption declaration according to the app's actual encryption use; do not copy `false` solely to suppress an export-compliance prompt.
142
+
143
+ ## Ship the exact build
144
+
145
+ Reuse established EAS/Apple credentials. For a new setup, configure signing with `eas credentials -p ios` and select the correct team. An App Store Connect API key supports unattended submission without changing the app's owner or bundle ID.
146
+
147
+ ```bash
148
+ eas build --platform ios --profile testflight --no-wait --non-interactive
149
+ # Record the returned build ID; verify its result and source revision.
150
+ eas submit --platform ios --profile testflight --id BUILD_ID --non-interactive
151
+ ```
152
+
153
+ For an IPA exported elsewhere:
154
+
155
+ ```bash
156
+ eas submit --platform ios --profile testflight --path /path/to/MyApp.ipa
157
+ ```
158
+
159
+ Use the explicit ID when multiple builds exist. Keep the distribution scope the user requested. Follow the submission's worker logs through Apple processing, then check tester availability in App Store Connect. A successful upload does not create tester access or release the app publicly.
160
+
161
+ For production, reuse an eligible uploaded build when it already has the intended release code, icon, configuration, and version. If the beta build uses a preview icon or different configuration, create and verify a production-profile build, then upload that exact archive. A second upload is not required solely to move an eligible tested build into App Review.
162
+
163
+ Complete the [public release steps in App Store Connect](ios-app-store.md#complete-the-public-release): select the processed build, finish the listing/privacy/review information, submit for App Review, and apply the requested release timing. The [official EAS Submit guide](https://docs.expo.dev/submit/ios/) describes this handoff. TestFlight distribution alone does not authorize publishing an App Store release.
164
+
165
+ ## Verification scope
166
+
167
+ This approach was exercised with a SwiftUI app on EAS CLI 18.6.0 and Xcode 26.2: an isolated default-pipeline simulator build succeeded without Expo/React/React Native dependencies or skip flags. The explicit-plist and opaque-icon fixes were also verified by a signed device build accepted by Apple. Recheck worker/CLI behavior when updating tooling; project layout, custom hooks, extensions and signing requirements can differ.
@@ -133,7 +133,7 @@ This releases to 10% of users. Increase via Play Console or subsequent submissio
133
133
 
134
134
  ```bash
135
135
  # Build and submit to internal track
136
- eas build -p android --profile production --submit
136
+ eas build -p android --profile production --auto-submit
137
137
 
138
138
  # Submit existing build to Play Store
139
139
  eas submit -p android --latest
@@ -231,13 +231,9 @@ Or use EAS Update for OTA updates to existing installs.
231
231
 
232
232
  ## Monitoring Submissions
233
233
 
234
- ```bash
235
- # Check submission status
236
- eas submit:list -p android
234
+ Follow the submission URL returned by `eas submit` for status and logs. Check Play Console for the resulting track and release state.
237
235
 
238
- # View specific submission
239
- eas submit:view SUBMISSION_ID
240
- ```
236
+ With EAS CLI 23.2.0, `eas submit:list -p android --json` and `eas submit:view SUBMISSION_ID --json` report EAS submission jobs. `submit:status` currently reads Apple status only; do not treat an EAS job's success as confirmation of Play Console rollout.
241
237
 
242
238
  ## Tips
243
239