native-update 1.4.9 → 3.1.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 (265) hide show
  1. package/Readme.md +35 -9
  2. package/android/manifest-additions.xml +28 -0
  3. package/android/src/main/AndroidManifest.xml +3 -7
  4. package/android/src/main/java/com/aoneahsan/nativeupdate/BackgroundNotificationManager.kt +21 -13
  5. package/android/src/main/java/com/aoneahsan/nativeupdate/BackgroundUpdatePlugin.kt +15 -0
  6. package/android/src/main/java/com/aoneahsan/nativeupdate/BackgroundUpdateWorker.kt +23 -7
  7. package/android/src/main/java/com/aoneahsan/nativeupdate/LiveUpdatePlugin.kt +346 -31
  8. package/android/src/main/java/com/aoneahsan/nativeupdate/NativeUpdatePlugin.kt +32 -34
  9. package/android/src/main/java/com/aoneahsan/nativeupdate/NotificationActionReceiver.kt +10 -1
  10. package/android/src/main/java/com/aoneahsan/nativeupdate/SecurityManager.kt +18 -18
  11. package/cli/AGENTS.md +43 -0
  12. package/cli/CLAUDE.md +65 -0
  13. package/cli/commands/backend-create.js +56 -15
  14. package/cli/commands/bundle-create.js +39 -7
  15. package/cli/commands/monitor.js +72 -51
  16. package/cli/index.js +10 -24
  17. package/cli/package.json +11 -3
  18. package/dist/esm/app-review/app-review-manager.js +0 -1
  19. package/dist/esm/app-review/index.js +0 -1
  20. package/dist/esm/app-review/platform-review-handler.js +0 -1
  21. package/dist/esm/app-review/review-conditions-checker.js +0 -1
  22. package/dist/esm/app-review/review-rate-limiter.js +0 -1
  23. package/dist/esm/app-review/types.js +0 -1
  24. package/dist/esm/app-update/app-update-checker.js +0 -1
  25. package/dist/esm/app-update/app-update-installer.d.ts +1 -0
  26. package/dist/esm/app-update/app-update-installer.js +19 -8
  27. package/dist/esm/app-update/app-update-manager.js +0 -1
  28. package/dist/esm/app-update/app-update-notifier.js +0 -1
  29. package/dist/esm/app-update/index.js +0 -1
  30. package/dist/esm/app-update/platform-app-update.js +12 -3
  31. package/dist/esm/app-update/types.js +0 -1
  32. package/dist/esm/background-update/background-scheduler.js +0 -1
  33. package/dist/esm/background-update/index.js +0 -1
  34. package/dist/esm/background-update/notification-manager.js +0 -1
  35. package/dist/esm/config/support.js +0 -1
  36. package/dist/esm/core/analytics.d.ts +13 -0
  37. package/dist/esm/core/analytics.js +15 -1
  38. package/dist/esm/core/cache-manager.js +0 -1
  39. package/dist/esm/core/config.d.ts +6 -30
  40. package/dist/esm/core/config.js +1 -8
  41. package/dist/esm/core/errors.d.ts +1 -0
  42. package/dist/esm/core/errors.js +1 -1
  43. package/dist/esm/core/event-emitter.d.ts +0 -3
  44. package/dist/esm/core/event-emitter.js +8 -3
  45. package/dist/esm/core/logger.js +0 -1
  46. package/dist/esm/core/performance.js +0 -1
  47. package/dist/esm/core/plugin-manager.js +3 -1
  48. package/dist/esm/core/security.d.ts +22 -3
  49. package/dist/esm/core/security.js +46 -7
  50. package/dist/esm/definitions.d.ts +13 -40
  51. package/dist/esm/definitions.js +0 -1
  52. package/dist/esm/index.d.ts +3 -4
  53. package/dist/esm/index.js +3 -3
  54. package/dist/esm/live-update/bundle-manager.d.ts +8 -0
  55. package/dist/esm/live-update/bundle-manager.js +20 -1
  56. package/dist/esm/live-update/certificate-pinning.js +0 -1
  57. package/dist/esm/live-update/delta-processor.d.ts +1 -1
  58. package/dist/esm/live-update/delta-processor.js +3 -1
  59. package/dist/esm/live-update/download-manager.d.ts +36 -5
  60. package/dist/esm/live-update/download-manager.js +70 -24
  61. package/dist/esm/live-update/rollout-checker.d.ts +1 -1
  62. package/dist/esm/live-update/rollout-checker.js +5 -6
  63. package/dist/esm/live-update/update-manager.d.ts +12 -1
  64. package/dist/esm/live-update/update-manager.js +38 -11
  65. package/dist/esm/live-update/version-manager.d.ts +9 -12
  66. package/dist/esm/live-update/version-manager.js +40 -68
  67. package/dist/esm/plugin.js +82 -89
  68. package/dist/esm/security/crypto.js +11 -7
  69. package/dist/esm/security/validator.js +0 -1
  70. package/dist/esm/types/rollout.d.ts +85 -0
  71. package/dist/esm/types/rollout.js +25 -0
  72. package/dist/esm/web.d.ts +26 -1
  73. package/dist/esm/web.js +214 -75
  74. package/dist/plugin.cjs.js +1 -2
  75. package/dist/plugin.esm.js +1 -2
  76. package/dist/plugin.js +2 -3
  77. package/docs/AGENTS.md +38 -0
  78. package/docs/CHANGELOG.md +275 -0
  79. package/docs/CLAUDE.md +101 -0
  80. package/docs/MANUAL-TASKS.md +17 -0
  81. package/docs/MARKETING_WEBSITE_TRACKER.md +18 -2
  82. package/docs/MIGRATION.md +170 -0
  83. package/docs/PACKAGES.md +167 -0
  84. package/docs/PERFORMANCE.md +110 -0
  85. package/docs/PROJECT_COMPLETION_TRACKER.md +4 -35
  86. package/docs/README.md +12 -2
  87. package/docs/REMAINING_FEATURES.md +123 -76
  88. package/docs/ROADMAP.md +200 -120
  89. package/docs/SECURITY-IF-REPO-PUBLIC.md +232 -0
  90. package/docs/TESTING_REQUIREMENTS.md +1 -112
  91. package/docs/ai-knowledge-base/00-project-profile.md +38 -0
  92. package/docs/ai-knowledge-base/01-features.md +46 -0
  93. package/docs/ai-knowledge-base/02-routes.md +72 -0
  94. package/docs/ai-knowledge-base/03-tech-stack.md +57 -0
  95. package/docs/ai-knowledge-base/README.md +23 -0
  96. package/docs/analytics-tracking.md +37 -0
  97. package/docs/capacitor-official-plugins.md +46 -0
  98. package/docs/capawesome-plugins.md +29 -0
  99. package/docs/deployment/HOSTINGER_DEPLOY.md +370 -0
  100. package/docs/deployment/PRODUCTION-DEPLOY-CHECKLIST.md +184 -0
  101. package/docs/docs-site/plan.md +201 -0
  102. package/docs/docs-site/scope.md +127 -0
  103. package/docs/docs-site/tracker.json +235 -0
  104. package/docs/error-handling-tracking.md +37 -0
  105. package/docs/features/laravel-nova-backend/ASSESSMENT-SUMMARY.md +96 -0
  106. package/docs/features/laravel-nova-backend/IMPLEMENTATION-PLAN.md +504 -0
  107. package/docs/features/laravel-nova-backend/progress-tracker.json +184 -0
  108. package/docs/guides/testing-guide.md +15 -41
  109. package/docs/package-audit.md +41 -0
  110. package/docs/play-store/ASO-METADATA.md +5 -0
  111. package/docs/play-store/DATA-SAFETY.md +5 -0
  112. package/docs/play-store/DECLARATIONS.md +5 -0
  113. package/docs/play-store/README.md +27 -0
  114. package/docs/play-store/RELEASE-NOTES.md +99 -0
  115. package/docs/play-store/RELEASE-STEPS.md +6 -0
  116. package/docs/play-store/STORE-LISTING.md +7 -0
  117. package/docs/play-store/SUBMISSION-CHECKLIST.md +5 -0
  118. package/docs/production-readiness.md +1 -1
  119. package/docs/project-audit/2026-05-16/00-FINALIZATION-PLAN.md +123 -0
  120. package/docs/project-audit/2026-05-16/01-BATCH-PLAN.md +227 -0
  121. package/docs/project-audit/2026-05-16/02-AUDIT-FINDINGS.md +144 -0
  122. package/docs/project-audit/2026-05-16/sessions/batch-01.md +42 -0
  123. package/docs/project-audit/2026-05-16/sessions/batch-02.md +74 -0
  124. package/docs/project-audit/2026-05-16/sessions/batch-03.md +71 -0
  125. package/docs/project-audit/2026-05-16/sessions/batch-04.md +88 -0
  126. package/docs/project-audit/2026-05-16/sessions/batch-05.md +63 -0
  127. package/docs/project-audit/2026-05-16/sessions/batch-06.md +103 -0
  128. package/docs/project-audit/2026-05-16/sessions/batch-07.md +61 -0
  129. package/docs/project-audit/2026-05-16/sessions/batch-08.md +101 -0
  130. package/docs/project-audit/2026-05-16/sessions/batch-09.md +105 -0
  131. package/docs/project-audit/2026-05-16/sessions/batch-10.md +102 -0
  132. package/docs/project-audit/AUDIT-HISTORY.md +74 -0
  133. package/docs/project-audit/BATCH-PLAN.md +168 -0
  134. package/docs/project-audit/MARKETING-WEBSITE-FINDINGS-2026-05-11.md +73 -0
  135. package/docs/project-audit/PRODUCTION-READINESS-AUDIT-2026-05-08.md +275 -0
  136. package/docs/project-finalization/00-tracker.json +60 -0
  137. package/docs/project-knowledge-base/01-system-overview.md +227 -0
  138. package/docs/project-knowledge-base/02-routes-pages-forms-users.md +352 -0
  139. package/docs/project-knowledge-base/03-tech-stack-modules-services.md +379 -0
  140. package/docs/project-knowledge-base/04-data-models-integrations.md +244 -0
  141. package/docs/project-knowledge-base/05-docs-corpus-inventory.md +256 -0
  142. package/docs/project-knowledge-base/06-operations-testing-legal-content.md +208 -0
  143. package/docs/project-knowledge-base/README.md +103 -0
  144. package/docs/project-profiles/native-update-capacitor-update-platform-project-profile-last-updated-2026-05-19.md +81 -0
  145. package/docs/rules-tracker.md +102 -0
  146. package/docs/security/PRE-LAUNCH-PENTEST-CHECKLIST.md +116 -0
  147. package/docs/seo-aeo-rules.json +3043 -0
  148. package/docs/social-media-marketing/README.md +81 -0
  149. package/docs/social-media-marketing/posts-batch-01.md +613 -0
  150. package/docs/social-media-marketing/posts-batch-02.md +528 -0
  151. package/docs/social-media-marketing/whatsapp-messages-batch-01.md +458 -0
  152. package/docs/social-media-marketing/whatsapp-status-batch-01.md +355 -0
  153. package/docs/tracking/finalization-2026-05-16-tracker.json +346 -0
  154. package/docs/tracking/full-audit-tracker.json +121 -0
  155. package/docs/tracking/production-readiness-audit-tracker.json +429 -0
  156. package/docs/tracking/seo-checklist-tracker.json +333 -0
  157. package/ios/Plugin/BackgroundUpdate/BackgroundUpdatePlugin.swift +66 -9
  158. package/ios/Plugin/LiveUpdate/LiveUpdatePlugin.swift +306 -52
  159. package/ios/Plugin/NativeUpdatePlugin.swift +22 -9
  160. package/ios/Plugin/Security/SecurityManager.swift +13 -14
  161. package/package.json +37 -38
  162. package/cli/node_modules/.yarn-integrity +0 -16
  163. package/cli/node_modules/commander/LICENSE +0 -22
  164. package/cli/node_modules/commander/Readme.md +0 -1148
  165. package/cli/node_modules/commander/esm.mjs +0 -16
  166. package/cli/node_modules/commander/index.js +0 -26
  167. package/cli/node_modules/commander/lib/argument.js +0 -145
  168. package/cli/node_modules/commander/lib/command.js +0 -2179
  169. package/cli/node_modules/commander/lib/error.js +0 -43
  170. package/cli/node_modules/commander/lib/help.js +0 -462
  171. package/cli/node_modules/commander/lib/option.js +0 -329
  172. package/cli/node_modules/commander/lib/suggestSimilar.js +0 -100
  173. package/cli/node_modules/commander/package-support.json +0 -16
  174. package/cli/node_modules/commander/package.json +0 -80
  175. package/cli/node_modules/commander/typings/esm.d.mts +0 -3
  176. package/cli/node_modules/commander/typings/index.d.ts +0 -884
  177. package/cli/yarn.lock +0 -8
  178. package/dist/esm/__tests__/bundle-manager.test.d.ts +0 -1
  179. package/dist/esm/__tests__/bundle-manager.test.js +0 -151
  180. package/dist/esm/__tests__/bundle-manager.test.js.map +0 -1
  181. package/dist/esm/__tests__/config.test.d.ts +0 -1
  182. package/dist/esm/__tests__/config.test.js +0 -70
  183. package/dist/esm/__tests__/config.test.js.map +0 -1
  184. package/dist/esm/__tests__/delta-processor.test.d.ts +0 -1
  185. package/dist/esm/__tests__/delta-processor.test.js +0 -77
  186. package/dist/esm/__tests__/delta-processor.test.js.map +0 -1
  187. package/dist/esm/__tests__/firestore-schema.test.d.ts +0 -1
  188. package/dist/esm/__tests__/firestore-schema.test.js +0 -74
  189. package/dist/esm/__tests__/firestore-schema.test.js.map +0 -1
  190. package/dist/esm/__tests__/integration.test.d.ts +0 -1
  191. package/dist/esm/__tests__/integration.test.js +0 -78
  192. package/dist/esm/__tests__/integration.test.js.map +0 -1
  193. package/dist/esm/__tests__/manifest-reader.test.d.ts +0 -1
  194. package/dist/esm/__tests__/manifest-reader.test.js +0 -271
  195. package/dist/esm/__tests__/manifest-reader.test.js.map +0 -1
  196. package/dist/esm/__tests__/rollout-checker.test.d.ts +0 -1
  197. package/dist/esm/__tests__/rollout-checker.test.js +0 -210
  198. package/dist/esm/__tests__/rollout-checker.test.js.map +0 -1
  199. package/dist/esm/__tests__/security.test.d.ts +0 -1
  200. package/dist/esm/__tests__/security.test.js +0 -54
  201. package/dist/esm/__tests__/security.test.js.map +0 -1
  202. package/dist/esm/__tests__/version-manager.test.d.ts +0 -1
  203. package/dist/esm/__tests__/version-manager.test.js +0 -45
  204. package/dist/esm/__tests__/version-manager.test.js.map +0 -1
  205. package/dist/esm/app-review/app-review-manager.js.map +0 -1
  206. package/dist/esm/app-review/index.js.map +0 -1
  207. package/dist/esm/app-review/platform-review-handler.js.map +0 -1
  208. package/dist/esm/app-review/review-conditions-checker.js.map +0 -1
  209. package/dist/esm/app-review/review-rate-limiter.js.map +0 -1
  210. package/dist/esm/app-review/types.js.map +0 -1
  211. package/dist/esm/app-update/app-update-checker.js.map +0 -1
  212. package/dist/esm/app-update/app-update-installer.js.map +0 -1
  213. package/dist/esm/app-update/app-update-manager.js.map +0 -1
  214. package/dist/esm/app-update/app-update-notifier.js.map +0 -1
  215. package/dist/esm/app-update/index.js.map +0 -1
  216. package/dist/esm/app-update/platform-app-update.js.map +0 -1
  217. package/dist/esm/app-update/types.js.map +0 -1
  218. package/dist/esm/background-update/background-scheduler.js.map +0 -1
  219. package/dist/esm/background-update/index.js.map +0 -1
  220. package/dist/esm/background-update/notification-manager.js.map +0 -1
  221. package/dist/esm/config/support.js.map +0 -1
  222. package/dist/esm/core/analytics.js.map +0 -1
  223. package/dist/esm/core/cache-manager.js.map +0 -1
  224. package/dist/esm/core/config.js.map +0 -1
  225. package/dist/esm/core/errors.js.map +0 -1
  226. package/dist/esm/core/event-emitter.js.map +0 -1
  227. package/dist/esm/core/logger.js.map +0 -1
  228. package/dist/esm/core/performance.js.map +0 -1
  229. package/dist/esm/core/plugin-manager.js.map +0 -1
  230. package/dist/esm/core/security.js.map +0 -1
  231. package/dist/esm/definitions.js.map +0 -1
  232. package/dist/esm/firestore/firestore-client.d.ts +0 -109
  233. package/dist/esm/firestore/firestore-client.js +0 -264
  234. package/dist/esm/firestore/firestore-client.js.map +0 -1
  235. package/dist/esm/firestore/index.d.ts +0 -11
  236. package/dist/esm/firestore/index.js +0 -11
  237. package/dist/esm/firestore/index.js.map +0 -1
  238. package/dist/esm/firestore/manifest-reader.d.ts +0 -87
  239. package/dist/esm/firestore/manifest-reader.js +0 -294
  240. package/dist/esm/firestore/manifest-reader.js.map +0 -1
  241. package/dist/esm/firestore/schema.d.ts +0 -507
  242. package/dist/esm/firestore/schema.js +0 -73
  243. package/dist/esm/firestore/schema.js.map +0 -1
  244. package/dist/esm/index.js.map +0 -1
  245. package/dist/esm/live-update/bundle-manager.js.map +0 -1
  246. package/dist/esm/live-update/certificate-pinning.js.map +0 -1
  247. package/dist/esm/live-update/delta-processor.js.map +0 -1
  248. package/dist/esm/live-update/download-manager.js.map +0 -1
  249. package/dist/esm/live-update/rollout-checker.js.map +0 -1
  250. package/dist/esm/live-update/update-manager.js.map +0 -1
  251. package/dist/esm/live-update/version-manager.js.map +0 -1
  252. package/dist/esm/plugin.js.map +0 -1
  253. package/dist/esm/security/crypto.js.map +0 -1
  254. package/dist/esm/security/validator.js.map +0 -1
  255. package/dist/esm/web.js.map +0 -1
  256. package/dist/plugin.cjs.js.map +0 -1
  257. package/dist/plugin.esm.js.map +0 -1
  258. package/dist/plugin.js.map +0 -1
  259. package/docs/FIREBASE_INTEGRATION_TRACKER.md +0 -321
  260. package/docs/FIREBASE_QUERIES_AND_INDEXES_AUDIT.md +0 -221
  261. package/docs/examples/firebase-backend-example.md +0 -27
  262. package/docs/guides/no-cost-backend-implementation-plan.md +0 -77
  263. package/docs/guides/no-cost-firestore-google-drive-backend.md +0 -60
  264. package/docs/play-console-rejection-rules.json +0 -428
  265. /package/docs/{MARKETING_WEBSITE_PLAN.md → archive/MARKETING_WEBSITE_PLAN.md} +0 -0
