XXXXX would like to find and connect to devices on your local network

Hi.

We have recently upgraded our React Native app to React Native 0.74.

The square react native module we’re using in the app is the latest version - 1.7.6.

However, since updating to the latest React Native version, I am now getting the following IOS permission pop up when I open my app from a fresh install:

“XXXXX would like to find and connect to devices on your local network”

After a lot of trial and error testing, I’ve discovered that this is being caused by the Square In App Payments module.

I discovered this by creating a brand new clean react native project with zero code, and running it. This ran as normal.

Then, I installed the Square module and ran it again (still in a clean app with no code in it) and at that point the permission popup started appearing.

Does anyone know why this is happening and how I disable this?

Thanks!

:wave: I’m Square Dev AI, here to help answer your question!
Based on the information you’ve provided, the following documentation will help answer your question:

Additional Documentation

In-App Payments SDK Quickstart
In-App Payments SDK Quickstart
React Native Plugin

If this documentation helped you find a solution, please check the box indicating that this reply solves the problem.
Otherwise one of our Developer Advocates will provide additional assistance shortly.

The permission pop-up you’re seeing is likely due to the underlying Square In-App Payments SDK, which the React Native plugin wraps around. The SDK may require network access for certain operations, such as processing payments or communicating with Square’s servers.

However, as of iOS 14, Apple has introduced a new privacy feature that requires apps to request permission to access local network. This is why you’re seeing the pop-up.

Unfortunately, there’s no way to disable this from the SDK or the plugin itself as it’s a system-level prompt enforced by iOS. The best practice would be to provide a usage description in your app’s Info.plist file to explain to your users why your app needs this permission. This can be done by adding the NSLocalNetworkUsageDescription key to your Info.plist file with a string value describing the reason for the request.

This answer was reviewed by @Bryan-Square.

Hi Bryan,

Thanks for your quick response!

I’m a bit confused though. Firstly, why would square need to access a user’s local network/devices to do things like processing payments and contacting square server? That doesn’t make any sense to me.

Secondly, does this mean every single app that uses the Square SDK is now asking users to approve access to ‘Devices on your Local Network’? Surely this can’t be right? There would be so many people talking about this online if this was the case and I cannot see anything anywhere.

Finally, I’m pretty sure this cannot be the case as this behaviour doesn’t happen on our IOS 15 app on the same test phone with your latest React module and React Native 0.72. Our IOS 15 app has also been live on the store and downloaded by thousands of people with noone ever seeing this prompt and we cannot reproduce it on any of our test phones. It can’t be anything to do with any apple security changes in IOS 14. It’s only when we’ve upgraded to React Native 0.74 that it starts happening.

Is it possible to provide some more insight/support into why this is happening please? Or can you 100% confirm that every single app that uses the Square SDK is now asking users to allow ‘Devices on your Local Network’? This is a very intrusive request to ask our users, so we do not want to be asking it unless absolutely necessary. But if you can confirm that it is simply the case for every single app that uses square, then we’ll have to try and work around it.

Thanks,

Paul

Hi is there any update on this?