@haposoft/cafekit 0.16.0-rc.8 → 0.16.0

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 (297) hide show
  1. package/README.md +116 -27
  2. package/bin/__tests__/codex-hooks-ownership.test.js +239 -0
  3. package/bin/__tests__/codex-hooks.test.js +50 -0
  4. package/bin/__tests__/codex-native.test.js +1882 -70
  5. package/bin/__tests__/develop-contract.test.js +400 -23
  6. package/bin/__tests__/installer-safety.test.js +3 -3
  7. package/bin/__tests__/optional-skill-inventory.test.js +249 -0
  8. package/bin/__tests__/output-styles.test.js +214 -0
  9. package/bin/__tests__/package-inventory.test.js +1735 -98
  10. package/bin/__tests__/runtime-schema.test.js +111 -0
  11. package/bin/__tests__/secret-output-guardrail.test.js +122 -0
  12. package/bin/__tests__/skill-routing-source.test.js +172 -0
  13. package/bin/__tests__/specs-v2-execution-closeout.test.js +1 -1
  14. package/bin/install.js +10 -0
  15. package/bin/lib/codex-install.js +170 -5
  16. package/bin/lib/context.js +14 -0
  17. package/bin/lib/i18n.js +12 -6
  18. package/bin/lib/skill-deps.js +5 -5
  19. package/bin/phases/claude-runtime.js +23 -0
  20. package/bin/phases/claude-settings.js +8 -0
  21. package/bin/phases/codex-hooks.js +156 -0
  22. package/bin/phases/codex-runtime.js +29 -38
  23. package/bin/phases/copy-payload.js +8 -2
  24. package/bin/phases/select-skill-bundles.js +96 -0
  25. package/bin/phases/skill-inventory.js +71 -0
  26. package/bin/phases/skills-setup.js +9 -2
  27. package/bin/phases/write-metadata.js +8 -5
  28. package/package.json +8 -2
  29. package/src/claude/CLAUDE.md +3 -3
  30. package/src/claude/agents/brainstormer.md +52 -69
  31. package/src/claude/agents/code-auditor.md +32 -14
  32. package/src/claude/agents/debugger.md +35 -20
  33. package/src/claude/agents/deployer.md +12 -5
  34. package/src/claude/agents/docs-keeper.md +11 -1
  35. package/src/claude/agents/implementer.md +25 -13
  36. package/src/claude/agents/inspector.md +6 -3
  37. package/src/claude/agents/project-manager.md +1 -1
  38. package/src/claude/agents/researcher.md +26 -55
  39. package/src/claude/agents/spec-maker.md +12 -7
  40. package/src/claude/agents/strategist.md +52 -0
  41. package/src/claude/agents/test-runner.md +117 -132
  42. package/src/claude/agents/ui-ux-designer.md +1 -1
  43. package/src/claude/hooks/__tests__/fixtures/statusline-default.golden +1 -0
  44. package/src/claude/hooks/__tests__/precompact.test.js +158 -0
  45. package/src/claude/hooks/__tests__/spec-gate.test.js +10 -3
  46. package/src/claude/hooks/__tests__/state.test.js +5 -0
  47. package/src/claude/hooks/__tests__/statusline.test.js +196 -0
  48. package/src/claude/hooks/agent.cjs +1 -1
  49. package/src/claude/hooks/docs-sync.cjs +12 -10
  50. package/src/claude/hooks/inspect-block.cjs +1 -1
  51. package/src/claude/hooks/lib/config.cjs +3 -0
  52. package/src/claude/hooks/lib/hook-state-dir.cjs +39 -0
  53. package/src/claude/hooks/lib/secret-keywords.cjs +42 -0
  54. package/src/claude/hooks/precompact.cjs +105 -0
  55. package/src/claude/hooks/rules.cjs +1 -1
  56. package/src/claude/hooks/secret-output-guardrail.cjs +43 -0
  57. package/src/claude/hooks/session.cjs +27 -1
  58. package/src/claude/hooks/spec-gate.cjs +3 -3
  59. package/src/claude/hooks/spec-state.cjs +2 -2
  60. package/src/claude/hooks/state.cjs +1 -1
  61. package/src/claude/hooks/task-scaffold-guard.cjs +1 -1
  62. package/src/claude/hooks/usage.cjs +1 -1
  63. package/src/claude/migration-manifest.json +29 -15
  64. package/src/claude/output-styles/coding-level-0-eli5.md +103 -0
  65. package/src/claude/output-styles/coding-level-1-junior.md +124 -0
  66. package/src/claude/output-styles/coding-level-2-mid.md +146 -0
  67. package/src/claude/output-styles/coding-level-3-senior.md +148 -0
  68. package/src/claude/output-styles/coding-level-4-lead.md +159 -0
  69. package/src/claude/output-styles/coding-level-5-god.md +91 -0
  70. package/src/claude/references/debugger/core-philosophy.md +5 -3
  71. package/src/claude/references/debugger/frontend-verification.md +2 -2
  72. package/src/claude/references/debugger/log-ci-analysis.md +13 -1
  73. package/src/claude/references/debugger/parallel-agent-hydration.md +19 -34
  74. package/src/claude/references/debugger/performance-diagnostics.md +2 -2
  75. package/src/claude/references/debugger/root-cause-tracing.md +37 -6
  76. package/src/claude/references/debugger/side-effect-gate.md +3 -1
  77. package/src/claude/references/debugger/verification-protocol.md +13 -12
  78. package/src/claude/rules/orchestrator.md +7 -1
  79. package/src/claude/rules/process-management.md +39 -0
  80. package/src/claude/rules/review-audit-self-decision.md +48 -0
  81. package/src/claude/rules/skill-domain-routing.md +26 -24
  82. package/src/claude/rules/skill-workflow-routing.md +22 -14
  83. package/src/claude/rules/workflow.md +3 -3
  84. package/src/claude/runtime.json +1 -0
  85. package/src/claude/runtime.schema.json +205 -0
  86. package/src/claude/scripts/generate-skill-catalog.cjs +156 -122
  87. package/src/claude/scripts/provenance.cjs +18 -5
  88. package/src/claude/scripts/workflow-policy.cjs +1 -1
  89. package/src/claude/settings/settings.json +16 -0
  90. package/src/claude/skills/agent-browser/SKILL.md +1 -1
  91. package/src/claude/skills/ai-multimodal/SKILL.md +1 -1
  92. package/src/claude/skills/brainstorm/SKILL.md +193 -172
  93. package/src/claude/skills/brainstorm/references/question-framework.md +105 -167
  94. package/src/claude/skills/chrome-devtools/SKILL.md +1 -1
  95. package/src/claude/skills/code-review/SKILL.md +43 -25
  96. package/src/claude/skills/code-review/references/spec-compliance-review.md +3 -4
  97. package/src/claude/skills/code-review/references/verification-gate.md +1 -1
  98. package/src/claude/skills/debug/SKILL.md +48 -19
  99. package/src/claude/skills/delegate/SKILL.md +1 -1
  100. package/src/claude/skills/develop/SKILL.md +92 -65
  101. package/src/claude/skills/develop/references/parallel-waves.md +36 -63
  102. package/src/claude/skills/develop/references/quality-gate.md +31 -4
  103. package/src/claude/skills/develop/references/subagent-patterns.md +21 -7
  104. package/src/claude/skills/docs/SKILL.md +42 -23
  105. package/src/claude/skills/docs/references/init-workflow.md +4 -4
  106. package/src/claude/skills/docs/references/reconstruct-workflow.md +6 -6
  107. package/src/claude/skills/docs/references/standard-docs-workflow.md +6 -2
  108. package/src/claude/skills/docs/references/summarize-workflow.md +2 -2
  109. package/src/claude/skills/docs/references/update-workflow.md +9 -7
  110. package/src/claude/skills/docs/templates/requirements-as-is.md +1 -1
  111. package/src/claude/skills/docx/SKILL.md +1 -1
  112. package/src/claude/skills/git/SKILL.md +1 -1
  113. package/src/claude/skills/git/references/commit-protocols.md +1 -1
  114. package/src/claude/skills/git/references/finish-branch.md +1 -1
  115. package/src/claude/skills/hotfix/SKILL.md +159 -170
  116. package/src/claude/skills/hotfix/references/diagnosis-protocol.md +14 -9
  117. package/src/claude/skills/hotfix/references/parallel-patterns.md +27 -13
  118. package/src/claude/skills/hotfix/references/prevention-gate.md +5 -0
  119. package/src/claude/skills/hotfix/references/review-cycle.md +21 -15
  120. package/src/claude/skills/hotfix/references/workflow-specialized.md +53 -21
  121. package/src/claude/skills/inspect/SKILL.md +55 -46
  122. package/src/claude/skills/inspect/references/internal-inspection.md +21 -5
  123. package/src/claude/skills/loop/SKILL.md +114 -0
  124. package/src/claude/skills/loop/references/bounded-loop-protocol.md +104 -0
  125. package/src/claude/skills/loop/references/metric-and-guard-contract.md +76 -0
  126. package/src/claude/skills/pdf/SKILL.md +1 -1
  127. package/src/claude/skills/pptx/SKILL.md +1 -1
  128. package/src/claude/skills/question/SKILL.md +16 -13
  129. package/src/claude/skills/research/SKILL.md +70 -43
  130. package/src/claude/skills/route/SKILL.md +94 -0
  131. package/src/claude/skills/route/references/agent-timing.md +46 -0
  132. package/src/claude/skills/route/references/chaining-patterns.md +53 -0
  133. package/src/claude/skills/route/references/task-taxonomy.md +48 -0
  134. package/src/claude/skills/specs/SKILL.md +41 -60
  135. package/src/claude/skills/specs/references/review.md +11 -8
  136. package/src/claude/skills/specs/references/templates.md +34 -18
  137. package/src/claude/skills/specs/templates/requirements-init.md +1 -1
  138. package/src/claude/skills/specs/templates/research.md +2 -2
  139. package/src/claude/skills/sync/SKILL.md +6 -6
  140. package/src/claude/skills/sync/references/sync-protocols.md +1 -1
  141. package/src/claude/skills/test/SKILL.md +120 -120
  142. package/src/claude/skills/test/references/execution-strategy.md +208 -361
  143. package/src/claude/skills/test/references/failure-triage.md +55 -121
  144. package/src/claude/skills/test/references/test-memory.md +20 -34
  145. package/src/claude/skills/ui-ux-pro-max/SKILL.md +1 -1
  146. package/src/claude/skills/web-testing/SKILL.md +1 -1
  147. package/src/claude/skills/xlsx/SKILL.md +1 -1
  148. package/src/claude/status.cjs +135 -33
  149. package/src/codex/AGENTS.md +14 -4
  150. package/src/codex/hooks/docs-sync.cjs +8 -3
  151. package/src/codex/hooks/lib/hook-context.cjs +18 -4
  152. package/src/codex/hooks/rules.cjs +29 -1
  153. package/src/codex/hooks/secret-output-guardrail.cjs +30 -0
  154. package/src/codex/hooks/spec-gate.cjs +3 -8
  155. package/src/codex/hooks/spec-state.cjs +2 -1
  156. package/src/codex/hooks.json +5 -0
  157. package/src/codex/runtime.json +2 -0
  158. package/src/common/.env.example +1 -1
  159. package/src/claude/skills/backend-development/SKILL.md +0 -101
  160. package/src/claude/skills/backend-development/references/backend-api-design.md +0 -495
  161. package/src/claude/skills/backend-development/references/backend-architecture.md +0 -454
  162. package/src/claude/skills/backend-development/references/backend-authentication.md +0 -338
  163. package/src/claude/skills/backend-development/references/backend-code-quality.md +0 -659
  164. package/src/claude/skills/backend-development/references/backend-debugging.md +0 -904
  165. package/src/claude/skills/backend-development/references/backend-devops.md +0 -491
  166. package/src/claude/skills/backend-development/references/backend-mindset.md +0 -387
  167. package/src/claude/skills/backend-development/references/backend-performance.md +0 -397
  168. package/src/claude/skills/backend-development/references/backend-security.md +0 -342
  169. package/src/claude/skills/backend-development/references/backend-technologies.md +0 -256
  170. package/src/claude/skills/backend-development/references/backend-testing.md +0 -429
  171. package/src/claude/skills/devops/.env.example +0 -76
  172. package/src/claude/skills/devops/SKILL.md +0 -102
  173. package/src/claude/skills/devops/references/browser-rendering.md +0 -305
  174. package/src/claude/skills/devops/references/cloudflare-d1-kv.md +0 -123
  175. package/src/claude/skills/devops/references/cloudflare-platform.md +0 -271
  176. package/src/claude/skills/devops/references/cloudflare-r2-storage.md +0 -280
  177. package/src/claude/skills/devops/references/cloudflare-workers-advanced.md +0 -312
  178. package/src/claude/skills/devops/references/cloudflare-workers-apis.md +0 -309
  179. package/src/claude/skills/devops/references/cloudflare-workers-basics.md +0 -418
  180. package/src/claude/skills/devops/references/docker-basics.md +0 -297
  181. package/src/claude/skills/devops/references/docker-compose.md +0 -292
  182. package/src/claude/skills/devops/references/gcloud-platform.md +0 -297
  183. package/src/claude/skills/devops/references/gcloud-services.md +0 -304
  184. package/src/claude/skills/devops/references/kubernetes-basics.md +0 -95
  185. package/src/claude/skills/devops/references/kubernetes-helm-advanced.md +0 -70
  186. package/src/claude/skills/devops/references/kubernetes-helm.md +0 -81
  187. package/src/claude/skills/devops/references/kubernetes-kubectl.md +0 -74
  188. package/src/claude/skills/devops/references/kubernetes-security-advanced.md +0 -94
  189. package/src/claude/skills/devops/references/kubernetes-security.md +0 -89
  190. package/src/claude/skills/devops/references/kubernetes-troubleshooting-advanced.md +0 -74
  191. package/src/claude/skills/devops/references/kubernetes-troubleshooting.md +0 -49
  192. package/src/claude/skills/devops/references/kubernetes-workflows-advanced.md +0 -75
  193. package/src/claude/skills/devops/references/kubernetes-workflows.md +0 -76
  194. package/src/claude/skills/devops/scripts/cloudflare_deploy.py +0 -269
  195. package/src/claude/skills/devops/scripts/docker_optimize.py +0 -332
  196. package/src/claude/skills/devops/scripts/requirements.txt +0 -20
  197. package/src/claude/skills/devops/scripts/tests/requirements.txt +0 -3
  198. package/src/claude/skills/devops/scripts/tests/test_cloudflare_deploy.py +0 -285
  199. package/src/claude/skills/devops/scripts/tests/test_docker_optimize.py +0 -436
  200. package/src/claude/skills/frontend-design/SKILL.md +0 -135
  201. package/src/claude/skills/frontend-design/references/ai-multimodal-overview.md +0 -165
  202. package/src/claude/skills/frontend-design/references/analysis-best-practices.md +0 -80
  203. package/src/claude/skills/frontend-design/references/analysis-prompts.md +0 -141
  204. package/src/claude/skills/frontend-design/references/analysis-techniques.md +0 -118
  205. package/src/claude/skills/frontend-design/references/animejs.md +0 -396
  206. package/src/claude/skills/frontend-design/references/anti-slop-rules.md +0 -103
  207. package/src/claude/skills/frontend-design/references/asset-generation.md +0 -337
  208. package/src/claude/skills/frontend-design/references/bento-motion-engine.md +0 -142
  209. package/src/claude/skills/frontend-design/references/design-extraction-overview.md +0 -71
  210. package/src/claude/skills/frontend-design/references/extraction-best-practices.md +0 -141
  211. package/src/claude/skills/frontend-design/references/extraction-output-templates.md +0 -162
  212. package/src/claude/skills/frontend-design/references/extraction-prompts.md +0 -127
  213. package/src/claude/skills/frontend-design/references/magicui-components.md +0 -129
  214. package/src/claude/skills/frontend-design/references/performance-guardrails.md +0 -169
  215. package/src/claude/skills/frontend-design/references/premium-design-patterns.md +0 -93
  216. package/src/claude/skills/frontend-design/references/redesign-audit-checklist.md +0 -114
  217. package/src/claude/skills/frontend-design/references/technical-accessibility.md +0 -119
  218. package/src/claude/skills/frontend-design/references/technical-best-practices.md +0 -97
  219. package/src/claude/skills/frontend-design/references/technical-optimization.md +0 -44
  220. package/src/claude/skills/frontend-design/references/technical-overview.md +0 -90
  221. package/src/claude/skills/frontend-design/references/technical-workflows.md +0 -150
  222. package/src/claude/skills/frontend-design/references/visual-analysis-overview.md +0 -95
  223. package/src/claude/skills/frontend-design/references/workflow-3d.md +0 -102
  224. package/src/claude/skills/frontend-design/references/workflow-describe.md +0 -87
  225. package/src/claude/skills/frontend-design/references/workflow-immersive.md +0 -87
  226. package/src/claude/skills/frontend-design/references/workflow-quick.md +0 -57
  227. package/src/claude/skills/frontend-design/references/workflow-screenshot.md +0 -63
  228. package/src/claude/skills/frontend-design/references/workflow-video.md +0 -74
  229. package/src/claude/skills/frontend-development/SKILL.md +0 -406
  230. package/src/claude/skills/frontend-development/resources/common-patterns.md +0 -331
  231. package/src/claude/skills/frontend-development/resources/complete-examples.md +0 -872
  232. package/src/claude/skills/frontend-development/resources/component-patterns.md +0 -502
  233. package/src/claude/skills/frontend-development/resources/data-fetching.md +0 -767
  234. package/src/claude/skills/frontend-development/resources/file-organization.md +0 -502
  235. package/src/claude/skills/frontend-development/resources/loading-and-error-states.md +0 -501
  236. package/src/claude/skills/frontend-development/resources/performance.md +0 -406
  237. package/src/claude/skills/frontend-development/resources/routing-guide.md +0 -364
  238. package/src/claude/skills/frontend-development/resources/styling-guide.md +0 -428
  239. package/src/claude/skills/frontend-development/resources/typescript-standards.md +0 -418
  240. package/src/claude/skills/mobile-development/SKILL.md +0 -218
  241. package/src/claude/skills/mobile-development/references/mobile-android.md +0 -604
  242. package/src/claude/skills/mobile-development/references/mobile-best-practices.md +0 -544
  243. package/src/claude/skills/mobile-development/references/mobile-debugging.md +0 -1089
  244. package/src/claude/skills/mobile-development/references/mobile-frameworks.md +0 -465
  245. package/src/claude/skills/mobile-development/references/mobile-ios.md +0 -496
  246. package/src/claude/skills/mobile-development/references/mobile-mindset.md +0 -542
  247. package/src/claude/skills/react-best-practices/AGENTS.md +0 -2249
  248. package/src/claude/skills/react-best-practices/README.md +0 -123
  249. package/src/claude/skills/react-best-practices/SKILL.md +0 -128
  250. package/src/claude/skills/react-best-practices/metadata.json +0 -15
  251. package/src/claude/skills/react-best-practices/rules/_sections.md +0 -46
  252. package/src/claude/skills/react-best-practices/rules/_template.md +0 -28
  253. package/src/claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +0 -55
  254. package/src/claude/skills/react-best-practices/rules/advanced-use-latest.md +0 -49
  255. package/src/claude/skills/react-best-practices/rules/async-api-routes.md +0 -38
  256. package/src/claude/skills/react-best-practices/rules/async-defer-await.md +0 -80
  257. package/src/claude/skills/react-best-practices/rules/async-dependencies.md +0 -36
  258. package/src/claude/skills/react-best-practices/rules/async-parallel.md +0 -28
  259. package/src/claude/skills/react-best-practices/rules/async-suspense-boundaries.md +0 -99
  260. package/src/claude/skills/react-best-practices/rules/bundle-barrel-imports.md +0 -59
  261. package/src/claude/skills/react-best-practices/rules/bundle-conditional.md +0 -31
  262. package/src/claude/skills/react-best-practices/rules/bundle-defer-third-party.md +0 -49
  263. package/src/claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +0 -35
  264. package/src/claude/skills/react-best-practices/rules/bundle-preload.md +0 -50
  265. package/src/claude/skills/react-best-practices/rules/client-event-listeners.md +0 -74
  266. package/src/claude/skills/react-best-practices/rules/client-swr-dedup.md +0 -56
  267. package/src/claude/skills/react-best-practices/rules/js-batch-dom-css.md +0 -82
  268. package/src/claude/skills/react-best-practices/rules/js-cache-function-results.md +0 -80
  269. package/src/claude/skills/react-best-practices/rules/js-cache-property-access.md +0 -28
  270. package/src/claude/skills/react-best-practices/rules/js-cache-storage.md +0 -70
  271. package/src/claude/skills/react-best-practices/rules/js-combine-iterations.md +0 -32
  272. package/src/claude/skills/react-best-practices/rules/js-early-exit.md +0 -50
  273. package/src/claude/skills/react-best-practices/rules/js-hoist-regexp.md +0 -45
  274. package/src/claude/skills/react-best-practices/rules/js-index-maps.md +0 -37
  275. package/src/claude/skills/react-best-practices/rules/js-length-check-first.md +0 -49
  276. package/src/claude/skills/react-best-practices/rules/js-min-max-loop.md +0 -82
  277. package/src/claude/skills/react-best-practices/rules/js-set-map-lookups.md +0 -24
  278. package/src/claude/skills/react-best-practices/rules/js-tosorted-immutable.md +0 -57
  279. package/src/claude/skills/react-best-practices/rules/rendering-activity.md +0 -26
  280. package/src/claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
  281. package/src/claude/skills/react-best-practices/rules/rendering-conditional-render.md +0 -40
  282. package/src/claude/skills/react-best-practices/rules/rendering-content-visibility.md +0 -38
  283. package/src/claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +0 -46
  284. package/src/claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
  285. package/src/claude/skills/react-best-practices/rules/rendering-svg-precision.md +0 -28
  286. package/src/claude/skills/react-best-practices/rules/rerender-defer-reads.md +0 -39
  287. package/src/claude/skills/react-best-practices/rules/rerender-dependencies.md +0 -45
  288. package/src/claude/skills/react-best-practices/rules/rerender-derived-state.md +0 -29
  289. package/src/claude/skills/react-best-practices/rules/rerender-functional-setstate.md +0 -74
  290. package/src/claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +0 -58
  291. package/src/claude/skills/react-best-practices/rules/rerender-memo.md +0 -44
  292. package/src/claude/skills/react-best-practices/rules/rerender-transitions.md +0 -40
  293. package/src/claude/skills/react-best-practices/rules/server-after-nonblocking.md +0 -73
  294. package/src/claude/skills/react-best-practices/rules/server-cache-lru.md +0 -41
  295. package/src/claude/skills/react-best-practices/rules/server-cache-react.md +0 -26
  296. package/src/claude/skills/react-best-practices/rules/server-parallel-fetching.md +0 -79
  297. package/src/claude/skills/react-best-practices/rules/server-serialization.md +0 -38
