@wazir-dev/cli 1.0.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 (629) hide show
  1. package/AGENTS.md +111 -0
  2. package/CHANGELOG.md +14 -0
  3. package/CONTRIBUTING.md +101 -0
  4. package/LICENSE +21 -0
  5. package/README.md +314 -0
  6. package/assets/composition-engine.mmd +34 -0
  7. package/assets/demo-script.sh +17 -0
  8. package/assets/logo-dark.svg +14 -0
  9. package/assets/logo.svg +14 -0
  10. package/assets/pipeline.mmd +39 -0
  11. package/assets/record-demo.sh +51 -0
  12. package/docs/README.md +51 -0
  13. package/docs/adapters/context-mode.md +60 -0
  14. package/docs/concepts/architecture.md +87 -0
  15. package/docs/concepts/artifact-model.md +60 -0
  16. package/docs/concepts/composition-engine.md +36 -0
  17. package/docs/concepts/indexing-and-recall.md +160 -0
  18. package/docs/concepts/observability.md +41 -0
  19. package/docs/concepts/roles-and-workflows.md +59 -0
  20. package/docs/concepts/terminology-policy.md +27 -0
  21. package/docs/getting-started/01-installation.md +78 -0
  22. package/docs/getting-started/02-first-run.md +102 -0
  23. package/docs/getting-started/03-adding-to-project.md +15 -0
  24. package/docs/getting-started/04-host-setup.md +15 -0
  25. package/docs/guides/ci-integration.md +15 -0
  26. package/docs/guides/creating-skills.md +15 -0
  27. package/docs/guides/expertise-module-authoring.md +15 -0
  28. package/docs/guides/hook-development.md +15 -0
  29. package/docs/guides/memory-and-learnings.md +34 -0
  30. package/docs/guides/multi-host-export.md +15 -0
  31. package/docs/guides/troubleshooting.md +101 -0
  32. package/docs/guides/writing-custom-roles.md +15 -0
  33. package/docs/plans/2026-03-15-cli-pipeline-integration-design.md +592 -0
  34. package/docs/plans/2026-03-15-cli-pipeline-integration-plan.md +598 -0
  35. package/docs/plans/2026-03-15-docs-enforcement-plan.md +238 -0
  36. package/docs/readmes/INDEX.md +99 -0
  37. package/docs/readmes/features/expertise/README.md +171 -0
  38. package/docs/readmes/features/exports/README.md +222 -0
  39. package/docs/readmes/features/hooks/README.md +103 -0
  40. package/docs/readmes/features/hooks/loop-cap-guard.md +133 -0
  41. package/docs/readmes/features/hooks/post-tool-capture.md +121 -0
  42. package/docs/readmes/features/hooks/post-tool-lint.md +130 -0
  43. package/docs/readmes/features/hooks/pre-compact-summary.md +122 -0
  44. package/docs/readmes/features/hooks/pre-tool-capture-route.md +100 -0
  45. package/docs/readmes/features/hooks/protected-path-write-guard.md +128 -0
  46. package/docs/readmes/features/hooks/session-start.md +119 -0
  47. package/docs/readmes/features/hooks/stop-handoff-harvest.md +125 -0
  48. package/docs/readmes/features/roles/README.md +157 -0
  49. package/docs/readmes/features/roles/clarifier.md +152 -0
  50. package/docs/readmes/features/roles/content-author.md +190 -0
  51. package/docs/readmes/features/roles/designer.md +193 -0
  52. package/docs/readmes/features/roles/executor.md +184 -0
  53. package/docs/readmes/features/roles/learner.md +210 -0
  54. package/docs/readmes/features/roles/planner.md +182 -0
  55. package/docs/readmes/features/roles/researcher.md +164 -0
  56. package/docs/readmes/features/roles/reviewer.md +184 -0
  57. package/docs/readmes/features/roles/specifier.md +162 -0
  58. package/docs/readmes/features/roles/verifier.md +215 -0
  59. package/docs/readmes/features/schemas/README.md +178 -0
  60. package/docs/readmes/features/skills/README.md +63 -0
  61. package/docs/readmes/features/skills/brainstorming.md +96 -0
  62. package/docs/readmes/features/skills/debugging.md +148 -0
  63. package/docs/readmes/features/skills/design.md +120 -0
  64. package/docs/readmes/features/skills/prepare-next.md +109 -0
  65. package/docs/readmes/features/skills/run-audit.md +159 -0
  66. package/docs/readmes/features/skills/scan-project.md +109 -0
  67. package/docs/readmes/features/skills/self-audit.md +176 -0
  68. package/docs/readmes/features/skills/tdd.md +137 -0
  69. package/docs/readmes/features/skills/using-skills.md +92 -0
  70. package/docs/readmes/features/skills/verification.md +120 -0
  71. package/docs/readmes/features/skills/writing-plans.md +104 -0
  72. package/docs/readmes/features/tooling/README.md +320 -0
  73. package/docs/readmes/features/workflows/README.md +186 -0
  74. package/docs/readmes/features/workflows/author.md +181 -0
  75. package/docs/readmes/features/workflows/clarify.md +154 -0
  76. package/docs/readmes/features/workflows/design-review.md +171 -0
  77. package/docs/readmes/features/workflows/design.md +169 -0
  78. package/docs/readmes/features/workflows/discover.md +162 -0
  79. package/docs/readmes/features/workflows/execute.md +173 -0
  80. package/docs/readmes/features/workflows/learn.md +167 -0
  81. package/docs/readmes/features/workflows/plan-review.md +165 -0
  82. package/docs/readmes/features/workflows/plan.md +170 -0
  83. package/docs/readmes/features/workflows/prepare-next.md +167 -0
  84. package/docs/readmes/features/workflows/review.md +169 -0
  85. package/docs/readmes/features/workflows/run-audit.md +191 -0
  86. package/docs/readmes/features/workflows/spec-challenge.md +159 -0
  87. package/docs/readmes/features/workflows/specify.md +160 -0
  88. package/docs/readmes/features/workflows/verify.md +177 -0
  89. package/docs/readmes/packages/README.md +50 -0
  90. package/docs/readmes/packages/ajv.md +117 -0
  91. package/docs/readmes/packages/context-mode.md +118 -0
  92. package/docs/readmes/packages/gray-matter.md +116 -0
  93. package/docs/readmes/packages/node-test.md +137 -0
  94. package/docs/readmes/packages/yaml.md +112 -0
  95. package/docs/reference/configuration-reference.md +159 -0
  96. package/docs/reference/expertise-index.md +52 -0
  97. package/docs/reference/git-flow.md +43 -0
  98. package/docs/reference/hooks.md +87 -0
  99. package/docs/reference/host-exports.md +50 -0
  100. package/docs/reference/launch-checklist.md +172 -0
  101. package/docs/reference/marketplace-listings.md +76 -0
  102. package/docs/reference/release-process.md +34 -0
  103. package/docs/reference/roles-reference.md +77 -0
  104. package/docs/reference/skills.md +33 -0
  105. package/docs/reference/templates.md +29 -0
  106. package/docs/reference/tooling-cli.md +94 -0
  107. package/docs/truth-claims.yaml +222 -0
  108. package/expertise/PROGRESS.md +63 -0
  109. package/expertise/README.md +18 -0
  110. package/expertise/antipatterns/PROGRESS.md +56 -0
  111. package/expertise/antipatterns/backend/api-design-antipatterns.md +1271 -0
  112. package/expertise/antipatterns/backend/auth-antipatterns.md +1195 -0
  113. package/expertise/antipatterns/backend/caching-antipatterns.md +622 -0
  114. package/expertise/antipatterns/backend/database-antipatterns.md +1038 -0
  115. package/expertise/antipatterns/backend/index.md +24 -0
  116. package/expertise/antipatterns/backend/microservices-antipatterns.md +850 -0
  117. package/expertise/antipatterns/code/architecture-antipatterns.md +919 -0
  118. package/expertise/antipatterns/code/async-antipatterns.md +622 -0
  119. package/expertise/antipatterns/code/code-smells.md +1186 -0
  120. package/expertise/antipatterns/code/dependency-antipatterns.md +1209 -0
  121. package/expertise/antipatterns/code/error-handling-antipatterns.md +1360 -0
  122. package/expertise/antipatterns/code/index.md +27 -0
  123. package/expertise/antipatterns/code/naming-and-abstraction.md +1118 -0
  124. package/expertise/antipatterns/code/state-management-antipatterns.md +1076 -0
  125. package/expertise/antipatterns/code/testing-antipatterns.md +1053 -0
  126. package/expertise/antipatterns/design/accessibility-antipatterns.md +1136 -0
  127. package/expertise/antipatterns/design/dark-patterns.md +1121 -0
  128. package/expertise/antipatterns/design/index.md +22 -0
  129. package/expertise/antipatterns/design/ui-antipatterns.md +1202 -0
  130. package/expertise/antipatterns/design/ux-antipatterns.md +680 -0
  131. package/expertise/antipatterns/frontend/css-layout-antipatterns.md +691 -0
  132. package/expertise/antipatterns/frontend/flutter-antipatterns.md +1827 -0
  133. package/expertise/antipatterns/frontend/index.md +23 -0
  134. package/expertise/antipatterns/frontend/mobile-antipatterns.md +573 -0
  135. package/expertise/antipatterns/frontend/react-antipatterns.md +1128 -0
  136. package/expertise/antipatterns/frontend/spa-antipatterns.md +1235 -0
  137. package/expertise/antipatterns/index.md +31 -0
  138. package/expertise/antipatterns/performance/index.md +20 -0
  139. package/expertise/antipatterns/performance/performance-antipatterns.md +1013 -0
  140. package/expertise/antipatterns/performance/premature-optimization.md +623 -0
  141. package/expertise/antipatterns/performance/scaling-antipatterns.md +785 -0
  142. package/expertise/antipatterns/process/ai-coding-antipatterns.md +853 -0
  143. package/expertise/antipatterns/process/code-review-antipatterns.md +656 -0
  144. package/expertise/antipatterns/process/deployment-antipatterns.md +920 -0
  145. package/expertise/antipatterns/process/index.md +23 -0
  146. package/expertise/antipatterns/process/technical-debt-antipatterns.md +647 -0
  147. package/expertise/antipatterns/security/index.md +20 -0
  148. package/expertise/antipatterns/security/secrets-antipatterns.md +849 -0
  149. package/expertise/antipatterns/security/security-theater.md +843 -0
  150. package/expertise/antipatterns/security/vulnerability-patterns.md +801 -0
  151. package/expertise/architecture/PROGRESS.md +70 -0
  152. package/expertise/architecture/data/caching-architecture.md +671 -0
  153. package/expertise/architecture/data/data-consistency.md +574 -0
  154. package/expertise/architecture/data/data-modeling.md +536 -0
  155. package/expertise/architecture/data/event-streams-and-queues.md +634 -0
  156. package/expertise/architecture/data/index.md +25 -0
  157. package/expertise/architecture/data/search-architecture.md +663 -0
  158. package/expertise/architecture/data/sql-vs-nosql.md +708 -0
  159. package/expertise/architecture/decisions/architecture-decision-records.md +640 -0
  160. package/expertise/architecture/decisions/build-vs-buy.md +616 -0
  161. package/expertise/architecture/decisions/index.md +23 -0
  162. package/expertise/architecture/decisions/monolith-to-microservices.md +790 -0
  163. package/expertise/architecture/decisions/technology-selection.md +616 -0
  164. package/expertise/architecture/distributed/cap-theorem-and-tradeoffs.md +800 -0
  165. package/expertise/architecture/distributed/circuit-breaker-bulkhead.md +741 -0
  166. package/expertise/architecture/distributed/consensus-and-coordination.md +796 -0
  167. package/expertise/architecture/distributed/distributed-systems-fundamentals.md +564 -0
  168. package/expertise/architecture/distributed/idempotency-and-retry.md +796 -0
  169. package/expertise/architecture/distributed/index.md +25 -0
  170. package/expertise/architecture/distributed/saga-pattern.md +797 -0
  171. package/expertise/architecture/foundations/architectural-thinking.md +460 -0
  172. package/expertise/architecture/foundations/coupling-and-cohesion.md +770 -0
  173. package/expertise/architecture/foundations/design-principles-solid.md +649 -0
  174. package/expertise/architecture/foundations/domain-driven-design.md +719 -0
  175. package/expertise/architecture/foundations/index.md +25 -0
  176. package/expertise/architecture/foundations/separation-of-concerns.md +472 -0
  177. package/expertise/architecture/foundations/twelve-factor-app.md +797 -0
  178. package/expertise/architecture/index.md +34 -0
  179. package/expertise/architecture/integration/api-design-graphql.md +638 -0
  180. package/expertise/architecture/integration/api-design-grpc.md +804 -0
  181. package/expertise/architecture/integration/api-design-rest.md +892 -0
  182. package/expertise/architecture/integration/index.md +25 -0
  183. package/expertise/architecture/integration/third-party-integration.md +795 -0
  184. package/expertise/architecture/integration/webhooks-and-callbacks.md +1152 -0
  185. package/expertise/architecture/integration/websockets-realtime.md +791 -0
  186. package/expertise/architecture/mobile-architecture/index.md +22 -0
  187. package/expertise/architecture/mobile-architecture/mobile-app-architecture.md +780 -0
  188. package/expertise/architecture/mobile-architecture/mobile-backend-for-frontend.md +670 -0
  189. package/expertise/architecture/mobile-architecture/offline-first.md +719 -0
  190. package/expertise/architecture/mobile-architecture/push-and-sync.md +782 -0
  191. package/expertise/architecture/patterns/cqrs-event-sourcing.md +717 -0
  192. package/expertise/architecture/patterns/event-driven.md +797 -0
  193. package/expertise/architecture/patterns/hexagonal-clean-architecture.md +870 -0
  194. package/expertise/architecture/patterns/index.md +27 -0
  195. package/expertise/architecture/patterns/layered-architecture.md +736 -0
  196. package/expertise/architecture/patterns/microservices.md +753 -0
  197. package/expertise/architecture/patterns/modular-monolith.md +692 -0
  198. package/expertise/architecture/patterns/monolith.md +626 -0
  199. package/expertise/architecture/patterns/plugin-architecture.md +735 -0
  200. package/expertise/architecture/patterns/serverless.md +780 -0
  201. package/expertise/architecture/scaling/database-scaling.md +615 -0
  202. package/expertise/architecture/scaling/feature-flags-and-rollouts.md +757 -0
  203. package/expertise/architecture/scaling/horizontal-vs-vertical.md +606 -0
  204. package/expertise/architecture/scaling/index.md +24 -0
  205. package/expertise/architecture/scaling/multi-tenancy.md +800 -0
  206. package/expertise/architecture/scaling/stateless-design.md +787 -0
  207. package/expertise/backend/embedded-firmware.md +625 -0
  208. package/expertise/backend/go.md +853 -0
  209. package/expertise/backend/index.md +24 -0
  210. package/expertise/backend/java-spring.md +448 -0
  211. package/expertise/backend/node-typescript.md +625 -0
  212. package/expertise/backend/python-fastapi.md +724 -0
  213. package/expertise/backend/rust.md +458 -0
  214. package/expertise/backend/solidity.md +711 -0
  215. package/expertise/composition-map.yaml +443 -0
  216. package/expertise/content/foundations/content-modeling.md +395 -0
  217. package/expertise/content/foundations/editorial-standards.md +449 -0
  218. package/expertise/content/foundations/index.md +24 -0
  219. package/expertise/content/foundations/microcopy.md +455 -0
  220. package/expertise/content/foundations/terminology-governance.md +509 -0
  221. package/expertise/content/index.md +34 -0
  222. package/expertise/content/patterns/accessibility-copy.md +518 -0
  223. package/expertise/content/patterns/index.md +24 -0
  224. package/expertise/content/patterns/notification-content.md +433 -0
  225. package/expertise/content/patterns/sample-content.md +486 -0
  226. package/expertise/content/patterns/state-copy.md +439 -0
  227. package/expertise/design/PROGRESS.md +58 -0
  228. package/expertise/design/disciplines/dark-mode-theming.md +577 -0
  229. package/expertise/design/disciplines/design-systems.md +595 -0
  230. package/expertise/design/disciplines/index.md +25 -0
  231. package/expertise/design/disciplines/information-architecture.md +800 -0
  232. package/expertise/design/disciplines/interaction-design.md +788 -0
  233. package/expertise/design/disciplines/responsive-design.md +552 -0
  234. package/expertise/design/disciplines/usability-testing.md +516 -0
  235. package/expertise/design/disciplines/user-research.md +792 -0
  236. package/expertise/design/foundations/accessibility-design.md +796 -0
  237. package/expertise/design/foundations/color-theory.md +797 -0
  238. package/expertise/design/foundations/iconography.md +795 -0
  239. package/expertise/design/foundations/index.md +26 -0
  240. package/expertise/design/foundations/motion-and-animation.md +653 -0
  241. package/expertise/design/foundations/rtl-design.md +585 -0
  242. package/expertise/design/foundations/spacing-and-layout.md +607 -0
  243. package/expertise/design/foundations/typography.md +800 -0
  244. package/expertise/design/foundations/visual-hierarchy.md +761 -0
  245. package/expertise/design/index.md +32 -0
  246. package/expertise/design/patterns/authentication-flows.md +474 -0
  247. package/expertise/design/patterns/content-consumption.md +789 -0
  248. package/expertise/design/patterns/data-display.md +618 -0
  249. package/expertise/design/patterns/e-commerce.md +1494 -0
  250. package/expertise/design/patterns/feedback-and-states.md +642 -0
  251. package/expertise/design/patterns/forms-and-input.md +819 -0
  252. package/expertise/design/patterns/gamification.md +801 -0
  253. package/expertise/design/patterns/index.md +31 -0
  254. package/expertise/design/patterns/microinteractions.md +449 -0
  255. package/expertise/design/patterns/navigation.md +800 -0
  256. package/expertise/design/patterns/notifications.md +705 -0
  257. package/expertise/design/patterns/onboarding.md +700 -0
  258. package/expertise/design/patterns/search-and-filter.md +601 -0
  259. package/expertise/design/patterns/settings-and-preferences.md +768 -0
  260. package/expertise/design/patterns/social-and-community.md +748 -0
  261. package/expertise/design/platforms/desktop-native.md +612 -0
  262. package/expertise/design/platforms/index.md +25 -0
  263. package/expertise/design/platforms/mobile-android.md +825 -0
  264. package/expertise/design/platforms/mobile-cross-platform.md +983 -0
  265. package/expertise/design/platforms/mobile-ios.md +699 -0
  266. package/expertise/design/platforms/tablet.md +794 -0
  267. package/expertise/design/platforms/web-dashboard.md +790 -0
  268. package/expertise/design/platforms/web-responsive.md +550 -0
  269. package/expertise/design/psychology/behavioral-nudges.md +449 -0
  270. package/expertise/design/psychology/cognitive-load.md +1191 -0
  271. package/expertise/design/psychology/error-psychology.md +778 -0
  272. package/expertise/design/psychology/index.md +22 -0
  273. package/expertise/design/psychology/persuasive-design.md +736 -0
  274. package/expertise/design/psychology/user-mental-models.md +623 -0
  275. package/expertise/design/tooling/open-pencil.md +266 -0
  276. package/expertise/frontend/angular.md +1073 -0
  277. package/expertise/frontend/desktop-electron.md +546 -0
  278. package/expertise/frontend/flutter.md +782 -0
  279. package/expertise/frontend/index.md +27 -0
  280. package/expertise/frontend/native-android.md +409 -0
  281. package/expertise/frontend/native-ios.md +490 -0
  282. package/expertise/frontend/react-native.md +1160 -0
  283. package/expertise/frontend/react.md +808 -0
  284. package/expertise/frontend/vue.md +1089 -0
  285. package/expertise/humanize/domain-rules-code.md +79 -0
  286. package/expertise/humanize/domain-rules-content.md +67 -0
  287. package/expertise/humanize/domain-rules-technical-docs.md +56 -0
  288. package/expertise/humanize/index.md +35 -0
  289. package/expertise/humanize/self-audit-checklist.md +87 -0
  290. package/expertise/humanize/sentence-patterns.md +218 -0
  291. package/expertise/humanize/vocabulary-blacklist.md +105 -0
  292. package/expertise/i18n/PROGRESS.md +65 -0
  293. package/expertise/i18n/advanced/accessibility-and-i18n.md +28 -0
  294. package/expertise/i18n/advanced/bidirectional-text-algorithm.md +38 -0
  295. package/expertise/i18n/advanced/complex-scripts.md +30 -0
  296. package/expertise/i18n/advanced/performance-and-i18n.md +27 -0
  297. package/expertise/i18n/advanced/testing-i18n.md +28 -0
  298. package/expertise/i18n/content/content-adaptation.md +23 -0
  299. package/expertise/i18n/content/locale-specific-formatting.md +23 -0
  300. package/expertise/i18n/content/machine-translation-integration.md +28 -0
  301. package/expertise/i18n/content/translation-management.md +29 -0
  302. package/expertise/i18n/foundations/date-time-calendars.md +67 -0
  303. package/expertise/i18n/foundations/i18n-architecture.md +272 -0
  304. package/expertise/i18n/foundations/locale-and-language-tags.md +79 -0
  305. package/expertise/i18n/foundations/numbers-currency-units.md +61 -0
  306. package/expertise/i18n/foundations/pluralization-and-gender.md +109 -0
  307. package/expertise/i18n/foundations/string-externalization.md +236 -0
  308. package/expertise/i18n/foundations/text-direction-bidi.md +241 -0
  309. package/expertise/i18n/foundations/unicode-and-encoding.md +86 -0
  310. package/expertise/i18n/index.md +38 -0
  311. package/expertise/i18n/platform/backend-i18n.md +31 -0
  312. package/expertise/i18n/platform/flutter-i18n.md +148 -0
  313. package/expertise/i18n/platform/native-android-i18n.md +36 -0
  314. package/expertise/i18n/platform/native-ios-i18n.md +36 -0
  315. package/expertise/i18n/platform/react-i18n.md +103 -0
  316. package/expertise/i18n/platform/web-css-i18n.md +81 -0
  317. package/expertise/i18n/rtl/arabic-specific.md +175 -0
  318. package/expertise/i18n/rtl/hebrew-specific.md +149 -0
  319. package/expertise/i18n/rtl/rtl-animations-and-transitions.md +111 -0
  320. package/expertise/i18n/rtl/rtl-forms-and-input.md +161 -0
  321. package/expertise/i18n/rtl/rtl-fundamentals.md +211 -0
  322. package/expertise/i18n/rtl/rtl-icons-and-images.md +181 -0
  323. package/expertise/i18n/rtl/rtl-layout-mirroring.md +252 -0
  324. package/expertise/i18n/rtl/rtl-navigation-and-gestures.md +107 -0
  325. package/expertise/i18n/rtl/rtl-testing-and-qa.md +147 -0
  326. package/expertise/i18n/rtl/rtl-typography.md +160 -0
  327. package/expertise/index.md +113 -0
  328. package/expertise/index.yaml +216 -0
  329. package/expertise/infrastructure/cloud-aws.md +597 -0
  330. package/expertise/infrastructure/cloud-gcp.md +599 -0
  331. package/expertise/infrastructure/cybersecurity.md +816 -0
  332. package/expertise/infrastructure/database-mongodb.md +447 -0
  333. package/expertise/infrastructure/database-postgres.md +400 -0
  334. package/expertise/infrastructure/devops-cicd.md +787 -0
  335. package/expertise/infrastructure/index.md +27 -0
  336. package/expertise/performance/PROGRESS.md +50 -0
  337. package/expertise/performance/backend/api-latency.md +1204 -0
  338. package/expertise/performance/backend/background-jobs.md +506 -0
  339. package/expertise/performance/backend/connection-pooling.md +1209 -0
  340. package/expertise/performance/backend/database-query-optimization.md +515 -0
  341. package/expertise/performance/backend/index.md +23 -0
  342. package/expertise/performance/backend/rate-limiting-and-throttling.md +971 -0
  343. package/expertise/performance/foundations/algorithmic-complexity.md +954 -0
  344. package/expertise/performance/foundations/caching-strategies.md +489 -0
  345. package/expertise/performance/foundations/concurrency-and-parallelism.md +847 -0
  346. package/expertise/performance/foundations/index.md +24 -0
  347. package/expertise/performance/foundations/measuring-and-profiling.md +440 -0
  348. package/expertise/performance/foundations/memory-management.md +964 -0
  349. package/expertise/performance/foundations/performance-budgets.md +1314 -0
  350. package/expertise/performance/index.md +31 -0
  351. package/expertise/performance/infrastructure/auto-scaling.md +1059 -0
  352. package/expertise/performance/infrastructure/cdn-and-edge.md +1081 -0
  353. package/expertise/performance/infrastructure/index.md +22 -0
  354. package/expertise/performance/infrastructure/load-balancing.md +1081 -0
  355. package/expertise/performance/infrastructure/observability.md +1079 -0
  356. package/expertise/performance/mobile/index.md +23 -0
  357. package/expertise/performance/mobile/mobile-animations.md +544 -0
  358. package/expertise/performance/mobile/mobile-memory-battery.md +416 -0
  359. package/expertise/performance/mobile/mobile-network.md +452 -0
  360. package/expertise/performance/mobile/mobile-rendering.md +599 -0
  361. package/expertise/performance/mobile/mobile-startup-time.md +505 -0
  362. package/expertise/performance/platform-specific/flutter-performance.md +647 -0
  363. package/expertise/performance/platform-specific/index.md +22 -0
  364. package/expertise/performance/platform-specific/node-performance.md +1307 -0
  365. package/expertise/performance/platform-specific/postgres-performance.md +1366 -0
  366. package/expertise/performance/platform-specific/react-performance.md +1403 -0
  367. package/expertise/performance/web/bundle-optimization.md +1239 -0
  368. package/expertise/performance/web/image-and-media.md +636 -0
  369. package/expertise/performance/web/index.md +24 -0
  370. package/expertise/performance/web/network-optimization.md +1133 -0
  371. package/expertise/performance/web/rendering-performance.md +1098 -0
  372. package/expertise/performance/web/ssr-and-hydration.md +918 -0
  373. package/expertise/performance/web/web-vitals.md +1374 -0
  374. package/expertise/quality/accessibility.md +985 -0
  375. package/expertise/quality/evidence-based-verification.md +499 -0
  376. package/expertise/quality/index.md +24 -0
  377. package/expertise/quality/ml-model-audit.md +614 -0
  378. package/expertise/quality/performance.md +600 -0
  379. package/expertise/quality/testing-api.md +891 -0
  380. package/expertise/quality/testing-mobile.md +496 -0
  381. package/expertise/quality/testing-web.md +849 -0
  382. package/expertise/security/PROGRESS.md +54 -0
  383. package/expertise/security/agentic-identity.md +540 -0
  384. package/expertise/security/compliance-frameworks.md +601 -0
  385. package/expertise/security/data/data-encryption.md +364 -0
  386. package/expertise/security/data/data-privacy-gdpr.md +692 -0
  387. package/expertise/security/data/database-security.md +1171 -0
  388. package/expertise/security/data/index.md +22 -0
  389. package/expertise/security/data/pii-handling.md +531 -0
  390. package/expertise/security/foundations/authentication.md +1041 -0
  391. package/expertise/security/foundations/authorization.md +603 -0
  392. package/expertise/security/foundations/cryptography.md +1001 -0
  393. package/expertise/security/foundations/index.md +25 -0
  394. package/expertise/security/foundations/owasp-top-10.md +1354 -0
  395. package/expertise/security/foundations/secrets-management.md +1217 -0
  396. package/expertise/security/foundations/secure-sdlc.md +700 -0
  397. package/expertise/security/foundations/supply-chain-security.md +698 -0
  398. package/expertise/security/index.md +31 -0
  399. package/expertise/security/infrastructure/cloud-security-aws.md +1296 -0
  400. package/expertise/security/infrastructure/cloud-security-gcp.md +1376 -0
  401. package/expertise/security/infrastructure/container-security.md +721 -0
  402. package/expertise/security/infrastructure/incident-response.md +1295 -0
  403. package/expertise/security/infrastructure/index.md +24 -0
  404. package/expertise/security/infrastructure/logging-and-monitoring.md +1618 -0
  405. package/expertise/security/infrastructure/network-security.md +1337 -0
  406. package/expertise/security/mobile/index.md +23 -0
  407. package/expertise/security/mobile/mobile-android-security.md +1218 -0
  408. package/expertise/security/mobile/mobile-binary-protection.md +1229 -0
  409. package/expertise/security/mobile/mobile-data-storage.md +1265 -0
  410. package/expertise/security/mobile/mobile-ios-security.md +1401 -0
  411. package/expertise/security/mobile/mobile-network-security.md +1520 -0
  412. package/expertise/security/smart-contract-security.md +594 -0
  413. package/expertise/security/testing/index.md +22 -0
  414. package/expertise/security/testing/penetration-testing.md +1258 -0
  415. package/expertise/security/testing/security-code-review.md +1765 -0
  416. package/expertise/security/testing/threat-modeling.md +1074 -0
  417. package/expertise/security/testing/vulnerability-scanning.md +1062 -0
  418. package/expertise/security/web/api-security.md +586 -0
  419. package/expertise/security/web/cors-and-headers.md +433 -0
  420. package/expertise/security/web/csrf.md +562 -0
  421. package/expertise/security/web/file-upload.md +1477 -0
  422. package/expertise/security/web/index.md +25 -0
  423. package/expertise/security/web/injection.md +1375 -0
  424. package/expertise/security/web/session-management.md +1101 -0
  425. package/expertise/security/web/xss.md +1158 -0
  426. package/exports/README.md +17 -0
  427. package/exports/hosts/claude/.claude/agents/clarifier.md +42 -0
  428. package/exports/hosts/claude/.claude/agents/content-author.md +63 -0
  429. package/exports/hosts/claude/.claude/agents/designer.md +55 -0
  430. package/exports/hosts/claude/.claude/agents/executor.md +55 -0
  431. package/exports/hosts/claude/.claude/agents/learner.md +51 -0
  432. package/exports/hosts/claude/.claude/agents/planner.md +53 -0
  433. package/exports/hosts/claude/.claude/agents/researcher.md +43 -0
  434. package/exports/hosts/claude/.claude/agents/reviewer.md +54 -0
  435. package/exports/hosts/claude/.claude/agents/specifier.md +47 -0
  436. package/exports/hosts/claude/.claude/agents/verifier.md +71 -0
  437. package/exports/hosts/claude/.claude/commands/author.md +42 -0
  438. package/exports/hosts/claude/.claude/commands/clarify.md +38 -0
  439. package/exports/hosts/claude/.claude/commands/design-review.md +46 -0
  440. package/exports/hosts/claude/.claude/commands/design.md +44 -0
  441. package/exports/hosts/claude/.claude/commands/discover.md +37 -0
  442. package/exports/hosts/claude/.claude/commands/execute.md +48 -0
  443. package/exports/hosts/claude/.claude/commands/learn.md +38 -0
  444. package/exports/hosts/claude/.claude/commands/plan-review.md +42 -0
  445. package/exports/hosts/claude/.claude/commands/plan.md +39 -0
  446. package/exports/hosts/claude/.claude/commands/prepare-next.md +37 -0
  447. package/exports/hosts/claude/.claude/commands/review.md +40 -0
  448. package/exports/hosts/claude/.claude/commands/run-audit.md +41 -0
  449. package/exports/hosts/claude/.claude/commands/spec-challenge.md +41 -0
  450. package/exports/hosts/claude/.claude/commands/specify.md +38 -0
  451. package/exports/hosts/claude/.claude/commands/verify.md +37 -0
  452. package/exports/hosts/claude/.claude/settings.json +34 -0
  453. package/exports/hosts/claude/CLAUDE.md +19 -0
  454. package/exports/hosts/claude/export.manifest.json +38 -0
  455. package/exports/hosts/claude/host-package.json +67 -0
  456. package/exports/hosts/codex/AGENTS.md +19 -0
  457. package/exports/hosts/codex/export.manifest.json +38 -0
  458. package/exports/hosts/codex/host-package.json +41 -0
  459. package/exports/hosts/cursor/.cursor/hooks.json +16 -0
  460. package/exports/hosts/cursor/.cursor/rules/wazir-core.mdc +19 -0
  461. package/exports/hosts/cursor/export.manifest.json +38 -0
  462. package/exports/hosts/cursor/host-package.json +42 -0
  463. package/exports/hosts/gemini/GEMINI.md +19 -0
  464. package/exports/hosts/gemini/export.manifest.json +38 -0
  465. package/exports/hosts/gemini/host-package.json +41 -0
  466. package/hooks/README.md +18 -0
  467. package/hooks/definitions/loop_cap_guard.yaml +21 -0
  468. package/hooks/definitions/post_tool_capture.yaml +24 -0
  469. package/hooks/definitions/pre_compact_summary.yaml +19 -0
  470. package/hooks/definitions/pre_tool_capture_route.yaml +19 -0
  471. package/hooks/definitions/protected_path_write_guard.yaml +19 -0
  472. package/hooks/definitions/session_start.yaml +19 -0
  473. package/hooks/definitions/stop_handoff_harvest.yaml +20 -0
  474. package/hooks/loop-cap-guard +17 -0
  475. package/hooks/post-tool-lint +36 -0
  476. package/hooks/protected-path-write-guard +17 -0
  477. package/hooks/session-start +41 -0
  478. package/llms-full.txt +2355 -0
  479. package/llms.txt +43 -0
  480. package/package.json +79 -0
  481. package/roles/README.md +20 -0
  482. package/roles/clarifier.md +42 -0
  483. package/roles/content-author.md +63 -0
  484. package/roles/designer.md +55 -0
  485. package/roles/executor.md +55 -0
  486. package/roles/learner.md +51 -0
  487. package/roles/planner.md +53 -0
  488. package/roles/researcher.md +43 -0
  489. package/roles/reviewer.md +54 -0
  490. package/roles/specifier.md +47 -0
  491. package/roles/verifier.md +71 -0
  492. package/schemas/README.md +24 -0
  493. package/schemas/accepted-learning.schema.json +20 -0
  494. package/schemas/author-artifact.schema.json +156 -0
  495. package/schemas/clarification.schema.json +19 -0
  496. package/schemas/design-artifact.schema.json +80 -0
  497. package/schemas/docs-claim.schema.json +18 -0
  498. package/schemas/export-manifest.schema.json +20 -0
  499. package/schemas/hook.schema.json +67 -0
  500. package/schemas/host-export-package.schema.json +18 -0
  501. package/schemas/implementation-plan.schema.json +19 -0
  502. package/schemas/proposed-learning.schema.json +19 -0
  503. package/schemas/research.schema.json +18 -0
  504. package/schemas/review.schema.json +29 -0
  505. package/schemas/run-manifest.schema.json +18 -0
  506. package/schemas/spec-challenge.schema.json +18 -0
  507. package/schemas/spec.schema.json +20 -0
  508. package/schemas/usage.schema.json +102 -0
  509. package/schemas/verification-proof.schema.json +29 -0
  510. package/schemas/wazir-manifest.schema.json +173 -0
  511. package/skills/README.md +40 -0
  512. package/skills/brainstorming/SKILL.md +77 -0
  513. package/skills/debugging/SKILL.md +50 -0
  514. package/skills/design/SKILL.md +61 -0
  515. package/skills/dispatching-parallel-agents/SKILL.md +128 -0
  516. package/skills/executing-plans/SKILL.md +70 -0
  517. package/skills/finishing-a-development-branch/SKILL.md +169 -0
  518. package/skills/humanize/SKILL.md +123 -0
  519. package/skills/init-pipeline/SKILL.md +124 -0
  520. package/skills/prepare-next/SKILL.md +20 -0
  521. package/skills/receiving-code-review/SKILL.md +123 -0
  522. package/skills/requesting-code-review/SKILL.md +105 -0
  523. package/skills/requesting-code-review/code-reviewer.md +108 -0
  524. package/skills/run-audit/SKILL.md +197 -0
  525. package/skills/scan-project/SKILL.md +41 -0
  526. package/skills/self-audit/SKILL.md +153 -0
  527. package/skills/subagent-driven-development/SKILL.md +154 -0
  528. package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
  529. package/skills/subagent-driven-development/implementer-prompt.md +102 -0
  530. package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  531. package/skills/tdd/SKILL.md +23 -0
  532. package/skills/using-git-worktrees/SKILL.md +163 -0
  533. package/skills/using-skills/SKILL.md +95 -0
  534. package/skills/verification/SKILL.md +22 -0
  535. package/skills/wazir/SKILL.md +463 -0
  536. package/skills/writing-plans/SKILL.md +30 -0
  537. package/skills/writing-skills/SKILL.md +157 -0
  538. package/skills/writing-skills/anthropic-best-practices.md +122 -0
  539. package/skills/writing-skills/persuasion-principles.md +50 -0
  540. package/templates/README.md +20 -0
  541. package/templates/artifacts/README.md +10 -0
  542. package/templates/artifacts/accepted-learning.md +19 -0
  543. package/templates/artifacts/accepted-learning.template.json +12 -0
  544. package/templates/artifacts/author.md +74 -0
  545. package/templates/artifacts/author.template.json +19 -0
  546. package/templates/artifacts/clarification.md +21 -0
  547. package/templates/artifacts/clarification.template.json +12 -0
  548. package/templates/artifacts/execute-notes.md +19 -0
  549. package/templates/artifacts/implementation-plan.md +21 -0
  550. package/templates/artifacts/implementation-plan.template.json +11 -0
  551. package/templates/artifacts/learning-proposal.md +19 -0
  552. package/templates/artifacts/next-run-handoff.md +21 -0
  553. package/templates/artifacts/plan-review.md +19 -0
  554. package/templates/artifacts/proposed-learning.template.json +12 -0
  555. package/templates/artifacts/research.md +21 -0
  556. package/templates/artifacts/research.template.json +12 -0
  557. package/templates/artifacts/review-findings.md +19 -0
  558. package/templates/artifacts/review.template.json +11 -0
  559. package/templates/artifacts/run-manifest.template.json +8 -0
  560. package/templates/artifacts/spec-challenge.md +19 -0
  561. package/templates/artifacts/spec-challenge.template.json +11 -0
  562. package/templates/artifacts/spec.md +21 -0
  563. package/templates/artifacts/spec.template.json +12 -0
  564. package/templates/artifacts/verification-proof.md +19 -0
  565. package/templates/artifacts/verification-proof.template.json +11 -0
  566. package/templates/examples/accepted-learning.example.json +14 -0
  567. package/templates/examples/author.example.json +152 -0
  568. package/templates/examples/clarification.example.json +15 -0
  569. package/templates/examples/docs-claim.example.json +8 -0
  570. package/templates/examples/export-manifest.example.json +7 -0
  571. package/templates/examples/host-export-package.example.json +11 -0
  572. package/templates/examples/implementation-plan.example.json +17 -0
  573. package/templates/examples/proposed-learning.example.json +13 -0
  574. package/templates/examples/research.example.json +15 -0
  575. package/templates/examples/research.example.md +6 -0
  576. package/templates/examples/review.example.json +17 -0
  577. package/templates/examples/run-manifest.example.json +9 -0
  578. package/templates/examples/spec-challenge.example.json +14 -0
  579. package/templates/examples/spec.example.json +21 -0
  580. package/templates/examples/verification-proof.example.json +21 -0
  581. package/templates/examples/wazir-manifest.example.yaml +65 -0
  582. package/templates/task-definition-schema.md +99 -0
  583. package/tooling/README.md +20 -0
  584. package/tooling/src/adapters/context-mode.js +50 -0
  585. package/tooling/src/capture/command.js +376 -0
  586. package/tooling/src/capture/store.js +99 -0
  587. package/tooling/src/capture/usage.js +270 -0
  588. package/tooling/src/checks/branches.js +50 -0
  589. package/tooling/src/checks/brand-truth.js +110 -0
  590. package/tooling/src/checks/changelog.js +231 -0
  591. package/tooling/src/checks/command-registry.js +36 -0
  592. package/tooling/src/checks/commits.js +102 -0
  593. package/tooling/src/checks/docs-drift.js +103 -0
  594. package/tooling/src/checks/docs-truth.js +201 -0
  595. package/tooling/src/checks/runtime-surface.js +156 -0
  596. package/tooling/src/cli.js +116 -0
  597. package/tooling/src/command-options.js +56 -0
  598. package/tooling/src/commands/validate.js +320 -0
  599. package/tooling/src/doctor/command.js +91 -0
  600. package/tooling/src/export/command.js +77 -0
  601. package/tooling/src/export/compiler.js +498 -0
  602. package/tooling/src/guards/loop-cap-guard.js +52 -0
  603. package/tooling/src/guards/protected-path-write-guard.js +67 -0
  604. package/tooling/src/index/command.js +152 -0
  605. package/tooling/src/index/storage.js +1061 -0
  606. package/tooling/src/index/summarizers.js +261 -0
  607. package/tooling/src/loaders.js +18 -0
  608. package/tooling/src/project-root.js +22 -0
  609. package/tooling/src/recall/command.js +225 -0
  610. package/tooling/src/schema-validator.js +30 -0
  611. package/tooling/src/state-root.js +40 -0
  612. package/tooling/src/status/command.js +71 -0
  613. package/wazir.manifest.yaml +135 -0
  614. package/workflows/README.md +19 -0
  615. package/workflows/author.md +42 -0
  616. package/workflows/clarify.md +38 -0
  617. package/workflows/design-review.md +46 -0
  618. package/workflows/design.md +44 -0
  619. package/workflows/discover.md +37 -0
  620. package/workflows/execute.md +48 -0
  621. package/workflows/learn.md +38 -0
  622. package/workflows/plan-review.md +42 -0
  623. package/workflows/plan.md +39 -0
  624. package/workflows/prepare-next.md +37 -0
  625. package/workflows/review.md +40 -0
  626. package/workflows/run-audit.md +41 -0
  627. package/workflows/spec-challenge.md +41 -0
  628. package/workflows/specify.md +38 -0
  629. package/workflows/verify.md +37 -0
