Most warehouses and stockrooms share one problem. Off-the-shelf inventory software quietly assumes it away: the WiFi doesn’t always reach the back shelf. An app that needs a live connection to log a scan fails exactly where counts tend to happen — basements, metal shelving, the far corner of a distribution center.
Folder IT built a real example of the alternative. It’s an offline-first mobile app that counts inventory by barcode scan. No server and no live connection are required at any point. In fact, the full build is public on GitHub, written in React Native on Expo.
Why Offline-First Matters for Inventory Counting
A connectivity-dependent inventory app works fine in a demo. In a real stockroom, though, it drops scans the moment signal gets weak. Worse, a counter has no way to tell whether a scan registered or not. That uncertainty is what turns a quick count into a re-count.
An offline-first mobile app removes that failure mode entirely. Every scan writes straight to a local SQLite database on the device. There’s no round trip to a server, so there’s nothing to time out or retry. As a result, the count stays accurate whether the device has signal or not.
This is also where custom mobile app development earns its place over an off-the-shelf tool. Most commercial inventory apps treat offline mode as a fallback. That leaves syncing issues and partial data to sort out later. By contrast, this build treats offline as the default.
How the Scan Gate Prevents Duplicate Counts
A camera firing rapid callbacks is a classic source of inventory errors. One barcode in view can trigger several scan events in quick succession. Each one would add a unit if nothing stopped it.
The repo solves this with a synchronous gate, built on a ref instead of component state. The gate opens once and accepts exactly one scan. Then it locks again until the counter explicitly asks for the next one. There are no debounce timers, and no guessing at a delay that might still let a duplicate through.
That single mechanism is what makes a mobile inventory management app trustworthy enough to use for a real count. Expected quantities also become locked once counting starts. So a mid-count edit can’t quietly shift the numbers a counter already checked against.

Turning Scans Into a Usable Count
Scanning alone isn’t a count. The real value comes from reconciliation: comparing what got scanned against what was expected, then surfacing the differences clearly.
This build separates every item into four buckets once a count closes: matched items, shortages, overages, and items that weren’t expected at all. That structure maps directly to what a warehouse manager actually needs to act on. Instead of a raw scan log, it gives a clear answer to what’s missing and what’s extra.
Every write also passes through a serialized queue instead of firing independently. As a result, two scans landing at nearly the same moment still get processed in order. That keeps the count consistent even under fast, repeated scanning.
When Custom Mobile App Development Makes Sense
Not every inventory process needs a purpose-built app. A small retail stockroom with a handful of SKUs and solid WiFi coverage can get by with a generic counting tool.
The case for a React Native development company building something custom gets stronger in a few situations. For instance, the environment might not guarantee connectivity. Or the count might need strict duplicate protection. Or the reconciliation logic might need to match a specific operational process instead of a generic template. This repo supports up to 500 line items per count, and it validates every barcode against the EAN-13 checksum standard. It also runs its entire test suite against a real SQLite database instead of a mock. That level of detail matters once an app has to be trusted with a real count, not just a demo.
Frequently Asked Questions
What makes a mobile app “offline-first”? An offline-first mobile app treats the local database as the source of truth, rather than treating it as a cache for data from a server. The app works fully without a network connection, and any syncing happens separately rather than being required for basic functionality.
How does this build prevent duplicate barcode scans? A synchronous gate, built on a ref rather than component state, allows exactly one scan through at a time. The gate stays closed until the counter requests the next scan, which rules out the rapid-fire duplicate reads that camera callbacks can otherwise produce.
What happens when a scanned item wasn’t expected? The reconciliation screen sorts every scanned item into one of four categories: matched, shortage, overage, or unexpected. Unexpected items show up clearly instead of getting silently dropped or merged into the wrong line.
Can this run without a physical barcode scanner? Yes. The app supports manual barcode entry as a fallback, and a simulator can be used for UI review, though physical-device testing is needed to exercise the real camera-based scan gate.
Is this repository production-ready? No. It’s a versioned reference example meant to document the approach and let a technical evaluator reproduce it, not a maintained production dependency.
A Different Way to Build for the Floor, Not the Demo
An offline-first mobile app doesn’t have to mean compromising on reliability just because there’s no server in the loop. This build shows the alternative end to end. It has real barcode scanning, real duplicate protection, and real reconciliation logic, all running entirely on the device.
Folder IT builds mobile applications for enterprises that need software designed around how work actually happens on the floor, not around what’s easiest to demo. Get in touch to scope what a custom mobile build would look like for a specific operations use case.