@@ -0,0 +1,458 @@
1
+ # Native Update — WhatsApp Messages Batch 01
2
+
3
+ 30 short messages for WhatsApp groups / DMs. Each: **400–600 chars (~60–80 words)**. One heading, one CTA, 5 hashtags (2 generic + 3 specific).
4
+
5
+ Mark consumed: `USED — Message NN — …`.
6
+
7
+ ---
8
+
9
+ ## Message 01 — The 7-day fix nobody has time for
10
+
11
+ You ship a Capacitor app. A pricing string is wrong. The fix is 3 characters. The deploy path is **7 days** through App Store review.
12
+
13
+ Native Update is the MIT-licensed Capacitor plugin that fixes that. Push a fresh JS/HTML/CSS bundle on next launch. No resubmission. Hash-verified, atomic swap, automatic rollback on crash.
14
+
15
+ `yarn add native-update`
16
+
17
+ 👉 https://nativeupdate.aoneahsan.com
18
+
19
+ #NativeUpdate #CapacitorPlugin #OTAUpdates #Aoneahsan #TopFree
20
+
21
+ ---
22
+
23
+ ## Message 02 — One package, whole ecosystem
24
+
25
+ Most "live update" plugins ship just a TypeScript package. Native Update ships an entire MIT-licensed monorepo: plugin + native Kotlin/Swift + Laravel/Nova backend + CLI + 3 example apps + React dashboard.
26
+
27
+ No paywall. No rate-limited free tier. Self-host the backend, fork what you want, ship.
28
+
29
+ 👉 https://nativeupdate.aoneahsan.com
30
+
31
+ #NativeUpdate #OpenSource #Capacitor #Aoneahsan #BestOpenSourceCommunityProject
32
+
33
+ ---
34
+
35
+ ## Message 03 — OTA in 60 seconds, not 7 days
36
+
37
+ Capacitor apps' JS bundle is ~200–800 KB gzipped. Small enough to ship 20 times a day. Only thing in the way is App Store review — which, for the JS layer, you don't need.
38
+
39
+ Native Update gives you that loop: build, `nativeupdate release`, devices apply on next launch. Hash-verified. Atomic swap. Crash → automatic rollback.
40
+
41
+ 👉 https://nativeupdate.aoneahsan.com
42
+
43
+ #NativeUpdate #OTAUpdates #LiveUpdates #Aoneahsan #TopFree
44
+
45
+ ---
46
+
47
+ ## Message 04 — Stale binaries are a support cost
48
+
49
+ Users on v1.0 still asking why the v3.0 feature doesn't work? Native Update's app-store update check fixes it in 10 lines:
50
+
51
+ ```ts
52
+ const v = await NativeUpdate.getStoreVersion();
53
+ if (v.updateRecommended) showSoftNudgeBanner(v.latestVersion);
54
+ ```
55
+
56
+ Soft banner or hard gate. Backend rules, not hardcoded. Cuts "you should update" tickets in a week.
57
+
58
+ 👉 https://nativeupdate.aoneahsan.com
59
+
60
+ #NativeUpdate #AppStoreUpdates #MobileDev #Aoneahsan #SaaSApp
61
+
62
+ ---
63
+
64
+ ## Message 05 — The polite way to ask for a 5-star review
65
+
66
+ iOS `SKStoreReviewController` + Google Play In-App Review API, wrapped in one line:
67
+
68
+ ```ts
69
+ if (await NativeUpdate.canRequestReview()) {
70
+ await NativeUpdate.requestReview();
71
+ }
72
+ ```
73
+
74
+ OS-rate-limited. Inline (no app exit). The prompt users already trust. Cross-platform branching for free.
75
+
76
+ 👉 https://nativeupdate.aoneahsan.com
77
+
78
+ #NativeUpdate #InAppReview #MobileUX #Aoneahsan #SaaSApp
79
+
80
+ ---
81
+
82
+ ## Message 06 — Laravel + Nova backend included
83
+
84
+ Most live-update plugins make you BYOB then sell you a paid one. Native Update ships a Laravel 11 + Nova 5 backend in the same MIT repo.
85
+
86
+ Hosts bundles. Manages channels + rollouts. Real Nova admin UI for releases, devices, telemetry. Self-host on a $5 VPS.
87
+
88
+ `docker compose up` and you're running.
89
+
90
+ 👉 https://nativeupdate.aoneahsan.com
91
+
92
+ #NativeUpdate #Laravel #LaravelNova #Aoneahsan #SaaSApp
93
+
94
+ ---
95
+
96
+ ## Message 07 — One CLI command, one rolled-out bundle
97
+
98
+ ```bash
99
+ nativeupdate release \
100
+ --channel production \
101
+ --rollout 10 \
102
+ --binary "2.4.x"
103
+ ```
104
+
105
+ Builds, hashes, uploads, registers, sets rollout %, pins binary version. Returns release ID. One command. Then `promote --rollout 50 → 100` when you're confident.
106
+
107
+ 👉 https://nativeupdate.aoneahsan.com
108
+
109
+ #NativeUpdate #DevOps #CLI #Aoneahsan #TopFree
110
+
111
+ ---
112
+
113
+ ## Message 08 — Don't trust a plugin without example apps
114
+
115
+ My filter: is there an example app, and does it run? If yes → real plugin.
116
+
117
+ Native Update ships 3: react-capacitor (canonical), node-express (your-own-backend reference), firebase-backend (Firebase wrapper). Each tests a different backend posture.
118
+
119
+ Clone repo, `cd example-apps/react-capacitor`, `yarn && yarn dev`. 5 minutes.
120
+
121
+ 👉 https://nativeupdate.aoneahsan.com
122
+
123
+ #NativeUpdate #Capacitor #OpenSource #Aoneahsan #BestOpenSourceCommunityProject
124
+
125
+ ---
126
+
127
+ ## Message 09 — Why we deleted 3,000 lines (v3.0.0 BREAKING)
128
+
129
+ Native Update v3.0.0 removed Firestore as a backend. ~3,000 lines deleted. Single Laravel HTTP backend now.
130
+
131
+ Lesson for plugin authors: if you maintain "two right ways" and one wins on every axis (tests, docs, ops, integrator velocity), the other isn't a feature — it's a tax. Delete the tax.
132
+
133
+ Migration guide in `docs/MIGRATION.md`.
134
+
135
+ 👉 https://nativeupdate.aoneahsan.com
136
+
137
+ #NativeUpdate #SoftwareArchitecture #BreakingChanges #Aoneahsan #BestOpenSourceCommunityProject
138
+
139
+ ---
140
+
141
+ ## Message 10 — Five-minute integration
142
+
143
+ ```
144
+ 1. yarn add native-update && npx cap sync
145
+ 2. Configure capacitor.config.ts (backendUrl, appKey, channel)
146
+ 3. NativeUpdate.checkForUpdate() on launch
147
+ 4. nativeupdate release --channel staging --rollout 100
148
+ 5. Restart app on test device
149
+ ```
150
+
151
+ That's it. Three independent APIs (OTA, store-version-check, in-app-review). Adopt one or all.
152
+
153
+ 👉 https://nativeupdate.aoneahsan.com
154
+
155
+ #NativeUpdate #GettingStarted #CapacitorPlugin #Aoneahsan #TopFree
156
+
157
+ ---
158
+
159
+ ## Message 11 — Hybrid is dead? Actually it just got faster.
160
+
161
+ "Just use React Native, hybrid is dead" — take from 2018.
162
+
163
+ Capacitor in 2026 is fast, has real native plugins, and now has the deploy-velocity advantage too. JS-fix? 60 seconds via Native Update OTA. Copy change? 60 seconds. A/B test? 60 seconds.
164
+
165
+ The CodePush story exists on the Capacitor side now. MIT.
166
+
167
+ 👉 https://nativeupdate.aoneahsan.com
168
+
169
+ #NativeUpdate #Capacitor #HybridApps #Aoneahsan #TopFree
170
+
171
+ ---
172
+
173
+ ## Message 12 — The hash check that saves your launch
174
+
175
+ Every Native Update bundle is SHA-256-hashed at upload, re-verified on the device.
176
+
177
+ Coffee-shop Wi-Fi attacker swapping your JS? Hash mismatch → bundle rejected. Corrupted partial download? Rejected. Wrong bundle, wrong channel? Fails fast on the device.
178
+
179
+ Quiet correctness. The day you need it, you'll be glad it's there.
180
+
181
+ 👉 https://nativeupdate.aoneahsan.com
182
+
183
+ #NativeUpdate #Security #MobileDev #Aoneahsan #SaaSApp
184
+
185
+ ---
186
+
187
+ ## Message 13 — Channels in plain English
188
+
189
+ A channel = the label that decides which release a device pulls.
190
+
191
+ Most teams use three: `production` (everyone), `staging` (your QA team), `canary` (5–10% of prod, gets new bundles first).
192
+
193
+ Pin devices, push releases, ramp gradually. That's the model. Define your own channels too — region / plan / whatever.
194
+
195
+ 👉 https://nativeupdate.aoneahsan.com
196
+
197
+ #NativeUpdate #DevOps #ContinuousDelivery #Aoneahsan #TopFree
198
+
199
+ ---
200
+
201
+ ## Message 14 — Mandatory vs optional updates
202
+
203
+ Optional → applies on next natural restart. Default. Use 95% of the time.
204
+
205
+ Mandatory → blocks app entry until applied. Reserve for security patches and emergencies. Users hate forced updates.
206
+
207
+ If you're tempted to mark every release mandatory: don't. The cost is huge. Save the lever for fires.
208
+
209
+ 👉 https://nativeupdate.aoneahsan.com
210
+
211
+ #NativeUpdate #MobileUX #ReleaseManagement #Aoneahsan #TopFree
212
+
213
+ ---
214
+
215
+ ## Message 15 — 81 unit tests + Detox E2E
216
+
217
+ CI on every push: 81 unit tests, all green. Plus Detox E2E driving the example app on real devices.
218
+
219
+ Tests cover hash verification, channel resolution, version-constraint matching, atomic swap, rollback, HTTP error handling, native bridge serialization. Plus full OTA flow on Android + iOS.
220
+
221
+ A plugin without tests is one you'll debug at 2 AM.
222
+
223
+ 👉 https://nativeupdate.aoneahsan.com
224
+
225
+ #NativeUpdate #Testing #DeveloperTools #Aoneahsan #TopFree
226
+
227
+ ---
228
+
229
+ ## Message 16 — Free tier, no asterisks
230
+
231
+ Plugin: MIT, free.
232
+ CLI: MIT, free.
233
+ Backend: MIT, free — self-host.
234
+ Examples + dashboard: MIT, free.
235
+
236
+ Hosting cost: ~$5–10/month VPS for Laravel. Bandwidth scales with DAU × bundle size — use a CDN.
237
+
238
+ No per-user fees. No per-release fees. No "free for first 1,000 users." Forever-free, forever-yours fork.
239
+
240
+ 👉 https://nativeupdate.aoneahsan.com
241
+
242
+ #NativeUpdate #OpenSource #FreeTier #Aoneahsan #TopFree
243
+
244
+ ---
245
+
246
+ ## Message 17 — A/B testing without an A/B SDK
247
+
248
+ Build two bundles. Define two channels. Pin a slice of devices to each via remote rule. Measure outcomes via your existing analytics.
249
+
250
+ No extra SDK, no extra runtime cost, no feature-flag drift between bundles — the variants ARE the bundles.
251
+
252
+ When the winner is clear, promote it to `production`. Done.
253
+
254
+ 👉 https://nativeupdate.aoneahsan.com
255
+
256
+ #NativeUpdate #ABTesting #ProductExperimentation #Aoneahsan #TopFree
257
+
258
+ ---
259
+
260
+ ## Message 18 — Sentry + Native Update = the combo
261
+
262
+ OTA bundle ships. Bundle throws on a subset. Sentry catches it within minutes (release ID + bundle version tagged). You `nativeupdate rollback`. Affected users pull prior bundle on next launch.
263
+
264
+ 3-hour P0 → 5-minute fix.
265
+
266
+ ```ts
267
+ Sentry.setTag('nativeupdate.release', release.id);
268
+ ```
269
+
270
+ 👉 https://nativeupdate.aoneahsan.com
271
+
272
+ #NativeUpdate #Sentry #ErrorMonitoring #Aoneahsan #SaaSApp
273
+
274
+ ---
275
+
276
+ ## Message 19 — Rollback as a feature
277
+
278
+ `nativeupdate rollback <release-id>` flips the channel back. Devices pull prior bundle on next launch. Done.
279
+
280
+ Plus: if a new bundle crashes on boot, the device rolls back automatically — atomic swap keeps the prior bundle on disk.
281
+
282
+ Rollbacks you'll actually use are rollbacks that work in 30 seconds.
283
+
284
+ 👉 https://nativeupdate.aoneahsan.com
285
+
286
+ #NativeUpdate #IncidentResponse #ReleaseManagement #Aoneahsan #TopFree
287
+
288
+ ---
289
+
290
+ ## Message 20 — Eats its own dog food
291
+
292
+ Native Update is consumed by other projects in the same author's portfolio — it's not "we built it, now we're shopping it." Abandoning it would break the author's own apps. Strong signal of continuity.
293
+
294
+ Pick plugins the author themselves uses in production.
295
+
296
+ 👉 https://nativeupdate.aoneahsan.com
297
+
298
+ #NativeUpdate #DogFooding #OpenSource #Aoneahsan #BestOpenSourceCommunityProject
299
+
300
+ ---
301
+
302
+ ## Message 21 — Capacitor vs React Native, fairly
303
+
304
+ A fair side-by-side, no fanboy energy:
305
+
306
+ CodePush + RN: mature, Microsoft-owned, battle-tested, RN-only.
307
+
308
+ Native Update + Capacitor: MIT-licensed, multi-framework (React/Vue/Svelte/Angular), self-hosted backend, you own the data.
309
+
310
+ Both are valid choices. Pick by your stack, not by hype. If you're on Capacitor, this is the OTA story you've been waiting for.
311
+
312
+ 👉 https://nativeupdate.aoneahsan.com
313
+
314
+ #NativeUpdate #Capacitor #ReactNative #Aoneahsan #TopFree
315
+
316
+ ---
317
+
318
+ ## Message 22 — Build-in-public, May 2026
319
+
320
+ Build-in-public note from the Native Update repo. Just shipped v3.0.0 BREAKING:
321
+
322
+ - Removed Firestore backend (~3,000 LOC deleted)
323
+ - Single Laravel HTTP backend now
324
+ - Test matrix collapsed by 40%
325
+ - Docs halved
326
+ - Marketing site got Sentry + Clarity + Amplitude wired with page-view auto-track
327
+
328
+ Sometimes the best feature is the one you delete. Migration guide is in `docs/MIGRATION.md`.
329
+
330
+ 👉 https://nativeupdate.aoneahsan.com
331
+
332
+ #NativeUpdate #BuildInPublic #OpenSource #Aoneahsan #BestOpenSourceCommunityProject
333
+
334
+ ---
335
+
336
+ ## Message 23 — Honest framing: what OTA can't do
337
+
338
+ Native Update OTA replaces JS / HTML / CSS bundles. That's it.
339
+
340
+ It does NOT replace native code, add new Capacitor plugins, change `Info.plist` / `AndroidManifest.xml`, add permissions, or bypass App Store policy.
341
+
342
+ Bug fixes, copy changes, A/B tests, feature flags = fine. App-pivot via OTA = Apple notices.
343
+
344
+ 👉 https://nativeupdate.aoneahsan.com
345
+
346
+ #NativeUpdate #MobileDev #HonestSoftware #Aoneahsan #TopFree
347
+
348
+ ---
349
+
350
+ ## Message 24 — Telemetry: knowing what's deployed
351
+
352
+ Common OTA pain: you push a release, no idea what's actually running where 3 weeks later.
353
+
354
+ Native Update tracks each device's release, applied state, last-seen, platform. Nova admin shows the distribution at a glance. Spot stuck devices and failure spikes.
355
+
356
+ Don't discover rollout failures via support tickets.
357
+
358
+ 👉 https://nativeupdate.aoneahsan.com
359
+
360
+ #NativeUpdate #Observability #Telemetry #Aoneahsan #SaaSApp
361
+
362
+ ---
363
+
364
+ ## Message 25 — Why MIT specifically
365
+
366
+ MIT means: use commercially, fork, embed in closed-source apps, no reciprocity required. The friction-free license.
367
+
368
+ Not GPL/AGPL (copyleft = legal review for every adopter). Not source-available with commercial-use clauses (kills adoption).
369
+
370
+ The whole monorepo is MIT. Forever. Your fork is yours.
371
+
372
+ 👉 https://nativeupdate.aoneahsan.com
373
+
374
+ #NativeUpdate #MIT #OpenSource #Aoneahsan #BestOpenSourceCommunityProject
375
+
376
+ ---
377
+
378
+ ## Message 26 — One cold-launch check, big support savings
379
+
380
+ Add a store-version check on cold launch. Soft nudge banner with the actual changelog: "We fixed the sign-in bug you hit yesterday."
381
+
382
+ Converts 5x better than the generic "An update is available." Show users why it's worth their tap.
383
+
384
+ 10 lines of code. Cuts "you should update" support tickets within a week. The plugin gives you the version + recommended-update flag; your backend gives you the changelog string.
385
+
386
+ 👉 https://nativeupdate.aoneahsan.com
387
+
388
+ #NativeUpdate #SupportReduction #MobileDev #Aoneahsan #TopFree
389
+
390
+ ---
391
+
392
+ ## Message 27 — The release ritual that keeps you sane
393
+
394
+ 1. Build → run on example app
395
+ 2. `release --channel staging --rollout 100` → QA 24h
396
+ 3. `promote --to production --rollout 5` → watch Sentry 1h
397
+ 4. `--rollout 50` → watch
398
+ 5. `--rollout 100`
399
+
400
+ 26 hours from "release ready" to "everyone's on it." Sounds slow. Beats weekly fire drills.
401
+
402
+ 👉 https://nativeupdate.aoneahsan.com
403
+
404
+ #NativeUpdate #ReleaseManagement #DevOps #Aoneahsan #TopFree
405
+
406
+ ---
407
+
408
+ ## Message 28 — Three independent capabilities, adopt incrementally
409
+
410
+ The plugin gives you 3 things, all independent:
411
+
412
+ 1. OTA / live updates
413
+ 2. App-store version-drift checks
414
+ 3. Native in-app review prompts
415
+
416
+ Lowest-risk first: in-app review. 5-line change, zero backend. Build trust with the plugin, then layer on the rest.
417
+
418
+ 👉 https://nativeupdate.aoneahsan.com
419
+
420
+ #NativeUpdate #IncrementalAdoption #CapacitorPlugin #Aoneahsan #TopFree
421
+
422
+ ---
423
+
424
+ ## Message 29 — Repository tour for first-time visitors
425
+
426
+ Quick map:
427
+ - `/src/` — plugin TypeScript
428
+ - `/android/` + `/ios/` — native code
429
+ - `/cli/` — release CLI
430
+ - `/backend/` — Laravel + Nova
431
+ - `/example-apps/react-capacitor/` — start here
432
+ - `/docs/MIGRATION.md` — v2 → v3
433
+
434
+ Onboarding path: `Readme.md` → react-capacitor example → `src/definitions.ts` → docs.
435
+
436
+ 👉 https://nativeupdate.aoneahsan.com
437
+
438
+ #NativeUpdate #OpenSource #DeveloperTools #Aoneahsan #BestOpenSourceCommunityProject
439
+
440
+ ---
441
+
442
+ ## Message 30 — Who this is for
443
+
444
+ For you if: you ship Capacitor apps, want OTA with rollback safety, want to self-host or BYO backend, like MIT-licensed tools.
445
+
446
+ NOT for you if: you're on React Native, native-only (no WebView), or need 99.999% SLA-backed enterprise contracts.
447
+
448
+ If first group → `yarn add native-update`. 5-minute read of the example app.
449
+
450
+ 👉 https://nativeupdate.aoneahsan.com
451
+
452
+ #NativeUpdate #CapacitorPlugin #OpenSource #Aoneahsan #TopFree
453
+
454
+ ---
455
+
456
+ ## End of WhatsApp Messages Batch 01
457
+
458
+ 30 messages, each 400–600 chars. Mark `USED —` once shared.