npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

react-native-honeywell

v3.0.1

Published

A barcode reader for Honeywell handheld devices

Readme

React Native Honeywell Barcode Reader

A React Native TurboModule for Honeywell devices with integrated barcode scanners, such as the Honeywell EDA50K, EDA51, and other compatible devices.

Features

  • New Architecture Only: Built exclusively for React Native's new architecture (Fabric/TurboModule)
  • TypeScript Support: Full TypeScript definitions and modern API
  • Event-driven: Listen to barcode scan success and failure events
  • Property Configuration: Configure scanner properties dynamically
  • Optimized Performance: Fixed duplicate scan events and improved reliability
  • React Native 0.72.0+: Optimized for modern React Native versions

Important: This package requires React Native's New Architecture to be enabled in your project.

This version is a modernized fork from react-native-honeywell-barcode-reader with significant improvements and TurboModule support.

Installation

npm install react-native-honeywell

or

yarn add react-native-honeywell

Requirements

React Native New Architecture

This package requires React Native's New Architecture to be enabled in your project:

  1. Android Configuration - In android/gradle.properties, ensure these properties are set:

    newArchEnabled=true
  2. Babel Configuration - In your app's babel.config.js, ensure you have:

    module.exports = {
      presets: ['module:@react-native/babel-preset'],
    };

React Native Version

  • React Native 0.72.0 or higher
  • Android API level 21 or higher
  • Honeywell devices with integrated barcode scanner

Setup

For React Native 0.72+, the package will automatically link with autolinking. No manual linking is required.

Android Permissions

The package automatically includes the necessary permissions in its AndroidManifest.xml. No additional permissions are required in your app.

Usage

Import the Module

import HoneywellBarcodeReader from 'react-native-honeywell';

Check Device Compatibility

First, check if the current device is a compatible Honeywell scanner:

const isCompatible = HoneywellBarcodeReader.isCompatible();
console.log(isCompatible ? 'Device is compatible' : 'Device is not compatible');

Start the Barcode Reader

The barcode reader needs to be "claimed" by your application. While claimed, no other application can use the scanner:

try {
  const claimed = await HoneywellBarcodeReader.startReader();
  console.log(claimed ? 'Barcode reader is claimed' : 'Barcode reader is busy');
} catch (error) {
  console.error('Failed to start reader:', error);
}

Listen for Barcode Scan Events

Set up event listeners to receive barcode scan results:

// Listen for successful scans
HoneywellBarcodeReader.onBarcodeReadSuccess((event) => {
  console.log('Barcode scanned:', event);
  // event contains the scanned barcode data
});

// Listen for scan failures
HoneywellBarcodeReader.onBarcodeReadFail((error) => {
  console.log('Barcode scan failed:', error);
});

Configure Scanner Properties

You can configure various scanner properties:

// Set string properties
HoneywellBarcodeReader.setReaderProperty('DEC_CODABAR_ENABLED', 'true');

// Set number properties
HoneywellBarcodeReader.setReaderProperty('DEC_CODABAR_MIN_LENGTH', 4);

// Set boolean properties
HoneywellBarcodeReader.setReaderProperty('DEC_QR_ENABLED', true);

Stop the Barcode Reader

When you're done scanning, stop the reader to free up resources:

try {
  await HoneywellBarcodeReader.stopReader();
  console.log('Barcode reader stopped successfully');
} catch (error) {
  console.error('Failed to stop reader:', error);
}

Remove Event Listeners

To prevent memory leaks, remove event listeners when they're no longer needed:

API Reference

Methods

| Method | Description | Returns | | -------------------------------- | ------------------------------------------------- | ------------------ | | isCompatible() | Check if device is a compatible Honeywell scanner | boolean | | startReader() | Claim and start the barcode reader | Promise<boolean> | | stopReader() | Stop the barcode reader and release resources | Promise<void> | | setReaderProperty(name, value) | Configure scanner properties | void | | onBarcodeReadSuccess(callback) | Listen for successful scans | void | | onBarcodeReadFail(callback) | Listen for scan failures | void | | getBrand() | Get device brand information | string | | getConstants() | Get available constants from native module | object |

Events

Barcode Read Success

HoneywellBarcodeReader.onBarcodeReadSuccess((event) => {
  // event structure may vary based on barcode type
  console.log(event);
});

Barcode Read Failure

HoneywellBarcodeReader.onBarcodeReadFail((error) => {
  console.log('Scan failed:', error);
});

Example App

See the example/ directory for a complete working example demonstrating all features of the package.

Troubleshooting

"Module not found" or Build Errors

  1. Ensure New Architecture is enabled in android/gradle.properties:

    newArchEnabled=true
  2. Clean and rebuild your project:

    cd android && ./gradlew clean && cd ..
    npx react-native run-android

Scanner Not Working

  1. Verify the device is a compatible Honeywell scanner
  2. Check that no other app is currently using the scanner
  3. Ensure proper permissions are granted

TypeScript Errors

Make sure you have the latest TypeScript definitions. The package includes built-in TypeScript support.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License.

Credits

This package is based on the original work by duytq94 and has been modernized for React Native's new architecture.