@@ -0,0 +1,23 @@
1
+ # Directory Purpose
2
+
3
+ The `mobile` performance directory focuses on optimizing apps for constrained environments (limited battery, CPU, and network).
4
+
5
+ # Key Concepts
6
+
7
+ - Ensuring smooth 60fps/120fps UI
8
+ - Minimizing battery drain
9
+ - Handling poor connectivity
10
+
11
+ # File Map
12
+
13
+ - `mobile-animations.md` — offloading animations to the GPU, avoiding layout passes
14
+ - `mobile-memory-battery.md` — wake locks, background limits, and memory warnings
15
+ - `mobile-network.md` — batching requests, exponential backoff, and compression
16
+ - `mobile-rendering.md` — view recycling, overdraw, and layout flattening
17
+ - `mobile-startup-time.md` — reducing TTI (Time to Interactive), lazy loading
18
+
19
+ # Reading Guide
20
+
21
+ If the app feels sluggish → read `mobile-rendering.md` and `mobile-animations.md`
22
+ If the app takes too long to open → read `mobile-startup-time.md`
23
+ If users complain about battery → read `mobile-memory-battery.md`
@@ -0,0 +1,544 @@
1
+ # Mobile Animations -- Performance Expertise Module
2
+
3
+ > Smooth animations at 60/120fps are essential for perceived app quality. Animation jank is the most noticeable performance problem -- users can perceive a single dropped frame during animation. The key is keeping all animation work off the main thread and within the frame budget of 16.67ms (60fps) or 8.33ms (120fps).
4
+
5
+ > **Impact:** High
6
+ > **Applies to:** Mobile (iOS, Android, Flutter, React Native), Mobile Web
7
+ > **Key metrics:** Frame time during animation, Animation start latency, Dropped frame percentage during animation
8
+
9
+ ---
10
+
11
+ ## Why This Matters
12
+
13
+ ### Human Perception Thresholds
14
+
15
+ - **16ms frame budget (60fps):** The minimum for perceived smooth motion. Any frame exceeding 16.67ms causes a visible hitch. Source: [MDN](https://developer.mozilla.org/en-US/docs/Web/Performance/Guides/Animation_performance_and_frame_rate)
16
+ - **8.33ms frame budget (120fps):** ProMotion (iPhone 13 Pro+, iPad Pro) and high-refresh Android devices demand half the frame time. Source: [Apple WWDC 2021](https://developer.apple.com/videos/play/wwdc2021/10147/)
17
+ - **Single-frame drops are noticeable:** Users detect a single dropped frame during smooth animation. Source: [web.dev Smoothness](https://web.dev/articles/smoothness)
18
+ - **27% retention impact:** Drops below 60fps reduce user retention by 27%. Source: [Algolia](https://www.algolia.com/blog/engineering/60-fps-performant-web-animations-for-optimal-ux)
19
+
20
+ ### Business Impact
21
+
22
+ - **Booking.com A/B test:** Cutting elaborate entry animations reduced time-to-interaction by 22% with no loss of delight.
23
+ - **Material Design studies:** 85% higher task completion with minimal, purposeful motion vs. decorative animation.
24
+ - **Perceived latency:** 23% reduction using minimal progress cues vs. full-screen spinners (Smashing Magazine).
25
+
26
+ Source: [MoldStud](https://moldstud.com/articles/p-exploring-the-impact-of-animation-on-performance-essential-insights-for-developers)
27
+
28
+ When an animation drops frames, users experience a **violation of expectation** -- the brain predicts the next frame position based on the easing curve. A missed frame creates a perceptual "jump" that feels broken, not just slow.
29
+
30
+ ---
31
+
32
+ ## Performance Budgets and Targets
33
+
34
+ ### Frame Time Budgets
35
+
36
+ | Refresh Rate | Frame Budget | Effective (after OS overhead) | Devices |
37
+ |---|---|---|---|
38
+ | 60Hz | 16.67ms | ~10-12ms | Standard mobile |
39
+ | 90Hz | 11.11ms | ~7-8ms | Some Android flagships |
40
+ | 120Hz | 8.33ms | ~5-6ms | iPhone Pro, iPad Pro, Android flagships |
41
+
42
+ The OS compositor, GPU driver, and display pipeline consume 4-6ms per frame, leaving 10-12ms of effective budget at 60Hz.
43
+
44
+ ### Animation Duration Guidelines (Material Design 3 / NN/G)
45
+
46
+ | Animation Type | Duration | Notes |
47
+ |---|---|---|
48
+ | Micro-interactions (button, toggle) | 100-200ms | Must feel instant |
49
+ | Small transitions (fade, scale) | 150-250ms | Keep snappy |
50
+ | Screen transitions | 250-350ms | 300ms standard on mobile |
51
+ | Large/complex transitions | 300-400ms | Full-screen, shared element |
52
+ | Maximum reasonable | 500ms | Longer feels sluggish |
53
+ | Minimum perceptible | 100ms | Below this, invisible |
54
+
55
+ Source: [Material Design 3](https://m3.material.io/styles/motion/easing-and-duration), [NN/G](https://www.nngroup.com/articles/animation-duration/)
56
+
57
+ ### Target Thresholds
58
+
59
+ | Metric | Good | Needs Work | Poor |
60
+ |---|---|---|---|
61
+ | P95 frame time (60fps) | < 16ms | 16-20ms | > 20ms |
62
+ | Dropped frame % during animation | < 1% | 1-5% | > 5% |
63
+ | Animation start latency | < 100ms | 100-200ms | > 200ms |
64
+ | Jank count per session | 0-2 | 3-10 | > 10 |
65
+
66
+ ---
67
+
68
+ ## Measurement and Profiling
69
+
70
+ ### iOS
71
+
72
+ - **Instruments > Core Animation:** FPS, GPU utilization, offscreen rendering, blending
73
+ - **Time Profiler:** CPU time per frame -- identify main thread work during animation
74
+ - **CADisplayLink timing:** Exact frame delivery intervals; on ProMotion, system adjusts between 10-120Hz. Source: [Apple](https://developer.apple.com/documentation/quartzcore/cadisplaylink)
75
+ - **MetricKit:** Production frame drop metrics
76
+
77
+ ### Android
78
+
79
+ - **`adb shell dumpsys gfxinfo <pkg> framestats`:** Per-frame timestamps for last 120 frames
80
+ - **Systrace / Perfetto:** System-wide rendering pipeline trace
81
+ - **GPU Rendering Profile (on-device):** Per-frame bar chart overlay
82
+ - **FrameMetrics API:** Per-frame timing in production
83
+ - **Macrobenchmark:** Frame timing during automated UI tests for CI/CD
84
+
85
+ ### Flutter
86
+
87
+ - **DevTools > Performance:** Frame build time vs. raster time (both must fit budget)
88
+ - **`flutter run --profile`:** Required for accurate profiling (debug mode is misleading)
89
+ - **Timeline events:** Widget rebuild count, paint operations
90
+ - **Impeller diagnostics:** Shader compilation, rasterization time
91
+
92
+ Source: [Flutter Rendering Performance](https://docs.flutter.dev/perf/rendering-performance)
93
+
94
+ ### React Native
95
+
96
+ - **Performance Monitor:** JS thread FPS + UI thread FPS simultaneously
97
+ - **Flipper Performance Plugin:** Bridge traffic, frame times
98
+ - Monitor **both** threads: with `useNativeDriver` or Reanimated, UI stays at 60fps even when JS is blocked.
99
+
100
+ Source: [React Native Blog](https://reactnative.dev/blog/2017/02/14/using-native-driver-for-animated)
101
+
102
+ ### Mobile Web
103
+
104
+ - **Chrome DevTools > Performance:** Frame timeline with paint/layout/composite breakdown
105
+ - **Layers panel:** Compositor layer count, GPU memory per layer
106
+ - **`PerformanceObserver` (long-animation-frames):** Field monitoring
107
+
108
+ ---
109
+
110
+ ## Common Bottlenecks
111
+
112
+ ### 1. Layout Recalculation During Animation
113
+ **Impact: Very High.** Animating `width`, `height`, `margin`, `top`, `left` forces layout recalc that can push frame times from 2-3ms to 30ms+. Source: [Smashing Magazine](https://www.smashingmagazine.com/2016/12/gpu-animation-doing-it-right/)
114
+
115
+ ### 2. Main Thread Blocking
116
+ **Impact: Very High.** Any synchronous work (JSON parsing, large state updates) during animation steals frame budget. On React Native without native driver, JS thread blocking freezes animations entirely.
117
+
118
+ ### 3. Garbage Collection Pauses
119
+ **Impact: High.** GC pauses of 5-15ms cause frame drops. Android minor GC: 2-5ms; major: 50ms+. Excessive short-lived allocations in animation loops are the primary trigger.
120
+
121
+ ### 4. Shader Compilation Jank (Flutter/GPU)
122
+ **Impact: High.** Skia compiled shaders JIT, causing first-run jank of 50-200ms. Impeller (Flutter 3.27+) precompiles AOT, reducing frame drops from ~12% to ~1.5%. Source: [Impeller](https://dev.to/eira-wexford/how-impeller-is-transforming-flutter-ui-rendering-in-2026-3dpd)
123
+
124
+ ### 5. Excessive Widget Rebuilds (Flutter)
125
+ **Impact: High.** `setState()` in animation listener rebuilds entire subtree 60x/second. `AnimatedBuilder` with `child` limits rebuilds to the animated portion only.
126
+
127
+ ### 6. Bridge Overhead (React Native)
128
+ **Impact: High.** Without native driver, 60 bridge crossings/second, each adding 1-5ms serialization overhead.
129
+
130
+ ### 7. Offscreen Rendering (iOS)
131
+ **Impact: High.** `cornerRadius` + `masksToBounds`, shadow without `shadowPath`, group opacity -- each triggers offscreen render passes, doubling GPU work. Source: [Apple](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CoreAnimation_guide/ImprovingAnimationPerformance/ImprovingAnimationPerformance.html)
132
+
133
+ ### 8. Overdraw
134
+ **Impact: Medium-High.** Multiple overlapping transparent layers force GPU to blend pixels repeatedly. On mid-range Android, 4x overdraw consumes the entire GPU frame budget.
135
+
136
+ ### 9. Complex Bezier Paths
137
+ **Impact: Medium.** `CAShapeLayer` with hundreds of control points renders on CPU. Breaking into simpler layered shapes leverages GPU compositing instead. Source: [Realm Academy](https://academy.realm.io/posts/tryswift-tim-oliver-advanced-graphics-with-core-animation/)
138
+
139
+ ### 10. Shadow Without shadowPath (iOS)
140
+ **Impact: Medium-High.** Without explicit `shadowPath`, Core Animation ray-traces the layer alpha channel every frame. Setting `shadowPath` improves shadow rendering by 10x+.
141
+
142
+ ### 11. Unnecessary Recomposition (Compose)
143
+ **Impact: Medium-High.** Reading animated values during composition triggers recomposition every frame. Lambda modifiers (`Modifier.graphicsLayer { }`) defer to draw phase, skipping recomposition. Source: [Android Developers](https://developer.android.com/develop/ui/compose/performance/bestpractices)
144
+
145
+ ### 12. Layer Explosion (Web/Hybrid)
146
+ **Impact: Medium.** Each compositor layer consumes ~900KB GPU memory (at 360x640). On mobile with limited GPU RAM, hundreds of layers can crash the browser. Source: [Smashing Magazine](https://www.smashingmagazine.com/2016/12/gpu-animation-doing-it-right/)
147
+
148
+ ### 13. Image Decoding During Animation
149
+ **Impact: Medium.** Loading/decoding images on main thread during animation steals frame budget. Predecode before animation starts.
150
+
151
+ ### 14. Auto Layout Constraint Churn (iOS)
152
+ **Impact: Medium.** Complex constraint graphs (50+ constraints) can take 5-15ms per frame when constraints are animated directly.
153
+
154
+ ### 15. JavaScript Long Tasks (Mobile Web)
155
+ **Impact: Medium.** Tasks >50ms block the main thread, preventing `requestAnimationFrame` callbacks from firing on time.
156
+
157
+ ### 16. Font Loading During Text Animation
158
+ **Impact: Low-Medium.** Animating text while a web font loads causes layout shift when the font swaps in mid-animation.
159
+
160
+ ---
161
+
162
+ ## Optimization Patterns
163
+
164
+ ### GPU-Accelerated Properties (Web/Hybrid)
165
+ Only these run on the GPU compositor without layout or paint:
166
+ 1. **`transform`** (translate, scale, rotate)
167
+ 2. **`opacity`**
168
+ 3. **`filter`** (modern browsers)
169
+ 4. **`backdrop-filter`** (modern browsers)
170
+
171
+ Everything else (`width`, `height`, `top`, `left`, `margin`, `background-color`) triggers layout or paint. Source: [Chrome Developers](https://developer.chrome.com/blog/hardware-accelerated-animations)
172
+
173
+ ### Layer Promotion with will-change (Web)
174
+ Use `will-change: transform` before animation starts to pre-promote to compositor layer. Remove after animation completes. Never apply to >10-15 elements simultaneously -- each layer costs ~900KB GPU memory. Source: [Lexo](https://www.lexo.ch/blog/2025/01/boost-css-performance-with-will-change-and-transform-translate3d-why-gpu-acceleration-matters/)
175
+
176
+ ### Native Driver (React Native)
177
+ `useNativeDriver: true` serializes the animation graph to native once, then runs on UI thread with zero bridge calls. Supports only `transform` and `opacity`. For layout properties, use Reanimated worklets. Source: [React Native Blog](https://reactnative.dev/blog/2017/02/14/using-native-driver-for-animated)
178
+
179
+ ### Reanimated Worklets (React Native)
180
+ Reanimated 4 runs animation logic on UI thread via worklets, supporting all properties. Benchmarks: 37fps with 1500 elements (2023) improved to 60fps with 3000 elements (2024). Source: [Medium](https://medium.com/@islamrustamov/how-react-native-improved-from-2023-to-2025-animation-stress-testing-and-a-little-bit-of-flutter-edd44297b815)
181
+
182
+ ### Impeller (Flutter)
183
+ Default renderer since Flutter 3.27 (2025). AOT shader compilation eliminates first-run jank. 50% faster rasterization vs. Skia. Real-world: e-commerce apps dropped from 12% to 1.5% frame drops. Source: [ITNEXT](https://itnext.io/flutter-performance-optimization-10-techniques-that-actually-work-in-2025-4def9e5bbd2d)
184
+
185
+ ### AnimatedBuilder with Child (Flutter)
186
+ Pass static subtrees as `child` to avoid rebuilding 60x/second. Builder function runs per frame but `child` is built once and reused.
187
+
188
+ ### Core Animation Layer Properties (iOS)
189
+ Animate `transform`, `opacity`, `shadowOpacity` (with explicit `shadowPath`) on CALayer. CALayer for heavy graphical tasks boosts performance by up to 30% vs. UIView. Source: [MoldStud](https://moldstud.com/articles/p-leveraging-core-animation-for-interactive-app-experiences)
190
+
191
+ ### Compose graphicsLayer (Android)
192
+ `Modifier.graphicsLayer { }` lambda defers animated value reads to draw phase, skipping recomposition entirely. Source: [Android Developers](https://developer.android.com/develop/ui/compose/performance/bestpractices)
193
+
194
+ ### RepaintBoundary (Flutter)
195
+ Wrapping animated widgets isolates them into a separate render layer, preventing unrelated subtree repaints. Source: [Medium](https://ms3byoussef.medium.com/optimizing-flutter-ui-with-repaintboundary-2402052224c7)
196
+
197
+ ### requestAnimationFrame (Web)
198
+ Always use instead of `setTimeout`/`setInterval`. Syncs with vsync, pauses in background tabs. Source: [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame)
199
+
200
+ ---
201
+
202
+ ## Anti-Patterns
203
+
204
+ 1. **Animating width/height instead of transform: scale** -- triggers layout recalc every frame (2ms -> 15-30ms).
205
+ 2. **Animating top/left instead of transform: translate** -- layout properties force reflow of all siblings.
206
+ 3. **setTimeout/setInterval for animations (Web)** -- not synced with display refresh, runs in background tabs.
207
+ 4. **Missing useNativeDriver (React Native)** -- every frame crosses bridge (~1-5ms). JS blocking drops animation to 0fps.
208
+ 5. **setState() in animation listeners (Flutter)** -- rebuilds entire subtree 60x/sec (5-20ms each).
209
+ 6. **will-change on every element (Web)** -- layer explosion. 100+ layers at ~900KB each can crash browser.
210
+ 7. **Shadow without shadowPath (iOS)** -- ray-traces alpha channel every frame (10-50ms).
211
+ 8. **Reading animated state during composition (Compose)** -- triggers recomposition cascade every frame.
212
+ 9. **Animating constraints directly (iOS)** -- Auto Layout solver runs per frame; 50+ constraints = 5-15ms per solve.
213
+ 10. **Blocking JS thread during animation (React Native)** -- use `InteractionManager.runAfterInteractions()`.
214
+ 11. **Missing vsync in AnimationController (Flutter)** -- fires ticks even when widget is invisible, wastes CPU.
215
+ 12. **Animating during data loads** -- concurrent fetch + animation = guaranteed frame drops. Prefetch first.
216
+ 13. **Ignoring accessibilityReduceMotion** -- check platform APIs: `UIAccessibility.isReduceMotionEnabled` (iOS), `ANIMATOR_DURATION_SCALE` (Android), `MediaQuery.disableAnimations` (Flutter), `prefers-reduced-motion` (Web).
217
+
218
+ ---
219
+
220
+ ## Architecture-Level Decisions
221
+
222
+ ### Declarative vs. Imperative Animation
223
+
224
+ | Approach | Platforms | When to Use |
225
+ |---|---|---|
226
+ | **Declarative** | SwiftUI, Compose, Flutter implicit, CSS | Simple state-driven (fade, scale on toggle) |
227
+ | **Imperative** | UIKit, Android Views, Flutter explicit, JS | Gesture-driven, physics, choreographed sequences |
228
+
229
+ ### Gesture-Driven Animations
230
+ Require < 16ms latency tracking, velocity-based completion on release, and interruptibility (grab in-flight animation):
231
+ - **iOS:** `UIViewPropertyAnimator` (interruptible, reversible, scrubbable)
232
+ - **Android:** `SpringAnimation` from AndroidX DynamicAnimation
233
+ - **Flutter:** `GestureDetector` + `AnimationController` + `SpringSimulation`
234
+ - **React Native:** Reanimated `useAnimatedGestureHandler` + `withSpring`
235
+ - **Web:** Pointer events + `requestAnimationFrame` + spring physics
236
+
237
+ ### Physics-Based Animations
238
+ Springs provide natural motion and are inherently interruptible -- changing target mid-flight adjusts naturally without jarring restart. Key parameters: damping ratio 0.7-0.9 (lower = bouncier), stiffness 100-300 (higher = snappier), mass 1.0.
239
+
240
+ ### Shared Element Transitions
241
+ Both source and destination screens render simultaneously during animation. Budget for 2x normal rendering cost.
242
+ - **iOS:** `matchedGeometryEffect` (SwiftUI) / `UIViewControllerAnimatedTransitioning`
243
+ - **Android:** Compose `AnimatedContent` with `Modifier.sharedElement`
244
+ - **Flutter:** `Hero` widget
245
+ - **React Native:** Reanimated shared transitions
246
+
247
+ ### Animation Orchestration
248
+ Stagger list item entrances by 30-50ms per element. Total choreographed duration should not exceed 600-800ms -- users tap through longer sequences.
249
+
250
+ ---
251
+
252
+ ## Testing and Regression Prevention
253
+
254
+ ### Automated Benchmarks
255
+
256
+ **iOS (XCTest):**
257
+ ```swift
258
+ func testScrollPerformance() {
259
+ measure(metrics: [XCTOSSignpostMetric.scrollDecelerationMetric]) {
260
+ XCUIApplication().swipeUp()
261
+ }
262
+ }
263
+ ```
264
+
265
+ **Android (Macrobenchmark):**
266
+ ```kotlin
267
+ @Test
268
+ fun transitionAnimation() = benchmarkRule.measureRepeated(
269
+ packageName = "com.example.app",
270
+ metrics = listOf(FrameTimingMetric()),
271
+ iterations = 5,
272
+ ) {
273
+ device.findObject(By.res("nav_button")).click()
274
+ device.waitForIdle()
275
+ }
276
+ // Assert: P99 frameDurationCpuMs < 16
277
+ ```
278
+
279
+ **Flutter (integration_test):**
280
+ ```dart
281
+ final timeline = await tester.traceAction(() async {
282
+ await tester.tap(find.byKey(const Key('navigate')));
283
+ await tester.pumpAndSettle();
284
+ });
285
+ final summary = TimelineSummary.summarize(timeline);
286
+ summary.writeSummaryToFile('transition_perf', pretty: true);
287
+ // Assert: average build time < 8ms, missed frames == 0
288
+ ```
289
+
290
+ ### CI/CD Guidelines
291
+
292
+ 1. Run benchmarks on **physical devices** -- emulators misrepresent GPU performance
293
+ 2. Set absolute thresholds -- fail build if P95 frame time > 16ms
294
+ 3. Track trends -- plot over time to catch gradual regressions
295
+ 4. Test on **low-end devices** (Samsung Galaxy A14, iPhone SE 2nd gen)
296
+ 5. Test under **thermal throttling** -- run after warm-up period
297
+ 6. Monitor production via MetricKit (iOS), FrameMetrics API (Android), Firebase Performance
298
+
299
+ ---
300
+
301
+ ## Decision Trees
302
+
303
+ ### "My Animation Is Janky"
304
+
305
+ ```
306
+ Animation dropping frames
307
+ |
308
+ +-- Main thread busy?
309
+ | +-- Layout/reflow? -> Switch to transform/opacity
310
+ | +-- JS execution? (RN/Web) -> Native driver / worklet / break tasks < 50ms
311
+ | +-- Widget rebuilds? (Flutter) -> AnimatedBuilder + RepaintBoundary
312
+ | +-- Recomposition? (Compose) -> graphicsLayer {} lambda + derivedStateOf
313
+ | +-- GC pauses? -> Reduce allocation in animation loop, preallocate
314
+ |
315
+ +-- GPU/render thread busy?
316
+ | +-- Offscreen render? (iOS) -> Set shadowPath, avoid cornerRadius+mask
317
+ | +-- Overdraw? -> Reduce transparent layers, use opaque backgrounds
318
+ | +-- Shader compilation? (Flutter) -> Enable Impeller (3.27+)
319
+ | +-- Complex paths? -> Simplify, break into layers, pre-rasterize
320
+ | +-- Layer explosion? (Web) -> Audit will-change, check Layers panel
321
+ |
322
+ +-- First-run only?
323
+ +-- YES -> Shader warmup / preload assets / pre-render layers
324
+ +-- NO -> Profile with platform tools, check all categories above
325
+ ```
326
+
327
+ ### "Which Animation API?"
328
+
329
+ ```
330
+ Need to animate something
331
+ |
332
+ +-- Simple state toggle? -> SwiftUI .animation / Compose animateAsState
333
+ | Flutter AnimatedOpacity / CSS transition
334
+ +-- Gesture-driven? ------> UIViewPropertyAnimator / SpringAnimation
335
+ | Flutter AnimationController / Reanimated gesture
336
+ +-- Choreographed? -------> CAAnimationGroup / Compose updateTransition
337
+ | Flutter staggered Interval / Reanimated withSequence
338
+ +-- Shared element? ------> matchedGeometryEffect / Compose sharedElement
339
+ Flutter Hero / Reanimated shared transitions
340
+ ```
341
+
342
+ ---
343
+
344
+ ## Code Examples
345
+
346
+ ### 1. Transform vs. Layout (Web) -- frame time 18-25ms -> 1-2ms
347
+
348
+ ```css
349
+ /* BAD: 'left' triggers layout recalc every frame */
350
+ .panel { position: absolute; left: 0; transition: left 300ms ease-out; }
351
+ .panel.open { left: 250px; }
352
+
353
+ /* GOOD: 'transform' runs on GPU compositor */
354
+ .panel { position: absolute; transition: transform 300ms ease-out;
355
+ will-change: transform; }
356
+ .panel.open { transform: translateX(250px); }
357
+ ```
358
+ Source: [Viget](https://www.viget.com/articles/animation-performance-101-browser-under-the-hood)
359
+
360
+ ### 2. Native Driver (React Native) -- 15-30fps -> 60fps under JS load
361
+
362
+ ```javascript
363
+ // BAD: useNativeDriver: false -- every frame crosses bridge
364
+ Animated.timing(fadeAnim, { toValue: 1, duration: 300, useNativeDriver: false }).start();
365
+
366
+ // GOOD: serialized to native, runs on UI thread
367
+ Animated.timing(fadeAnim, { toValue: 1, duration: 300, useNativeDriver: true }).start();
368
+ ```
369
+ Source: [React Native Blog](https://reactnative.dev/blog/2017/02/14/using-native-driver-for-animated)
370
+
371
+ ### 3. AnimatedBuilder vs. setState (Flutter) -- 12-18ms -> 0.3-0.5ms per frame
372
+
373
+ ```dart
374
+ // BAD: setState rebuilds entire tree 60x/sec
375
+ _controller.addListener(() { setState(() {}); });
376
+ // In build(): Transform.rotate(angle: _controller.value, child: ExpensiveWidget())
377
+
378
+ // GOOD: only Transform rebuilds; child built once
379
+ AnimatedBuilder(
380
+ animation: _controller,
381
+ child: const ExpensiveWidget(), // built once, reused
382
+ builder: (context, child) => Transform.rotate(
383
+ angle: _controller.value * 2 * pi, child: child,
384
+ ),
385
+ )
386
+ ```
387
+ Source: [Plugfox](https://plugfox.dev/effective-animations-in-flutter/), [Digia](https://www.digia.tech/post/flutter-animation-performance-guide)
388
+
389
+ ### 4. Compose graphicsLayer vs. Recomposition -- 8-15ms overhead -> ~0.5ms
390
+
391
+ ```kotlin
392
+ // BAD: alpha read during composition triggers recomposition every frame
393
+ val alpha by animateFloatAsState(if (visible) 1f else 0f)
394
+ Card(modifier = Modifier.alpha(alpha)) { ExpensiveContent() }
395
+
396
+ // GOOD: lambda defers read to draw phase, no recomposition
397
+ Card(modifier = Modifier.graphicsLayer { this.alpha = alpha }) { ExpensiveContent() }
398
+ ```
399
+ Source: [Android Developers](https://developer.android.com/develop/ui/compose/performance/bestpractices)
400
+
401
+ ### 5. iOS Shadow Path -- 5-15ms -> ~0.1ms per frame
402
+
403
+ ```swift
404
+ // BAD: no shadowPath, ray-traces alpha channel each frame
405
+ card.layer.shadowOpacity = 0.3; card.layer.shadowRadius = 8
406
+ UIView.animate(withDuration: 0.3) { card.frame.origin.y += 200 } // layout + shadow
407
+
408
+ // GOOD: precomputed path + transform animation
409
+ card.layer.shadowPath = UIBezierPath(roundedRect: card.bounds, cornerRadius: 12).cgPath
410
+ UIView.animate(withDuration: 0.3) {
411
+ card.transform = CGAffineTransform(translationX: 0, y: 200) // GPU only
412
+ }
413
+ ```
414
+ Source: [Apple](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CoreAnimation_guide/ImprovingAnimationPerformance/ImprovingAnimationPerformance.html)
415
+
416
+ ### 6. Reanimated Gesture (React Native) -- 30-45fps -> 60fps
417
+
418
+ ```javascript
419
+ // BAD: PanResponder + Animated, every touch crosses bridge
420
+ onPanResponderMove: (e, g) => { pan.setValue({ x: g.dx, y: g.dy }); }
421
+
422
+ // GOOD: Reanimated worklets on UI thread
423
+ const gesture = Gesture.Pan()
424
+ .onUpdate((e) => {
425
+ translateX.value = e.translationX; // no bridge
426
+ translateY.value = e.translationY;
427
+ })
428
+ .onEnd(() => {
429
+ translateX.value = withSpring(0);
430
+ translateY.value = withSpring(0);
431
+ });
432
+ const style = useAnimatedStyle(() => ({
433
+ transform: [{ translateX: translateX.value }, { translateY: translateY.value }],
434
+ }));
435
+ ```
436
+ Source: [Reanimated](https://docs.swmansion.com/react-native-reanimated/docs/guides/performance/), [Callstack](https://www.callstack.com/blog/60fps-animations-in-react-native)
437
+
438
+ ### 7. Reduce Motion Compliance (SwiftUI)
439
+
440
+ ```swift
441
+ // BAD: always animates
442
+ .animation(.spring(response: 0.4, dampingFraction: 0.7), value: isExpanded)
443
+
444
+ // GOOD: respects user preference
445
+ @Environment(\.accessibilityReduceMotion) var reduceMotion
446
+ .animation(reduceMotion ? .none : .spring(response: 0.4, dampingFraction: 0.7), value: isExpanded)
447
+ ```
448
+
449
+ ### 8. Flutter CustomPainter with Impeller -- first-run 200ms -> 0ms, steady 8-12ms -> 3-5ms
450
+
451
+ ```dart
452
+ // BAD: new Paint per particle per frame (GC pressure + Skia shader jank)
453
+ void paint(Canvas canvas, Size size) {
454
+ for (int i = 0; i < 500; i++) {
455
+ final paint = Paint()..color = Colors.blue..maskFilter = blur;
456
+ canvas.drawCircle(offset, 4.0, paint);
457
+ }
458
+ }
459
+
460
+ // GOOD: static Paint, Impeller AOT shaders, zero GC pressure
461
+ static final _paint = Paint()..color = Colors.blue..maskFilter = blur;
462
+ void paint(Canvas canvas, Size size) {
463
+ for (int i = 0; i < 500; i++) {
464
+ canvas.drawCircle(offset, 4.0, _paint); // reused, no allocation
465
+ }
466
+ }
467
+ ```
468
+ Source: [Flutter Best Practices](https://docs.flutter.dev/perf/best-practices), [Impeller](https://differ.blog/p/advanced-performance-optimization-with-the-impeller-rendering-engine-d3b2c5)
469
+
470
+ ---
471
+
472
+ ## Quick Reference
473
+
474
+ ### GPU-Accelerated Properties by Platform
475
+
476
+ | Platform | GPU-Only (Animate These) | Layout-Triggering (Avoid) |
477
+ |---|---|---|
478
+ | **Web** | `transform`, `opacity`, `filter` | `width`, `height`, `top`, `left`, `margin` |
479
+ | **iOS** | `transform`, `opacity`, `shadowOpacity` | `frame`, `bounds`, `center` (w/ Auto Layout) |
480
+ | **Compose** | `graphicsLayer { alpha, translationX/Y, scaleX/Y }` | `size`, `offset`, `padding` |
481
+ | **Flutter** | `Transform`, `Opacity`, `CustomPainter` | `Container` size, `Padding` changes |
482
+ | **React Native** | `transform`, `opacity` (useNativeDriver) | `width`, `height`, `margin` (bridge) |
483
+
484
+ ### Animation Duration Cheat Sheet
485
+
486
+ | Type | Duration | Easing |
487
+ |---|---|---|
488
+ | Button feedback | 100-150ms | ease-out |
489
+ | Fade in/out | 200-250ms | ease-out / ease-in |
490
+ | Screen transition | 300-375ms | ease-in-out or spring |
491
+ | Shared element | 300-400ms | spring (damping 0.8-0.9) |
492
+
493
+ ### Platform Profiling Tools
494
+
495
+ | Task | iOS | Android | Flutter | React Native | Web |
496
+ |---|---|---|---|---|---|
497
+ | FPS | Instruments | `dumpsys gfxinfo` | DevTools | Perf Monitor | DevTools |
498
+ | Jank source | Time Profiler | Perfetto | Timeline | Flipper | Flame chart |
499
+ | CI benchmark | XCTest metrics | Macrobenchmark | integration_test | Detox | Lighthouse CI |
500
+ | Production | MetricKit | FrameMetrics | timingsCallback | Custom | PerfObserver |
501
+
502
+ ### Key Thresholds
503
+
504
+ | Metric | Target |
505
+ |---|---|
506
+ | Frame time P95 | < 16ms (60Hz) / < 8ms (120Hz) |
507
+ | Dropped frames during animation | < 1% |
508
+ | Animation start latency | < 100ms |
509
+ | Total animation duration | 200-500ms |
510
+ | Max compositor layers (web) | 10-15 |
511
+
512
+ ---
513
+
514
+ ## Sources
515
+
516
+ - [MDN Animation Performance](https://developer.mozilla.org/en-US/docs/Web/Performance/Guides/Animation_performance_and_frame_rate)
517
+ - [Algolia: 60 FPS Web Animations](https://www.algolia.com/blog/engineering/60-fps-performant-web-animations-for-optimal-ux)
518
+ - [web.dev: Smoothness Metric](https://web.dev/articles/smoothness)
519
+ - [Smashing Magazine: CSS GPU Animation](https://www.smashingmagazine.com/2016/12/gpu-animation-doing-it-right/)
520
+ - [Chrome: Hardware-Accelerated Animations](https://developer.chrome.com/blog/hardware-accelerated-animations)
521
+ - [Material Design 3: Easing and Duration](https://m3.material.io/styles/motion/easing-and-duration)
522
+ - [NN/G: Animation Duration](https://www.nngroup.com/articles/animation-duration/)
523
+ - [Apple: Core Animation Performance](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CoreAnimation_guide/ImprovingAnimationPerformance/ImprovingAnimationPerformance.html)
524
+ - [Apple: CADisplayLink](https://developer.apple.com/documentation/quartzcore/cadisplaylink)
525
+ - [Apple WWDC 2021: Variable Refresh Rate](https://developer.apple.com/videos/play/wwdc2021/10147/)
526
+ - [Android: Compose Performance](https://developer.android.com/develop/ui/compose/performance/bestpractices)
527
+ - [Flutter: Rendering Performance](https://docs.flutter.dev/perf/rendering-performance)
528
+ - [Flutter: Performance Best Practices](https://docs.flutter.dev/perf/best-practices)
529
+ - [ITNEXT: Flutter Performance 2025](https://itnext.io/flutter-performance-optimization-10-techniques-that-actually-work-in-2025-4def9e5bbd2d)
530
+ - [Impeller Rendering 2026](https://dev.to/eira-wexford/how-impeller-is-transforming-flutter-ui-rendering-in-2026-3dpd)
531
+ - [Plugfox: Effective Flutter Animations](https://plugfox.dev/effective-animations-in-flutter/)
532
+ - [Digia: Flutter Animation Guide](https://www.digia.tech/post/flutter-animation-performance-guide)
533
+ - [Impeller Optimization (Differ)](https://differ.blog/p/advanced-performance-optimization-with-the-impeller-rendering-engine-d3b2c5)
534
+ - [React Native: Native Driver](https://reactnative.dev/blog/2017/02/14/using-native-driver-for-animated)
535
+ - [Reanimated Performance](https://docs.swmansion.com/react-native-reanimated/docs/guides/performance/)
536
+ - [Reanimated 3 Guide](https://dev.to/erenelagz/react-native-reanimated-3-the-ultimate-guide-to-high-performance-animations-in-2025-4ae4)
537
+ - [Callstack: 60fps in React Native](https://www.callstack.com/blog/60fps-animations-in-react-native)
538
+ - [RN Stress Testing 2023-2025](https://medium.com/@islamrustamov/how-react-native-improved-from-2023-to-2025-animation-stress-testing-and-a-little-bit-of-flutter-edd44297b815)
539
+ - [Viget: Animation Performance 101](https://www.viget.com/articles/animation-performance-101-browser-under-the-hood)
540
+ - [Lexo: CSS GPU Acceleration](https://www.lexo.ch/blog/2025/01/boost-css-performance-with-will-change-and-transform-translate3d-why-gpu-acceleration-matters/)
541
+ - [MoldStud: Animation Impact](https://moldstud.com/articles/p-exploring-the-impact-of-animation-on-performance-essential-insights-for-developers)
542
+ - [Compose Animation Performance](https://10x-programming.com/jetpack-compose-animation-performance)
543
+ - [RepaintBoundary (Medium)](https://ms3byoussef.medium.com/optimizing-flutter-ui-with-repaintboundary-2402052224c7)
544
+ - [Realm Academy: Core Animation](https://academy.realm.io/posts/tryswift-tim-oliver-advanced-graphics-with-core-animation/)