native-update 2.0.0 → 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.
- package/Readme.md +28 -14
- package/android/manifest-additions.xml +28 -0
- package/android/src/main/AndroidManifest.xml +3 -7
- package/android/src/main/java/com/aoneahsan/nativeupdate/BackgroundNotificationManager.kt +21 -13
- package/android/src/main/java/com/aoneahsan/nativeupdate/LiveUpdatePlugin.kt +196 -29
- package/android/src/main/java/com/aoneahsan/nativeupdate/NativeUpdatePlugin.kt +21 -36
- package/cli/AGENTS.md +15 -1
- package/cli/CLAUDE.md +15 -1
- package/cli/commands/backend-create.js +56 -15
- package/cli/commands/bundle-create.js +39 -7
- package/cli/commands/monitor.js +72 -51
- package/cli/index.js +10 -24
- package/cli/package.json +11 -3
- package/dist/esm/app-review/app-review-manager.js +0 -1
- package/dist/esm/app-review/index.js +0 -1
- package/dist/esm/app-review/platform-review-handler.js +0 -1
- package/dist/esm/app-review/review-conditions-checker.js +0 -1
- package/dist/esm/app-review/review-rate-limiter.js +0 -1
- package/dist/esm/app-review/types.js +0 -1
- package/dist/esm/app-update/app-update-checker.js +0 -1
- package/dist/esm/app-update/app-update-installer.d.ts +1 -0
- package/dist/esm/app-update/app-update-installer.js +19 -8
- package/dist/esm/app-update/app-update-manager.js +0 -1
- package/dist/esm/app-update/app-update-notifier.js +0 -1
- package/dist/esm/app-update/index.js +0 -1
- package/dist/esm/app-update/platform-app-update.js +12 -3
- package/dist/esm/app-update/types.js +0 -1
- package/dist/esm/background-update/background-scheduler.js +0 -1
- package/dist/esm/background-update/index.js +0 -1
- package/dist/esm/background-update/notification-manager.js +0 -1
- package/dist/esm/config/support.js +0 -1
- package/dist/esm/core/analytics.d.ts +13 -0
- package/dist/esm/core/analytics.js +15 -1
- package/dist/esm/core/cache-manager.js +0 -1
- package/dist/esm/core/config.d.ts +0 -15
- package/dist/esm/core/config.js +0 -4
- package/dist/esm/core/errors.d.ts +1 -0
- package/dist/esm/core/errors.js +1 -1
- package/dist/esm/core/event-emitter.d.ts +0 -3
- package/dist/esm/core/event-emitter.js +8 -3
- package/dist/esm/core/logger.js +0 -1
- package/dist/esm/core/performance.js +0 -1
- package/dist/esm/core/plugin-manager.js +3 -1
- package/dist/esm/core/security.d.ts +11 -0
- package/dist/esm/core/security.js +27 -1
- package/dist/esm/definitions.d.ts +0 -11
- package/dist/esm/definitions.js +0 -1
- package/dist/esm/index.d.ts +3 -2
- package/dist/esm/index.js +3 -1
- package/dist/esm/live-update/bundle-manager.d.ts +8 -0
- package/dist/esm/live-update/bundle-manager.js +20 -1
- package/dist/esm/live-update/certificate-pinning.js +0 -1
- package/dist/esm/live-update/delta-processor.d.ts +1 -1
- package/dist/esm/live-update/delta-processor.js +3 -1
- package/dist/esm/live-update/download-manager.js +9 -2
- package/dist/esm/live-update/rollout-checker.d.ts +1 -1
- package/dist/esm/live-update/rollout-checker.js +5 -6
- package/dist/esm/live-update/update-manager.js +0 -1
- package/dist/esm/live-update/version-manager.d.ts +0 -12
- package/dist/esm/live-update/version-manager.js +0 -68
- package/dist/esm/plugin.js +69 -43
- package/dist/esm/security/crypto.js +11 -7
- package/dist/esm/security/validator.js +0 -1
- package/dist/esm/types/rollout.d.ts +85 -0
- package/dist/esm/types/rollout.js +25 -0
- package/dist/esm/web.d.ts +8 -0
- package/dist/esm/web.js +148 -54
- package/dist/plugin.cjs.js +1 -2
- package/dist/plugin.esm.js +1 -2
- package/dist/plugin.js +2 -3
- package/docs/CHANGELOG.md +124 -0
- package/docs/CLAUDE.md +1 -1
- package/docs/MANUAL-TASKS.md +17 -0
- package/docs/MARKETING_WEBSITE_TRACKER.md +18 -2
- package/docs/MIGRATION.md +83 -0
- package/docs/PACKAGES.md +167 -0
- package/docs/PERFORMANCE.md +110 -0
- package/docs/PROJECT_COMPLETION_TRACKER.md +4 -35
- package/docs/README.md +0 -1
- package/docs/REMAINING_FEATURES.md +123 -76
- package/docs/ROADMAP.md +200 -120
- package/docs/SECURITY-IF-REPO-PUBLIC.md +232 -0
- package/docs/TESTING_REQUIREMENTS.md +1 -112
- package/docs/ai-knowledge-base/00-project-profile.md +38 -0
- package/docs/ai-knowledge-base/01-features.md +46 -0
- package/docs/ai-knowledge-base/02-routes.md +72 -0
- package/docs/ai-knowledge-base/03-tech-stack.md +57 -0
- package/docs/ai-knowledge-base/README.md +23 -0
- package/docs/analytics-tracking.md +37 -0
- package/docs/capacitor-official-plugins.md +46 -0
- package/docs/capawesome-plugins.md +29 -0
- package/docs/deployment/HOSTINGER_DEPLOY.md +75 -34
- package/docs/deployment/PRODUCTION-DEPLOY-CHECKLIST.md +184 -0
- package/docs/docs-site/plan.md +201 -0
- package/docs/docs-site/scope.md +127 -0
- package/docs/docs-site/tracker.json +235 -0
- package/docs/error-handling-tracking.md +37 -0
- package/docs/guides/testing-guide.md +15 -41
- package/docs/package-audit.md +41 -0
- package/docs/play-store/ASO-METADATA.md +5 -0
- package/docs/play-store/DATA-SAFETY.md +5 -0
- package/docs/play-store/DECLARATIONS.md +5 -0
- package/docs/play-store/README.md +27 -0
- package/docs/play-store/RELEASE-NOTES.md +99 -0
- package/docs/play-store/RELEASE-STEPS.md +6 -0
- package/docs/play-store/STORE-LISTING.md +7 -0
- package/docs/play-store/SUBMISSION-CHECKLIST.md +5 -0
- package/docs/production-readiness.md +1 -1
- package/docs/project-audit/2026-05-16/00-FINALIZATION-PLAN.md +123 -0
- package/docs/project-audit/2026-05-16/01-BATCH-PLAN.md +227 -0
- package/docs/project-audit/2026-05-16/02-AUDIT-FINDINGS.md +144 -0
- package/docs/project-audit/2026-05-16/sessions/batch-01.md +42 -0
- package/docs/project-audit/2026-05-16/sessions/batch-02.md +74 -0
- package/docs/project-audit/2026-05-16/sessions/batch-03.md +71 -0
- package/docs/project-audit/2026-05-16/sessions/batch-04.md +88 -0
- package/docs/project-audit/2026-05-16/sessions/batch-05.md +63 -0
- package/docs/project-audit/2026-05-16/sessions/batch-06.md +103 -0
- package/docs/project-audit/2026-05-16/sessions/batch-07.md +61 -0
- package/docs/project-audit/2026-05-16/sessions/batch-08.md +101 -0
- package/docs/project-audit/2026-05-16/sessions/batch-09.md +105 -0
- package/docs/project-audit/2026-05-16/sessions/batch-10.md +102 -0
- package/docs/project-audit/AUDIT-HISTORY.md +74 -0
- package/docs/project-audit/BATCH-PLAN.md +168 -0
- package/docs/project-audit/MARKETING-WEBSITE-FINDINGS-2026-05-11.md +73 -0
- package/docs/project-audit/PRODUCTION-READINESS-AUDIT-2026-05-08.md +275 -0
- package/docs/project-finalization/00-tracker.json +60 -0
- package/docs/project-knowledge-base/01-system-overview.md +39 -30
- package/docs/project-knowledge-base/02-routes-pages-forms-users.md +87 -81
- package/docs/project-knowledge-base/03-tech-stack-modules-services.md +140 -108
- package/docs/project-knowledge-base/04-data-models-integrations.md +191 -254
- package/docs/project-knowledge-base/05-docs-corpus-inventory.md +83 -20
- package/docs/project-knowledge-base/06-operations-testing-legal-content.md +67 -29
- package/docs/project-knowledge-base/README.md +27 -14
- package/docs/project-profiles/native-update-capacitor-update-platform-project-profile-last-updated-2026-05-19.md +81 -0
- package/docs/rules-tracker.md +102 -0
- package/docs/security/PRE-LAUNCH-PENTEST-CHECKLIST.md +116 -0
- package/docs/social-media-marketing/README.md +81 -0
- package/docs/social-media-marketing/posts-batch-01.md +613 -0
- package/docs/social-media-marketing/posts-batch-02.md +528 -0
- package/docs/social-media-marketing/whatsapp-messages-batch-01.md +458 -0
- package/docs/social-media-marketing/whatsapp-status-batch-01.md +355 -0
- package/docs/tracking/finalization-2026-05-16-tracker.json +346 -0
- package/docs/tracking/full-audit-tracker.json +121 -0
- package/docs/tracking/production-readiness-audit-tracker.json +429 -0
- package/ios/Plugin/BackgroundUpdate/BackgroundUpdatePlugin.swift +16 -3
- package/ios/Plugin/LiveUpdate/LiveUpdatePlugin.swift +71 -47
- package/ios/Plugin/NativeUpdatePlugin.swift +14 -9
- package/package.json +29 -29
- package/cli/node_modules/.yarn-integrity +0 -16
- package/cli/node_modules/commander/LICENSE +0 -22
- package/cli/node_modules/commander/Readme.md +0 -1148
- package/cli/node_modules/commander/esm.mjs +0 -16
- package/cli/node_modules/commander/index.js +0 -26
- package/cli/node_modules/commander/lib/argument.js +0 -145
- package/cli/node_modules/commander/lib/command.js +0 -2179
- package/cli/node_modules/commander/lib/error.js +0 -43
- package/cli/node_modules/commander/lib/help.js +0 -462
- package/cli/node_modules/commander/lib/option.js +0 -329
- package/cli/node_modules/commander/lib/suggestSimilar.js +0 -100
- package/cli/node_modules/commander/package-support.json +0 -16
- package/cli/node_modules/commander/package.json +0 -80
- package/cli/node_modules/commander/typings/esm.d.mts +0 -3
- package/cli/node_modules/commander/typings/index.d.ts +0 -884
- package/cli/yarn.lock +0 -8
- package/dist/esm/__tests__/bundle-manager.test.d.ts +0 -1
- package/dist/esm/__tests__/bundle-manager.test.js +0 -151
- package/dist/esm/__tests__/bundle-manager.test.js.map +0 -1
- package/dist/esm/__tests__/config.test.d.ts +0 -1
- package/dist/esm/__tests__/config.test.js +0 -70
- package/dist/esm/__tests__/config.test.js.map +0 -1
- package/dist/esm/__tests__/delta-processor.test.d.ts +0 -1
- package/dist/esm/__tests__/delta-processor.test.js +0 -77
- package/dist/esm/__tests__/delta-processor.test.js.map +0 -1
- package/dist/esm/__tests__/firestore-schema.test.d.ts +0 -1
- package/dist/esm/__tests__/firestore-schema.test.js +0 -74
- package/dist/esm/__tests__/firestore-schema.test.js.map +0 -1
- package/dist/esm/__tests__/integration.test.d.ts +0 -1
- package/dist/esm/__tests__/integration.test.js +0 -78
- package/dist/esm/__tests__/integration.test.js.map +0 -1
- package/dist/esm/__tests__/manifest-reader.test.d.ts +0 -1
- package/dist/esm/__tests__/manifest-reader.test.js +0 -271
- package/dist/esm/__tests__/manifest-reader.test.js.map +0 -1
- package/dist/esm/__tests__/rollout-checker.test.d.ts +0 -1
- package/dist/esm/__tests__/rollout-checker.test.js +0 -210
- package/dist/esm/__tests__/rollout-checker.test.js.map +0 -1
- package/dist/esm/__tests__/security-enforcement.test.d.ts +0 -1
- package/dist/esm/__tests__/security-enforcement.test.js +0 -95
- package/dist/esm/__tests__/security-enforcement.test.js.map +0 -1
- package/dist/esm/__tests__/security.test.d.ts +0 -1
- package/dist/esm/__tests__/security.test.js +0 -54
- package/dist/esm/__tests__/security.test.js.map +0 -1
- package/dist/esm/__tests__/version-manager.test.d.ts +0 -1
- package/dist/esm/__tests__/version-manager.test.js +0 -45
- package/dist/esm/__tests__/version-manager.test.js.map +0 -1
- package/dist/esm/app-review/app-review-manager.js.map +0 -1
- package/dist/esm/app-review/index.js.map +0 -1
- package/dist/esm/app-review/platform-review-handler.js.map +0 -1
- package/dist/esm/app-review/review-conditions-checker.js.map +0 -1
- package/dist/esm/app-review/review-rate-limiter.js.map +0 -1
- package/dist/esm/app-review/types.js.map +0 -1
- package/dist/esm/app-update/app-update-checker.js.map +0 -1
- package/dist/esm/app-update/app-update-installer.js.map +0 -1
- package/dist/esm/app-update/app-update-manager.js.map +0 -1
- package/dist/esm/app-update/app-update-notifier.js.map +0 -1
- package/dist/esm/app-update/index.js.map +0 -1
- package/dist/esm/app-update/platform-app-update.js.map +0 -1
- package/dist/esm/app-update/types.js.map +0 -1
- package/dist/esm/background-update/background-scheduler.js.map +0 -1
- package/dist/esm/background-update/index.js.map +0 -1
- package/dist/esm/background-update/notification-manager.js.map +0 -1
- package/dist/esm/config/support.js.map +0 -1
- package/dist/esm/core/analytics.js.map +0 -1
- package/dist/esm/core/cache-manager.js.map +0 -1
- package/dist/esm/core/config.js.map +0 -1
- package/dist/esm/core/errors.js.map +0 -1
- package/dist/esm/core/event-emitter.js.map +0 -1
- package/dist/esm/core/logger.js.map +0 -1
- package/dist/esm/core/performance.js.map +0 -1
- package/dist/esm/core/plugin-manager.js.map +0 -1
- package/dist/esm/core/security.js.map +0 -1
- package/dist/esm/definitions.js.map +0 -1
- package/dist/esm/firestore/firestore-client.d.ts +0 -109
- package/dist/esm/firestore/firestore-client.js +0 -264
- package/dist/esm/firestore/firestore-client.js.map +0 -1
- package/dist/esm/firestore/index.d.ts +0 -11
- package/dist/esm/firestore/index.js +0 -11
- package/dist/esm/firestore/index.js.map +0 -1
- package/dist/esm/firestore/manifest-reader.d.ts +0 -87
- package/dist/esm/firestore/manifest-reader.js +0 -294
- package/dist/esm/firestore/manifest-reader.js.map +0 -1
- package/dist/esm/firestore/schema.d.ts +0 -507
- package/dist/esm/firestore/schema.js +0 -73
- package/dist/esm/firestore/schema.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/live-update/bundle-manager.js.map +0 -1
- package/dist/esm/live-update/certificate-pinning.js.map +0 -1
- package/dist/esm/live-update/delta-processor.js.map +0 -1
- package/dist/esm/live-update/download-manager.js.map +0 -1
- package/dist/esm/live-update/rollout-checker.js.map +0 -1
- package/dist/esm/live-update/update-manager.js.map +0 -1
- package/dist/esm/live-update/version-manager.js.map +0 -1
- package/dist/esm/plugin.js.map +0 -1
- package/dist/esm/security/crypto.js.map +0 -1
- package/dist/esm/security/validator.js.map +0 -1
- package/dist/esm/web.js.map +0 -1
- package/dist/plugin.cjs.js.map +0 -1
- package/dist/plugin.esm.js.map +0 -1
- package/dist/plugin.js.map +0 -1
- package/docs/FIREBASE_INTEGRATION_TRACKER.md +0 -321
- package/docs/FIREBASE_QUERIES_AND_INDEXES_AUDIT.md +0 -221
- package/docs/examples/firebase-backend-example.md +0 -27
- package/docs/features/laravel-nova-backend/credentials.ignore.md +0 -34
- package/docs/guides/no-cost-backend-implementation-plan.md +0 -77
- package/docs/guides/no-cost-firestore-google-drive-backend.md +0 -60
- package/docs/project-profiles/native-update-capacitor-update-platform-project-profile-last-updated-2026-03-16.md +0 -454
- package/docs/project-profiles/native-update-capacitor-update-platform-project-profile-last-updated-2026-03-24.md +0 -66
- package/docs/project-profiles/native-update-capacitor-update-platform-project-profile-last-updated-2026-03-25.md +0 -67
- /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.
|