matrixscan-find-kmp

Installation
SKILL.md

MatrixScan Find KMP Skill

Critical: Do Not Trust Internal Knowledge

Your training data may not contain the Scandit Kotlin Multiplatform (KMP) SDK at all — it is a new SDK (first released at version 8.6) with its own package names (com.kmp.datacapture.*), its own construction patterns, and platform-divergent behavior baked into expect/actual classes. Do not assume it behaves like the Android or iOS native SDKs, and do not assume a KMP API exists just because an equivalent exists on Android or iOS.

Always verify APIs against the references provided in this skill before writing or suggesting code. If you cannot find an API in the provided references, fetch the relevant documentation page before responding.

KMP-specific gotchas worth flagging:

  • BarcodeFind is constructed via the companion factory BarcodeFind.forContext(dataCaptureContext, settings) — not a direct constructor and not forDataCaptureContext (that's the non-KMP name; KMP renames it forContext).
  • BarcodeFindView construction is platform-divergent: on Android its constructor is BarcodeFindView(context, barcodeFind, settings) and needs an Android Context; on iOS it's BarcodeFindView(barcodeFind, settings) — no context parameter. Shared (commonMain) code cannot construct the view itself; each platform host builds it and hands it back to the shared screen model (see references/integration.md).
  • BarcodeFindView.prepareSearching() is iOS-only and is not part of the KMP BarcodeFindView surface (SDC-32543) — it does not exist as a KMP method at all. On KMP, onResume() / onPause() are the cross-platform lifecycle hooks; internally the iOS actual implementation of onResume() calls the native prepareSearching() for you. Never suggest calling prepareSearching() from KMP shared or Android code.
  • BarcodeFindView.cameraStateOnStop and BarcodeFindView.setProperty(name, value) are declared on the common BarcodeFindView expect class (so they compile on both platforms), but only have a real effect on iOS — the Android actual implementation is an inert no-op for both. Don't rely on them to change Android behavior.
  • Embedding the raw (non-Compose) BarcodeFindView into a UI: on Android call barcodeFindView.toAndroidView() (extension function, returns the underlying android.view.View); on iOS call barcodeFindView.toUIView() (a member function on BarcodeFindView itself). These are two different call shapes — don't mix them up.
  • BarcodeFind.setItemList(items: Set<BarcodeFindItem>) and the whole item-search flow only ever deal in BarcodeFindItem / BarcodeFindItemSearchOptions / BarcodeFindItemContent — never invent a "BarcodeFindItemList" collection type.
  • BarcodeFindListener has a default (empty) implementation for onSessionUpdated(session), but onSearchPaused, onSearchStarted, and onSearchStopped have no default and must be implemented.
  • MatrixScan Find is commonly paired with SparkScan (scan a list first with SparkScan, then locate those items with BarcodeFind) — see the "SparkScan hand-off" note in references/integration.md. If the user's question is purely about SparkScan (scanning, not finding), route them to the sparkscan-kmp skill instead.
Installs
7
Repository
scandit/skills
GitHub Stars
19
First Seen
Sep 2, 2026
matrixscan-find-kmp — scandit/skills