Skip to content

v0.1.5 — settings.gradle repo support + exact iOS SDK pin (competitor-audit hardening) - #15

Merged
KAMRONBEK merged 2 commits into
mainfrom
fix/sdk-pin-and-settings-gradle
Jul 25, 2026
Merged

KAMRONBEK merged 2 commits into
mainfrom
fix/sdk-pin-and-settings-gradle

Conversation

@KAMRONBEK

Copy link
Copy Markdown
Contributor

Hardening surfaced by auditing the 5 competing RN MyID wrappers' published source. None had filed GitHub issues (0–3★ projects), so the scan read their code for latent bugs, then verified each pattern against ours — 12 of 22 patterns were already handled correctly here. These are the 2 that genuinely applied.

Fixed

  • Config plugin now works under modern Gradle repo centralization. The MyID Maven repo was only injected into the root build.gradle allprojects block — which repositoriesMode = FAIL_ON_PROJECT_REPOS rejects (build failure), and which is a silent no-op on settings.gradle-only templates. Now: inject into settings.gradle dependencyResolutionManagement.repositories when that block exists (and skip the allprojects injection so it can't trip FAIL_ON_PROJECT_REPOS); keep the allprojects path for older templates; warn at prebuild instead of silently shipping an unresolvable build when neither exists. New pure helpers are unit-tested (5 new tests).
  • iOS MyIdSDK pinned to exact 3.1.3 (was ~> 3.1.3), so an untested MyID patch can't float into a build — matching the exact Android pin and the library's "never floated" guarantee. (iOS 3.1.3 vs Android 3.1.9 differ by design — MyID versions the two platform SDKs independently.)
  • Synced the stale podspec/gradle module versions (0.1.00.1.5).

Considered and declined (reported to maintainer)

  • iOS AVCaptureDevice preflight — the SDK already reports denial (code 102 → permission); our own preflight risks UX conflict and needs on-device validation.
  • Watchdog timeout — guards a hypothetical never-firing callback; an arbitrary ceiling could abort a legitimately slow liveness, and a JS-only version reintroduces the native wedge fixed in 0.1.4.
  • Remove the 100 ms iOS launch delay — it's a deliberate anti-presentation-race beat validated by the 6/6 on-device E2E; removing needs device testing.
  • Sourcemaps in the tarball — harmless (MIT/open source), common for Expo modules.

Verification

Local: lint · typecheck · build · plugin build · 37/37 tests (5 new) green; README EN/RU/UZ hold 429-line parity; all version fields consistent at 0.1.5. CI's iOS (pod install resolves exact 3.1.3) and Android (prebuild + assembleDebug, default template → unchanged allprojects path) gates validate the native side.

Surfaced by auditing the 5 competing RN MyID wrappers for latent issues.

- Config plugin: on modern Gradle/AGP templates that centralize repositories in
  settings.gradle `dependencyResolutionManagement`, inject the MyID Maven repo
  there and SKIP the root `allprojects` injection (which FAIL_ON_PROJECT_REPOS
  rejects and would fail the build). Older templates keep the allprojects path
  unchanged. When neither location exists, emit a prebuild warning instead of
  silently shipping a build that can't resolve the SDK. New pure helpers
  (addMavenToSettingsGradle, settingsHasDependencyRepositories) are unit-tested.
- iOS: pin MyIdSDK to exact `3.1.3` (was `~> 3.1.3`) so an untested MyID SDK
  patch can't float into a build — matching the exact Android pin and the
  library's "never floated" guarantee. (iOS 3.1.3 vs Android 3.1.9 differ by
  design: MyID versions the two platform SDKs independently.)
- Sync the stale podspec/gradle module versions (0.1.0 -> 0.1.5).
- Docs: README EN/RU/UZ updated for both changes + troubleshooting row.
@KAMRONBEK
KAMRONBEK merged commit cb95b66 into main Jul 25, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant