Skip to content

React Native setInterest JSDoc conflicts with DataStore startup order #472

Description

@kivtxs

Mesh SDK v0.27.0 React Native DataStore.setInterest JSDoc instructs callers to set interests before protocol.start(), but the native store is initialized during startup.

Evidence: bindings/react-native/src/index.ts setInterest forwards directly to dataSetInterest. The startup path initializes DataStore (around lines 1054–1058). bindings/react-native/ios/OfflineProtocolModule.swift dataSetInterest requires the initialized store and otherwise throws “DataStore not initialized” (around lines 877 and 1907). There is no pre-start pending-interest application implemented by this JS method.

The docs now instruct React Native callers to call setInterest immediately after start() resolves, on every launch, and explicitly correct the generated prose while retaining the released signatures.

Please align JSDoc with runtime ordering, or implement and qualify a pre-start caching contract across supported bindings. Validate lifecycle order, restart/reapplication and any initial replication window before application interests are applied. Document actual behavior rather than relying on a TypeScript compile test.

Any public SDK PR should include a complete fix description, validation evidence and effects on currently deployed first-party/third-party apps. No SDK implementation was changed by this docs fix.

Android confirmation

The same initialization guard exists on Android in v0.27.0: bindings/react-native/android/src/main/java/com/offlineprotocol/OfflineProtocolModule.kt, lines 1982–1984, starts dataSetInterest with val store = dataStore ?: throw IllegalStateException("DataStore not initialized"). This is source-confirmed on both native platforms; no hardware test is claimed. Lifecycle validation for a fix must cover Android as well as iOS.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions