Ultra wideband Android support is real, and narrower than it sounds.
Ultra wideband Android support exists, it is documented by Google, and it measures distance between two devices to about 10 cm. It also runs on a short list of handsets, needs a second ultra wideband device at the other end, and has no first party React Native module. If you are working through Android platform features looking for the one that tells your app how far away something is, this is it, and it is worth understanding before you design around it.
This page covers what the radio gives you, which phones carry it, how the Android 16 ranging API changed the picture, and what it takes to reach any of it from a React Native codebase.
Check whether it fits your appThe short version
The radio is the easy part, the device list is the hard part.
Ultra wideband times how long a signal takes to travel between two devices. That gives a distance rather than an estimate, and on supporting hardware it can give a direction as well. Bluetooth signal strength, the usual alternative, tells you a signal got weaker and leaves you to guess whether that was distance, a wall or a hand.
Everything hard sits around that measurement. Both ends need the radio. Both ends need software you control. The handset has to be a model that shipped with the chip, and most Android phones did not. So a UWB Android app is always two apps in one: the precise version for the phones that have it, and the version everyone else gets.
What ultra wideband gives you that Bluetooth does not
Google describes ultra wideband as a radio technology focused on precise ranging, measuring location to an accuracy of 10 cm, across a bandwidth greater than 500 MHz. The practical difference from Bluetooth is what is being measured. Signal strength is loudness, and loudness drops for reasons that have nothing to do with distance. Ultra wideband times the signal, so the number you get back is a measurement.
A session has two roles. One device is the Controller, which picks the complex channel the pair will share and initiates the session. The other is the Controlee, which responds. A Controller can handle several Controlees, but a Controlee subscribes to a single Controller. If you are picturing one phone reading a shelf of tags, that is the shape it takes, and the phone is the Controller.
None of this starts on its own. Android's own steps are to confirm the devices run Android 12 or higher and report the system feature android.hardware.uwb, discover ultra wideband peers using an out of band mechanism of your choice such as a Bluetooth LE scan, then exchange ranging parameters over a secure channel before ranging begins. Ultra wideband does not find anything. It measures the distance to something you found another way, and if you are ranging against IoT hardware, that hardware has to be FiRa MAC 1.3 compliant.
Which phones actually carry the radio
Whether a given handset is an ultra wideband phone is a hardware question, and the answer is on a list. As of January 2025 the Android documentation names Google's Pixel Pro from the 6 Pro onwards plus the Pixel Fold and Pixel Tablet, the Motorola Edge 50 Ultra, and from Samsung the Galaxy Note 20, the Plus and Ultra models from the S21 onwards and the Galaxy Z Fold from the Fold2 onwards. Flagships, in other words, and not all of them.
Background behaviour narrows it further. An app can start a ranging session in the background on a device that supports it, but it does not receive ranging reports while it is in the background. The reports arrive once the app returns to the foreground. Android also lists handsets where background ranging is not supported at all, among them the Pixel 6 Pro, the Pixel 7 Pro and the Pixel Fold, Samsung phones running Android 13 or lower, and Samsung Chinese phones running Android 14 or lower. A feature that needs a distance while the screen is off is not one you can ship on this radio.
So the design rule writes itself. Check for the hardware at runtime with the system feature flag rather than against a model name, and have the second path ready. If the real question is which items are in the van, rather than exactly how far away one of them is this second, an asset tracking app built on scans and Bluetooth reaches every phone in the building, and ultra wideband becomes extra precision on the few that have it.
Try it
Does ultra wideband fit the feature?
Turn off anything that is not true of your users. Each one that goes off is a reason to build the ordinary path first.
Ultra wideband fits
Check for the hardware flag at runtime anyway, and keep a path for the phones that answer no.
Android 16 put ultra wideband behind one ranging API
The Android ranging API most people now mean is the Ranging module introduced in Android 16. It is one interface for measuring the distance and position of peer devices, so an app does not handle each radio separately. It covers ultra wideband, Bluetooth channel sounding, Wi-Fi NAN RTT and Bluetooth RSSI ranging. RangingManager reports which of those the local device supports, and whether each is currently available, with a callback for changes.
The roles carry over under different names: a device is an initiator or a responder, and a responder answers one initiator at a time. The module can run the out of band negotiation for you in a session of type RANGING_SESSION_OOB, or you can handle your own in RANGING_SESSION_RAW. Read the small print on the default one. The module defines the data format and sequence for talking to a peer. It does not discover the peer or establish the connection. That is still your code.
Two limits matter before you plan around it. The module needs one new permission, android.permission.RANGING, which sits in the nearby devices permission list. And third party apps may only range in the background using ultra wideband, on supported devices, with background ranging on the other technologies not allowed. If your users are on phones older than Android 16, you are back on the Jetpack library, which reached 1.0.0 in May 2026 and has a 1.1 line still in alpha.
There is no first party React Native module for it
This is the part that decides most projects, so it is worth stating plainly. React Native has no first party ultra wideband module. Neither React Native itself nor the Expo SDK ships one, and we could not find an official module from either as of 29 September 2026. What exists is community packages and vendor SDKs, most of them built around one particular tag or accessory rather than around the platform API.
That means native code. Reaching the Jetpack library or the Android 16 Ranging module from a React Native app takes a native module written against the Android API and bridged to JavaScript, plus a development build to run it, since the native side cannot appear in a prebuilt client that does not contain it. On iOS the same capability is a different framework: Apple exposes ultra wideband through Nearby Interaction on iPhone 11 and later, where both devices run an app and share discovery tokens to begin a session. So it is two implementations, not one.
Cross vendor is the assumption to test first. Each platform documents its own API for its own devices, and neither documents a supported route for an ordinary app to range from an Android phone to an iPhone. Apple's accessory route, added in iOS 15, is aimed at hardware you build or partner on, through a published accessory protocol. Until you have two real handsets and a working demo, treat Android to iPhone ranging as unproven, whatever an AI assistant tells you.
Some platform features have a well trodden path in React Native, and mobile app deep linking is one of them: configuration, a handler, done. Ultra wideband sits at the far end of that scale. It is native work on both platforms, for a feature most of your users' phones cannot run at all.
Ways to tell an app how close something is
| Approach | How close it gets you | Runs on a typical Android phone | Gives direction too | What the other end has to be |
|---|---|---|---|---|
| Ultra wideband | about 10 cm | UWB models only | on supporting devices | another UWB device or tag |
| Bluetooth signal strength | a rough band, and it moves | Yes | No | a beacon, tag or second phone |
| Wi-Fi NAN RTT | better than signal strength | Android 16 module, hardware dependent | No | a device that supports it |
| NFC tap | touching the phone | Yes | No | a tag or reader held to the handset |
| Scanning a code | exact, at the moment of the scan | Yes | No | a printed label |
Building the app around what the phones can do
Most products that arrive at ultra wideband did not need it. They needed to know which items went out on the van, which room a device is in, or that the right person is at the door. A scan, a tag or a tap answers those on every handset your team carries. The 10 cm figure earns its cost only when the question is genuinely about a distance you cannot get any other way, and when you own the hardware at both ends.
Newly is an AI app builder. You describe the app in plain English, it writes a React Native and Expo project you own, runs it on a cloud iPhone or Android simulator while it builds, and ships to TestFlight and to Google Play internal testing. Plans are $25 a month and there is no free plan. It does not ship an ultra wideband module. If you decide you need the radio, build the rest of the app first, then take the code out with npm i -g @newly/cli and newly pull on your project id and add the native module in your own toolchain. That pull is one way, and you can also connect a GitHub repository you own and keep the two in step, so plan where the project is going to live.
One thing worth settling before any of it. Ranging happens over the radio between two devices with no server in the middle, so the feature keeps working when the connection does not. The rest of the app should be as honest about working without a network, or the precise distance will arrive on a screen that cannot load anything else.
Questions people ask about ultra wideband on Android
As of January 2025 the Android documentation lists Google's Pixel Pro from the 6 Pro onwards plus the Pixel Fold and Pixel Tablet, the Motorola Edge 50 Ultra, and from Samsung the Galaxy Note 20, the Plus and Ultra models from the S21 onwards and the Galaxy Z Fold from the Fold2 onwards. Check at runtime for the android.hardware.uwb system feature rather than against a list of model names, because the list keeps changing.
Describe the app, then decide about the radio
Start with the version that works on every phone your users already carry, and add precision where the hardware allows it.
Start building