About matrixscan-count-cordova
A skill for developers integrating Scandit MatrixScan Count with Cordova, with guidance on BarcodeCount setup, view attachment, and migration. It focuses on Cordova runtime requirements and notes that the feature does not support the web platform.
Key features
- 01BarcodeCount integration guidance
- 02Count view and DOM attachment instructions
- 03Barcode filtering and list configuration references
- 04Migration guidance
Use cases
- 01Adding item-count scanning to a Cordova app
- 02Configuring barcode filters or additional barcode lists
- 03Migrating from an older BarcodeCount constructor pattern
MCP support
The skill describes using the Scandit MCP server to configure a scanning license key and write it to the project’s .env file.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ scandit/ skills --skill matrixscan-count-cordovaAfter installing, type/matrixscan-count-cordovain Claude Code to confirm it loaded.
Bundled filesreferences/integration.mdreferences/migration.md
Details
From the project READMEMatrixScan Count Cordova Skill
Critical: Do Not Trust Internal Knowledge
Your training data may contain outdated or incorrect Scandit SDK APIs. The BarcodeCount Cordova API has evolved significantly across SDK versions. Key milestones:
- Cordova 6.24: BarcodeCount first available on Cordova.
- Cordova 7.6: Context-free constructor
new Scandit.BarcodeCount(settings)introduced;context.addMode(barcodeCount)is now the wiring call. - Cordova 7.1:
BarcodeCountNotInListActionSettingsavailable. - Cordova 8.3:
BarcodeCountStatusProvider,shouldShowStatusModeButton,textForBarcodesNotInListDetectedHint,textForClusteringGestureHint,textForScreenCleanedUpHint,disableModeWhenCaptureListCompleted,ClusteringModeavailable. - Filtering / unique / additional barcodes / reset:
BarcodeCountSettings.filterSettings(BarcodeFilterSettings—excludedSymbologies,excludedCodesRegex),expectsOnlyUniqueBarcodes,setAdditionalBarcodes/clearAdditionalBarcodes, andreset()are available on Cordova.
Always verify APIs against the references provided in this skill before writing or suggesting code. Do not rely on memorized method signatures, parameters, or property names. If you cannot find an API in the provided references, fetch the relevant documentation page before responding.
Source note: There is no public Cordova MatrixScan Count sample. The integration reference is anchored to the internal DebugApp (
frameworks/cordova/debugapp/src/pages/BarcodeCount.tsxandframeworks/cordova/debugapp/src/hooks/modes/useBarcodeCount.ts) and the Cordova plugin source (frameworks/cordova/scandit-cordova-datacapture-barcode/www/ts/src/BarcodeCountView.ts).
Cordova-Specific Gotchas
- Global namespace: The Scandit SDK is exposed on
window.Scandit. UseScandit.BarcodeCount,Scandit.BarcodeCountView, etc. at runtime. The npm packages (scandit-cordova-datacapture-*) are plugin manifests, not ES modules. Do not emitimport { ... } from 'scandit-cordova-datacapture-*'in user code running in the WebView. Only TypeScript projects using Webpack/bundler can import types at compile time. devicereadygate: All Scandit APIs must be called afterdocument.addEventListener('deviceready', ...). Never call at module load time.- Plugin install: Both plugins are required:
After any plugin change, runcordova plugin add scandit-cordova-datacapture-core cordova plugin add scandit-cordova-datacapture-barcodecordova prepare. - Web platform NOT supported: BarcodeCount on Cordova requires iOS or Android. The web platform is not supported.
BarcodeCountViewuses a DOM-overlay model: The native view is sized and positioned to mirror an HTML element. The attach API (verified against plugin source) is:barcodeCountView.connectToElement(htmlElement)— synchronous, noawaitneeded (internally async, but the public signature isvoid).barcodeCountView.detachFromElement()— synchronousvoid. Call during teardown.barcodeCountView.setFrame(rect, isUnderContent)— manually position using aRect. ReturnsPromise<void>. Use only when NOT usingconnectToElement.barcodeCountView.show()/barcodeCountView.hide()— returnsPromise<void>. Only use withsetFrame; throws if called with an element attached.
- Constructor pattern (≥7.6):
new Scandit.BarcodeCount(settings)followed bycontext.addMode(barcodeCount). The olderBarcodeCount.forDataCaptureContext(context, settings)wired context automatically; the new constructor does not. - Camera: Use
Scandit.BarcodeCount.createRecommendedCameraSettings()(≥7.6 Cordova). Obtain the camera withScandit.Camera.withSettings(cameraSettings), set it viacontext.setFrameSource(camera), and toggle withcamera.switchToDesiredState(Scandit.FrameSourceState.On/Off). - License placeholder: Always use the exact string
'-- ENTER YOUR SCANDIT LICENSE KEY HERE --'.
Intent Routing
Based on the user's request, load the appropriate reference file before responding:
-
Integrating MatrixScan Count from scratch (e.g. "add MatrixScan Count to my app", "set up BarcodeCount in Cordova", "how do I scan a list of items", "how do I show the count view", "how do I customize the toolbar or hints", "how do I use tap-to-uncount", "how do I enable status mode") → read references/integration.md and follow the instructions there.
-
Migrating from an older BarcodeCount constructor pattern (e.g. "migrate from BarcodeCount.forDataCaptureContext", "update to the new constructor", "adopt status mode", "add not-in-list action settings to existing code") → read references/migration.md and follow the migration guide there.
API Usage Policy
Only use APIs that are explicitly documented in the Scandit references below. Do not invent or guess method signatures, parameters, property names, or imports. If unsure whether an API exists or how it is called — or if a runtime error occurs — fetch the relevant reference page before responding. Do not tell the user to check the docs themselves. After answering, always include the relevant link so the user can explore further.
Never construct or guess documentation URLs. When you need a specific class or property's API page:
- First check whether the page you already fetched contains a direct hyperlink to it.
- If no direct link was found, fetch the API index, extract the actual link from it, and follow that.
Framework Variant Policy
Cordova is a WebView-based framework. Examples in this skill use plain JavaScript (with optional JSDoc type hints). The same API works in TypeScript — add a global.d.ts declaration file and write TypeScript syntax. This skill does not assume a TypeScript project by default. If the target project is clearly TypeScript (.ts files, tsconfig.json), adapt the final output to TypeScript; otherwise stay in plain JS.
Licence key
Scanning needs a Scandit licence key. For this skill the licence product is native and the licence platforms are ios and android.
Work through these in order — never block the user on MCP:
-
The Scandit MCP server is connected — call
ensure_scanner_setupwith productnativeand platformsiosandandroid, then run the commandget_license_env_commandreturns, which writes the key into the project's.env. Show at most a masked preview in chat; never print a full key. -
It is not connected — offer to connect it once, then continue from step 1:
- Claude Code:
claude mcp add --transport http scandit https://ssl.scandit.com/mcp - Cursor: add
{"mcpServers": {"scandit": {"url": "https://ssl.scandit.com/mcp"}}}to~/.cursor/mcp.json - VS Code: add
{"servers": {"scandit": {"type": "http", "url": "https://ssl.scandit.com/mcp"}}}to the MCP user configuration
Authentication is browser-based, so it is not supported headless or in CI. The server provisions trial keys only; it never creates, revokes, or modifies production licences.
- Claude Code:
-
The user declines, or has no MCP client — they generate a key themselves at https://ssl.scandit.com (no account yet: https://ssl.scandit.com/dashboard/sign-up?p=test) and paste it in.
Then put the key into the code in place of the placeholder; a key in .env does not reach the app by itself. Cordova does not load .env by itself, so use the simplest route below. The simplest route on any platform: read .env and put the key into the licence-key call directly, still showing only a masked preview in chat.
References
Direct users to the right resource based on their question:
| Topic | Resource |
|---|---|
| Cordova integration | Get Started |
| Full API reference | BarcodeCount API |