Secrets have one owner.
Configure Android and iOS app credentials independently and keep privileged calls on a backend. JavaScript configuration is not a secret store.
A typed shared state contract with independent Android and iOS adapter qualification instead of assumed wrapper parity.
The canonical file manifest is also the archive contract. Common evidence, environment, manifest, and acceptance files accompany platform-specific source.
README.mdSetup and first-success boundarySTARTER_MANIFEST.jsonMachine-readable project scope.env.exampleBlank non-secret configurationEVIDENCE.mdSource and selection boundaryACCEPTANCE.mdSuccess and hostile-path proofsrc/mappls-feature.tsShared bridge contractsrc/fixture-adapter.tsDeterministic bridge fixtureNATIVE_MATRIX.mdIndependent native release checklistConfigure Android and iOS app credentials independently and keep privileged calls on a backend. JavaScript configuration is not a secret store.
The public wrapper is sample-classified. Confirm React Native, wrapper, New Architecture status, Gradle/Kotlin, Xcode/Swift, and underlying native Mappls versions as one release unit.
Android and iOS return the same application-level selected ID while platform-specific failures remain visible and attributable.
A blocked, missing, or unentitled provider produces a useful explicit failure rather than a blank surface or fabricated result.
No server credential, bearer value, precise private fixture, or provider response body appears in client bundles, logs, screenshots, or test artifacts.
Resources, listeners, sessions, processes, or requests stop cleanly when the owning screen, request, or application ends.
Wrapper/native matrix is pinned
Both release builds are proven
Bridge traffic is bounded
Unmount disposes every native resource