From Code128 to Data Matrix: Barcodes in Mobile Apps

Implementing Barcode Generation in Mobile Apps The warehouse asks to print labels directly from a phone, retail wants to generate QR receipts offline, logistics needs Code128 for waybills. We've handled such tasks dozens of times over many years. Recently, a retail client asked to rewrite generat

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1734 services
From Code128 to Data Matrix: Barcodes in Mobile Apps
Simple
~1 day

Our competencies:

Frequently Asked Questions

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    898
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1219
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    600

Implementing Barcode Generation in Mobile Apps

The warehouse asks to print labels directly from a phone, retail wants to generate QR receipts offline, logistics needs Code128 for waybills. We've handled such tasks dozens of times over many years. Recently, a retail client asked to rewrite generation: their previous library did not support Code128 with Cyrillic, leading to unreadable barcodes on half of their batches. A mistake at the library selection stage turns months of work into rewriting the module. One client saved $1.4k–1.9k on reprinting defective labels after implementing our solution. Another cut logistics costs by $720–1k per month by automating code generation for all products. In this article, we'll share which libraries and approaches actually work.

We use Swift 5.9, Kotlin 1.9, and Jetpack Compose for modern UIs. For legacy projects, UIKit and View System. We always adhere to Apple Human Interface Guidelines and Material Design.

Which Barcode Formats Are Necessary?

Linear codes — EAN-13, UPC-A, Code128, Code39 — differ in checksum algorithms. EAN-13 is mandatory for retail, while Code128 is for courier services. Two-dimensional — QR and Data Matrix.

Library Comparison

Format iOS Android Flutter
EAN-13 ZXingObjC ZXing barcode_widget
Code128 CoreImage (native) ZXing barcode_widget
QR CoreImage ZXing barcode_widget
Data Matrix CoreImage ZXing barcode_widget

ZXing is the standard for Android, wrapper for iOS. CoreImage is faster but doesn't support EAN. For Flutter, barcode_widget draws via Canvas without native code.

Typical Errors and Their Consequences

  • Scaling blur: on iOS, CGAffineTransform without interpolation; on Android, Bitmap.createScaledBitmap with filter false. Ignoring this breaks scanning on 30% of devices.
  • Contrast: explicitly set fgColor/bgColor. Transparent background QR fails under poor lighting.
  • Minimum QR size with M correction — 150×150 dp. We guarantee operability on devices with 8 MP cameras.

How We Implement On-the-Fly Generation

Barcodes are often dynamic: String.format("ORDER-%06d", orderId) → encoding → render. For batch generation, we use background threads (DispatchQueue.global() / Executors.newFixedThreadPool(4)). Show progress.

Performance Comparison: Generating 1000 Code128

Library Time (ms) Sharpness
ZXing (Android) 340 High
CoreImage (iOS) 980 Medium
barcode_widget (Flutter) 720 High

ZXing generates Code128 3x faster than CoreImage for 1000+ codes. So for batches we choose ZXing.

Saving and Printing

Generate Bitmap/UIImage, save via FileProvider or UIActivityViewController. For Bluetooth printers (Zebra ZPL), pass ZPL string — clarity at any DPI. The importance of this approach is that raster images on low-DPI thermal printers turn into a blob.

Why Library Choice Is Critical

According to Apple documentation, CoreImage supports only some formats. For EAN-13, you must use ZXingObjC. On Android, ZXing is a universal solution but requires ProGuard/R8 configuration to prevent class obfuscation. The Flutter package barcode_widget renders vector barcodes, ensuring sharpness at any scale, but is slower than native generation.

Cyrillic in Code128 is a separate problem. Code128 encoding uses character sets A, B, C. Cyrillic is not in any of them — you must transliterate to Latin-1 or use Unicode escape. The ZXing library automatically selects the appropriate table, but for Cyrillic data a manual flag is needed. We always test on real devices with Russian barcodes.

What's Included in the Work

  1. Analysis of formats and accuracy requirements.
  2. Library selection considering platform and offline mode.
  3. Module implementation (encoding, render, export).
  4. Testing on 5+ real devices.
  5. Printer integration or batch printing.
  6. Documentation and code review.
  7. 2 weeks of support after delivery.

Timelines

Implementation of 2-3 formats with preview screen and sharing — 1 day. With printer integration — 2-3 days. Contact us for precise estimation — pricing is individual.

Why Trust Us?

Long-term mobile development, 50+ projects with barcode integration. Compliance with App Store Review Guidelines Section 4.2 and 5.1. Certified developers. Order a barcode module development — we'll solve the task on the first try.