@@ -1,465 +0,0 @@
1
- # Mobile Frameworks Reference
2
-
3
- Comprehensive guide to mobile development frameworks: React Native, Flutter, and native development.
4
-
5
- ## Framework Overview (2024-2025)
6
-
7
- ### React Native
8
- - **Language**: JavaScript/TypeScript
9
- - **Stars**: 121,000+ on GitHub
10
- - **Adoption**: Broad adoption and familiarity among mobile developers
11
- - **Performance**: Near-native performance
12
- - **Architecture**: Bridge-based (legacy) → New Architecture (JSI, Fabric, Codegen)
13
- - **Rendering**: Native components
14
- - **Hot Reload**: Yes
15
- - **Community**: Huge (npm ecosystem, 3M+ downloads/week)
16
-
17
- ### Flutter
18
- - **Language**: Dart
19
- - **Stars**: 170,000+ on GitHub (fastest-growing)
20
- - **Adoption**: Broad adoption among mobile developers
21
- - **Performance**: Near-native performance
22
- - **Architecture**: "Everything is a widget"
23
- - **Rendering**: Custom Impeller rendering engine (eliminates jank)
24
- - **Hot Reload**: Yes (fastest in industry)
25
- - **Community**: Growing rapidly (23,000+ packages on pub.dev)
26
-
27
- ### Native iOS (Swift/SwiftUI)
28
- - **Language**: Swift
29
- - **Performance**: Native performance
30
- - **UI Framework**: SwiftUI (declarative) or UIKit (imperative)
31
- - **Latest**: Swift 6 with compile-time data race detection
32
- - **Tooling**: Xcode 16, Swift Package Manager
33
- - **Concurrency**: async/await, actors, @MainActor
34
-
35
- ### Native Android (Kotlin/Jetpack Compose)
36
- - **Language**: Kotlin
37
- - **Performance**: Native performance
38
- - **UI Framework**: Jetpack Compose (declarative) or Views (imperative)
39
- - **Latest**: Kotlin 2.1, Compose 1.7
40
- - **Tooling**: Android Studio Hedgehog+
41
- - **Coroutines**: Kotlin coroutines for async
42
-
43
- ## React Native Deep Dive
44
-
45
- ### Core Concepts
46
-
47
- **New Architecture (0.82+ Mandatory)**
48
- - **JSI (JavaScript Interface)**: Direct JS-to-native communication, eliminating bridge
49
- - **Fabric**: New rendering system with synchronous layout
50
- - **Codegen**: Static type safety between JS and native code
51
- - **Turbo Modules**: Lazy-loaded native modules
52
-
53
- **Performance Optimizations**
54
- - **Hermes Engine**: Faster startup, reduced memory
55
- - **Native Driver Animations**: Offloaded to UI thread (60 FPS)
56
- - **FlatList Virtualization**: Renders only visible items
57
- - **Image Optimization**: FastImage library, progressive loading
58
-
59
- ### Best Practices
60
-
61
- **Project Structure (Feature-Based)**
62
- ```
63
- src/
64
- ├── features/
65
- │ ├── auth/
66
- │ ├── profile/
67
- │ └── dashboard/
68
- ├── shared/
69
- │ ├── components/
70
- │ ├── hooks/
71
- │ └── utils/
72
- ├── navigation/
73
- ├── services/
74
- └── stores/
75
- ```
76
-
77
- **State Management (2024-2025)**
78
- 1. **Zustand** (Rising Star): Minimal boilerplate, 3KB, excellent TypeScript
79
- 2. **Redux Toolkit**: Enterprise apps, time-travel debugging, DevTools
80
- 3. **Recoil**: Meta-built, atom-based, experimental
81
- 4. **Context API**: Simple apps, avoid prop drilling
82
-
83
- **Navigation**
84
- - **React Navigation**: Industry standard
85
- - Type-safe navigation with TypeScript
86
- - Deep linking configuration
87
- - Tab, stack, drawer navigators
88
-
89
- **TypeScript Adoption**
90
- - TypeScript is common in new React Native projects
91
- - Type safety helps prevent runtime errors
92
- - Better IDE support and autocomplete
93
-
94
- ### Testing Strategy
95
-
96
- **Unit Testing**
97
- - **Jest**: Default test runner
98
- - **React Native Testing Library**: Component testing, best practices
99
- - Target: 70-80%+ code coverage
100
-
101
- **E2E Testing**
102
- - **Detox**: Gray-box testing, fast, reliable (recommended)
103
- - **Appium**: Cross-platform, WebDriver-based
104
- - **Maestro**: New player, simple YAML-based tests
105
-
106
- **Example (React Native Testing Library)**
107
- ```javascript
108
- import { render, fireEvent, waitFor } from '@testing-library/react-native';
109
-
110
- test('login button should be enabled when form is valid', async () => {
111
- const { getByTestId } = render(<LoginScreen />);
112
- const emailInput = getByTestId('email-input');
113
- const passwordInput = getByTestId('password-input');
114
- const loginButton = getByTestId('login-button');
115
-
116
- fireEvent.changeText(emailInput, 'test@example.com');
117
- fireEvent.changeText(passwordInput, 'password123');
118
-
119
- await waitFor(() => {
120
- expect(loginButton).not.toBeDisabled();
121
- });
122
- });
123
- ```
124
-
125
- ### When to Choose React Native
126
-
127
- **✅ Best For:**
128
- - JavaScript/TypeScript expertise in team
129
- - Code sharing with web (React)
130
- - Rapid prototyping and MVPs
131
- - Strong community support needed
132
- - npm ecosystem integration
133
- - Commercial apps
134
-
135
- **❌ Not Ideal For:**
136
- - Heavy graphics/gaming (use native or Unity)
137
- - Maximum performance critical
138
- - Deep platform-specific integrations
139
- - Team unfamiliar with JavaScript
140
-
141
- ## Flutter Deep Dive
142
-
143
- ### Core Concepts
144
-
145
- **"Everything is a Widget"**
146
- - UI built from composable widgets
147
- - Immutable widget tree
148
- - Reactive updates with setState/state management
149
-
150
- **Rendering Engine**
151
- - **Impeller**: New rendering engine (iOS stable, Android preview)
152
- - Eliminates shader jank
153
- - 120 FPS capable on capable devices
154
- - Custom Skia-based rendering (full control)
155
-
156
- **Performance Features**
157
- - **Const widgets**: Compile-time optimization
158
- - **RepaintBoundary**: Isolate expensive repaints
159
- - **ListView.builder**: Lazy loading for long lists
160
- - **Cached network images**: Image optimization
161
-
162
- ### Best Practices
163
-
164
- **Project Structure (Feature-First)**
165
- ```
166
- lib/
167
- ├── features/
168
- │ ├── auth/
169
- │ │ ├── data/
170
- │ │ ├── domain/
171
- │ │ └── presentation/
172
- │ └── profile/
173
- ├── core/
174
- │ ├── theme/
175
- │ ├── utils/
176
- │ └── widgets/
177
- ├── routing/
178
- └── main.dart
179
- ```
180
-
181
- **State Management (2024-2025)**
182
- 1. **Riverpod 3**: Modern, compile-safe, recommended by Flutter team
183
- 2. **Bloc**: Enterprise apps, event-driven, predictable state
184
- 3. **Provider**: Beginners, simple apps
185
- 4. **GetX**: All-in-one (state + routing + DI), opinionated
186
-
187
- **Navigation**
188
- - **GoRouter**: Official recommendation (2024+), declarative routing
189
- - Type-safe routes with code generation
190
- - Deep linking built-in
191
- - Replaces Navigator 2.0 for most use cases
192
-
193
- **Priority Levels (Official)**
194
- 1. **P0**: Fix immediately (crashes, data loss)
195
- 2. **P1**: Fix within days (major features broken)
196
- 3. **P2**: Fix within weeks (annoyances)
197
- 4. **P3**: Nice to have
198
-
199
- ### Testing Strategy
200
-
201
- **Unit Testing**
202
- - **flutter_test**: Built-in testing package
203
- - **Mockito**: Mocking dependencies
204
- - Target: 80%+ code coverage
205
-
206
- **Widget Testing**
207
- - **WidgetTester**: Test UI and interactions
208
- - **Golden Tests**: Visual regression testing
209
-
210
- **Integration Testing**
211
- - **integration_test**: End-to-end testing
212
- - Run on real devices or emulators
213
-
214
- **Example (Widget Testing)**
215
- ```dart
216
- testWidgets('Counter increments', (WidgetTester test-runner) async {
217
- await test-runner.pumpWidget(MyApp());
218
-
219
- expect(find.text('0'), findsOneWidget);
220
- expect(find.text('1'), findsNothing);
221
-
222
- await test-runner.tap(find.byIcon(Icons.add));
223
- await test-runner.pump();
224
-
225
- expect(find.text('0'), findsNothing);
226
- expect(find.text('1'), findsOneWidget);
227
- });
228
- ```
229
-
230
- ### When to Choose Flutter
231
-
232
- **✅ Best For:**
233
- - Performance-critical applications
234
- - Complex animations and custom UI
235
- - Multi-platform (mobile, web, desktop)
236
- - Consistent UI across platforms
237
- - Growing team/startup (fastest development)
238
- - Apps with heavy visual requirements
239
-
240
- **❌ Not Ideal For:**
241
- - Team unfamiliar with Dart
242
- - Heavy reliance on native platform features
243
- - Existing large JavaScript/native codebase
244
- - Small app size critical (<20MB)
245
-
246
- ## Native iOS (Swift/SwiftUI)
247
-
248
- ### Core Concepts
249
-
250
- **Swift 6 (2024-2025)**
251
- - Compile-time data race detection
252
- - Enhanced concurrency: async/await, actors, @MainActor
253
- - Powerful macro system
254
- - Move semantics for performance
255
-
256
- **SwiftUI vs UIKit**
257
- - **SwiftUI**: Declarative, less code, iOS 13+, modern approach
258
- - **UIKit**: Imperative, fine-grained control, legacy support, complex customizations
259
- - Both work together in same project
260
-
261
- ### Architecture Patterns
262
-
263
- **MVVM (Most Popular)**
264
- ```swift
265
- // ViewModel (ObservableObject)
266
- class LoginViewModel: ObservableObject {
267
- @Published var email = ""
268
- @Published var password = ""
269
- @Published var isLoading = false
270
-
271
- func login() async {
272
- isLoading = true
273
- // Login logic
274
- isLoading = false
275
- }
276
- }
277
-
278
- // View
279
- struct LoginView: View {
280
- @StateObject private var viewModel = LoginViewModel()
281
-
282
- var body: some View {
283
- VStack {
284
- TextField("Email", text: $viewModel.email)
285
- SecureField("Password", text: $viewModel.password)
286
- Button("Login") {
287
- Task { await viewModel.login() }
288
- }
289
- }
290
- }
291
- }
292
- ```
293
-
294
- **TCA (The Composable Architecture)**
295
- - Growing adoption (v1.13+)
296
- - Excellent for complex apps
297
- - Steeper learning curve
298
- - Predictable state management
299
-
300
- ### When to Choose Native iOS
301
-
302
- **✅ Best For:**
303
- - iOS-only applications
304
- - Maximum performance required
305
- - Latest Apple features (WidgetKit, Live Activities, App Clips)
306
- - Deep iOS ecosystem integration
307
- - Team with Swift/iOS expertise
308
-
309
- ## Native Android (Kotlin/Jetpack Compose)
310
-
311
- ### Core Concepts
312
-
313
- **Kotlin 2.1 (2024-2025)**
314
- - Null safety by design
315
- - Coroutines for async
316
- - Sealed classes for type-safe states
317
- - Extension functions
318
-
319
- **Jetpack Compose**
320
- - Declarative UI (like SwiftUI/React)
321
- - Widely adopted in top 1,000 apps
322
- - Material Design 3 integration
323
- - Compose compiler with Kotlin 2.0+
324
-
325
- ### Architecture Patterns
326
-
327
- **MVVM + Clean Architecture**
328
- ```kotlin
329
- // ViewModel
330
- class LoginViewModel(
331
- private val loginUseCase: LoginUseCase
332
- ) : ViewModel() {
333
- private val _uiState = MutableStateFlow(LoginUiState())
334
- val uiState: StateFlow<LoginUiState> = _uiState.asStateFlow()
335
-
336
- fun login(email: String, password: String) {
337
- viewModelScope.launch {
338
- _uiState.update { it.copy(isLoading = true) }
339
- loginUseCase(email, password)
340
- .onSuccess { /* Navigate */ }
341
- .onFailure { /* Show error */ }
342
- _uiState.update { it.copy(isLoading = false) }
343
- }
344
- }
345
- }
346
-
347
- // Composable
348
- @Composable
349
- fun LoginScreen(viewModel: LoginViewModel = hiltViewModel()) {
350
- val uiState by viewModel.uiState.collectAsState()
351
-
352
- Column {
353
- TextField(
354
- value = uiState.email,
355
- onValueChange = { /* update */ }
356
- )
357
- Button(onClick = { viewModel.login() }) {
358
- Text("Login")
359
- }
360
- }
361
- }
362
- ```
363
-
364
- ### When to Choose Native Android
365
-
366
- **✅ Best For:**
367
- - Android-only applications
368
- - Maximum performance required
369
- - Material Design 3 implementation
370
- - Deep Android ecosystem integration
371
- - Team with Kotlin/Android expertise
372
-
373
- ## Framework Comparison Matrix
374
-
375
- | Feature | React Native | Flutter | Native iOS | Native Android |
376
- |---------|--------------|---------|------------|----------------|
377
- | **Language** | JavaScript/TS | Dart | Swift | Kotlin |
378
- | **Learning Curve** | Easy | Medium | Medium | Medium |
379
- | **Performance** | 80-90% | 85-95% | 100% | 100% |
380
- | **Hot Reload** | Yes | Yes (fastest) | Previews | Live Edit |
381
- | **Code Sharing** | Web (React) | Web/Desktop | No | No |
382
- | **Community Size** | Huge | Growing | iOS only | Android only |
383
- | **UI Paradigm** | Components | Widgets | Declarative | Declarative |
384
- | **Third-party** | npm (3M+) | pub.dev (23K+) | SPM | Maven |
385
- | **App Size** | 40-50MB | 15-20MB | 10-15MB | 10-15MB |
386
- | **Build Time** | Medium | Fast | Slow (Xcode) | Medium |
387
- | **Debugging** | Chrome/Safari | DevTools | Xcode | Android Studio |
388
- | **Platform Feel** | Needs work | Needs work | Native | Native |
389
- | **Startup Time** | Medium | Fast | Fastest | Fastest |
390
- | **Best For** | JS teams | Performance | iOS-only | Android-only |
391
-
392
- ## Migration Paths
393
-
394
- ### React Native → Flutter
395
- - **Effort**: High (complete rewrite)
396
- - **Timeline**: 3-6 months for medium app
397
- - **Benefits**: Better performance, smaller app size
398
- - **Challenges**: New language (Dart), different ecosystem
399
-
400
- ### Flutter → React Native
401
- - **Effort**: High (complete rewrite)
402
- - **Timeline**: 3-6 months for medium app
403
- - **Benefits**: Larger community, web code sharing
404
- - **Challenges**: Lower performance, larger app size
405
-
406
- ### Cross-Platform → Native
407
- - **Effort**: Very High (separate iOS and Android apps)
408
- - **Timeline**: 6-12 months for medium app
409
- - **Benefits**: Maximum performance, platform features
410
- - **Challenges**: Maintain two codebases, 2x team size
411
-
412
- ### Native → Cross-Platform
413
- - **Effort**: High (consolidate to one codebase)
414
- - **Timeline**: 4-8 months for medium app
415
- - **Benefits**: Single codebase, faster development
416
- - **Challenges**: Performance tradeoffs, platform differences
417
-
418
- ## Decision Framework
419
-
420
- ### Start Here: Do you need native performance?
421
- - **No** → Cross-platform (React Native or Flutter)
422
- - **Yes** → Native (Swift or Kotlin)
423
-
424
- ### If Cross-Platform: Does team know JavaScript?
425
- - **Yes** → React Native
426
- - **No** → Flutter
427
-
428
- ### If Native: iOS-only or Android-only?
429
- - **iOS-only** → Swift/SwiftUI
430
- - **Android-only** → Kotlin/Compose
431
- - **Both** → Reconsider cross-platform
432
-
433
- ### Additional Factors:
434
- - **Existing codebase**: Use same technology
435
- - **Web app exists**: React Native (code sharing)
436
- - **Desktop needed**: Flutter (multi-platform)
437
- - **Budget constrained**: Cross-platform
438
- - **Performance critical**: Native
439
- - **Complex animations**: Flutter or Native
440
- - **Commercial focus**: React Native (larger market share)
441
-
442
- ## Resources
443
-
444
- **React Native:**
445
- - Official Docs: https://reactnative.dev/
446
- - New Architecture: https://reactnative.dev/docs/the-new-architecture/landing-page
447
- - Expo: https://expo.dev/ (recommended framework)
448
- - Directory: https://reactnative.directory/
449
-
450
- **Flutter:**
451
- - Official Docs: https://flutter.dev/
452
- - Pub.dev: https://pub.dev/
453
- - Codelabs: https://flutter.dev/codelabs
454
- - Widget Catalog: https://flutter.dev/widgets
455
-
456
- **Native iOS:**
457
- - Swift Docs: https://swift.org/documentation/
458
- - SwiftUI Tutorials: https://developer.apple.com/tutorials/swiftui
459
- - iOS HIG: https://developer.apple.com/design/human-interface-guidelines/
460
-
461
- **Native Android:**
462
- - Kotlin Docs: https://kotlinlang.org/docs/home.html
463
- - Compose Docs: https://developer.android.com/jetpack/compose
464
- - Material 3: https://m3.material.io/
465
- - Android Guides: https://developer.android.com/guide