---
description: Learn how to detect satellite and ultra-constrained networks in a Capacitor app on Android 15+ and iOS 26 and adapt your app to limited bandwidth.
title: How to Detect Satellite Networks in Capacitor - Capawesome
image: https://capawesome.io/docs/assets/images/social/blog/how-to-detect-satellite-networks-in-a-capacitor-app.png
---

<!doctype html> 

[Skip to content ](#how-to-detect-satellite-networks-in-capacitor) 

[📲 Introducing **Build Sharing** — get your builds onto testers' devices with a link & QR code. No account required. ](/blog/share-mobile-app-builds-with-testers/) 

* [ SDKs ](/docs/sdks/)
* [ Formbricks ](/docs/sdks/capacitor/formbricks/)
* [ Geocoder ](/docs/sdks/capacitor/geocoder/)
* [ Google Sign-In ](/docs/sdks/capacitor/google-sign-in/)
* [ Grafana Faro ](/docs/sdks/capacitor/grafana-faro/)
* [ Gyroscope ](/docs/sdks/capacitor/gyroscope/)
* [ Haptics ](/docs/sdks/capacitor/haptics/)
* [ Home Indicator ](/docs/sdks/capacitor/home-indicator/)
* [ In-App Browser ](/docs/sdks/capacitor/in-app-browser/)
* [ Install Referrer ](/docs/sdks/capacitor/install-referrer/)
* [ Intercom ](/docs/sdks/capacitor/intercom/)
* [ Intune ](/docs/sdks/capacitor/intune/)
* [ Keep Awake ](/docs/sdks/capacitor/keep-awake/)
* [ libSQL ](/docs/sdks/capacitor/libsql/)
* [ Light Sensor ](/docs/sdks/capacitor/light-sensor/)
* [ Live Update ](/docs/sdks/capacitor/live-update/)
* [ Localization ](/docs/sdks/capacitor/localization/)
* [ Mail Composer ](/docs/sdks/capacitor/mail-composer/)
* [ Managed Configurations ](/docs/sdks/capacitor/managed-configurations/)
* [ Maps Launcher ](/docs/sdks/capacitor/maps-launcher/)
* [ Media Session ](/docs/sdks/capacitor/media-session/)
* [ ML Kit ](/docs/sdks/capacitor/mlkit/)
* [ Navigation Bar ](/docs/sdks/capacitor/navigation-bar/)
* [ Network ](/docs/sdks/capacitor/network/)
* [ NFC ](/docs/sdks/capacitor/nfc/)
* [ Node.js ](/docs/sdks/capacitor/nodejs/)
* [ OAuth ](/docs/sdks/capacitor/oauth/)
* [ Passkeys ](/docs/sdks/capacitor/passkeys/)
* [ Password Autofill ](/docs/sdks/capacitor/password-autofill/)
* [ PDF Generator ](/docs/sdks/capacitor/pdf-generator/)
* [ PDF Viewer ](/docs/sdks/capacitor/pdf-viewer/)
* [ Pedometer ](/docs/sdks/capacitor/pedometer/)
* [ Permissions ](/docs/sdks/capacitor/permissions/)
* [ Phone Dialer ](/docs/sdks/capacitor/phone-dialer/)
* [ Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [ Photo Manipulator ](/docs/sdks/capacitor/photo-manipulator/)
* [ PixLive ](/docs/sdks/capacitor/pixlive/)
* [ PostHog ](/docs/sdks/capacitor/posthog/)
* [ Printer ](/docs/sdks/capacitor/printer/)
* [ Privacy Screen ](/docs/sdks/capacitor/privacy-screen/)
* [ Proximity Sensor ](/docs/sdks/capacitor/proximity-sensor/)
* [ Purchases ](/docs/sdks/capacitor/purchases/)
* [ RealtimeKit ](/docs/sdks/capacitor/realtimekit/)
* [ Root Detection ](/docs/sdks/capacitor/root-detection/)
* [ Screen Brightness ](/docs/sdks/capacitor/screen-brightness/)
* [ Screen Orientation ](/docs/sdks/capacitor/screen-orientation/)
* [ Screen Reader ](/docs/sdks/capacitor/screen-reader/)
* [ Screenshot ](/docs/sdks/capacitor/screenshot/)
* [ Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [ Settings Launcher ](/docs/sdks/capacitor/settings-launcher/)
* [ Shake ](/docs/sdks/capacitor/shake/)
* [ Silent Mode ](/docs/sdks/capacitor/silent-mode/)
* [ SIM ](/docs/sdks/capacitor/sim/)
* [ SMS Composer ](/docs/sdks/capacitor/sms-composer/)
* [ Speech Recognition ](/docs/sdks/capacitor/speech-recognition/)
* [ Speech Synthesis ](/docs/sdks/capacitor/speech-synthesis/)
* [ Share Target ](/docs/sdks/capacitor/share-target/)
* [ Square Mobile Payments ](/docs/sdks/capacitor/square-mobile-payments/)
* [ SQLite ](/docs/sdks/capacitor/sqlite/)
* [ Superwall ](/docs/sdks/capacitor/superwall/)
* [ System WebView ](/docs/sdks/capacitor/system-webview/)
* [ Tauri ](/docs/sdks/capacitor/tauri/)
* [ Text Interaction ](/docs/sdks/capacitor/text-interaction/)
* [ Text Zoom ](/docs/sdks/capacitor/text-zoom/)
* [ Thermal State ](/docs/sdks/capacitor/thermal-state/)
* [ Toast ](/docs/sdks/capacitor/toast/)
* [ Torch ](/docs/sdks/capacitor/torch/)
* [ Vault ](/docs/sdks/capacitor/vault/)
* [ Volume ](/docs/sdks/capacitor/volume/)
* [ Wallet ](/docs/sdks/capacitor/wallet/)
* [ Wifi ](/docs/sdks/capacitor/wifi/)
* [ YouTube Player ](/docs/sdks/capacitor/youtube-player/)
* [ Zip ](/docs/sdks/capacitor/zip/)
* [ Cordova ](/docs/sdks/cordova/)
* [ Cloud ](/docs/cloud/)
* [ Integrations ](/docs/cloud/live-updates/integrations/)
* Concepts
* Reference
* [ Troubleshooting ](/docs/cloud/live-updates/troubleshooting/)
* [ FAQ ](/docs/cloud/live-updates/faq/)
* [ Native Builds ](/docs/cloud/native-builds/)
* [ Set Up Environments ](/docs/cloud/native-builds/environments/)
* [ Set Up Native Configurations ](/docs/cloud/native-builds/native-configurations/)
* [ Auto-Increment Build Numbers ](/docs/cloud/native-builds/auto-incrementing-build-numbers/)
* [ Configure the Web Build Script ](/docs/cloud/native-builds/web-build-script/)
* [ Build from a Monorepo ](/docs/cloud/native-builds/monorepo/)
* [ Use pnpm, Yarn, or bun ](/docs/cloud/native-builds/package-managers/)
* [ Install Private npm Packages ](/docs/cloud/native-builds/npm-private-registry/)
* [ Override the Java Version ](/docs/cloud/native-builds/override-java-version/)
* [ Custom iOS Provisioning Profiles ](/docs/cloud/native-builds/custom-ios-provisioning-profiles/)
* [ Build without Git ](/docs/cloud/native-builds/build-without-git/)
* [ Access Git Behind a Firewall ](/docs/cloud/native-builds/firewall-access/)
* [ Integrations ](/docs/cloud/native-builds/integrations/)
* Reference
* [ Troubleshooting ](/docs/cloud/native-builds/troubleshooting/)
* [ FAQ ](/docs/cloud/native-builds/faq/)
* [ App Store Publishing ](/docs/cloud/app-store-publishing/)
* [ Submit a Build ](/docs/cloud/app-store-publishing/submit-a-build/)
* [ Submit Automatically After a Build ](/docs/cloud/app-store-publishing/submit-automatically/)
* [ Troubleshooting ](/docs/cloud/app-store-publishing/troubleshooting/)
* [ FAQ ](/docs/cloud/app-store-publishing/faq/)
* [ Automations ](/docs/cloud/automations/)
* [ Reference ](/docs/cloud/automations/reference/)
* [ Troubleshooting ](/docs/cloud/automations/troubleshooting/)
* [ FAQ ](/docs/cloud/automations/faq/)
* [ Assist ](/docs/cloud/assist/)
* [ CLI ](/docs/cloud/cli/)
* APIs and SDKs
* [ Webhooks ](/docs/cloud/webhooks/)
* [ Integrations ](/docs/cloud/integrations/)
* Notifications
* Account
* [ Organization ](/docs/cloud/organizations/)
* [ Two-Factor Enforcement ](/docs/cloud/organizations/two-factor-authentication/)
* [ Network Restrictions ](/docs/cloud/organizations/network-restrictions/)
* [ Audit Logs ](/docs/cloud/organizations/audit-logs/)
* [ Billing ](/docs/cloud/organizations/billing/)
* [ License Keys ](/docs/cloud/license-keys/)
* [ AI ](/docs/ai/)
* [ Insiders ](/docs/insiders/)
* [ Billing & Plans ](/docs/insiders/billing-and-plans/)
* [ FAQ ](/docs/insiders/faq/)
* [ License ](https://capawesome.io/legal/eula/)
* [ Support ](/docs/support/)
* [ Contributing ](/docs/contributing/)
* Contributing code
* [ Code of Conduct ](/docs/contributing/code-of-conduct/)
* [ Questions ](https://docs.github.com/en/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion#creating-a-discussion)
* [ Blog ](/blog/)
* Categories

* [ Try Capawesome ](#try-capawesome)
* [ Conclusion ](#conclusion)

* Related links

# How to Detect Satellite Networks in Capacitor[¶](#how-to-detect-satellite-networks-in-capacitor "Permanent link")

To detect satellite networks in a Capacitor app, install the [Capacitor Network plugin](/docs/sdks/capacitor/network/) and call [getStatus()](/docs/sdks/capacitor/network/#getstatus): on Android 15+, a satellite connection is reported as the `SATELLITE` connection type, and on iOS 26+, a carrier-provided satellite connection is reported as `CELLULAR` with the `ultraConstrained` property set to `true`.

Satellite connectivity has moved from emergency-only messaging to real data connections for apps. Carriers now connect unmodified phones directly to satellites, Android 15 introduced a dedicated satellite network transport, and iOS 26 added APIs for handling ultra-constrained networks. This guide shows how to detect these connections on both platforms, how to opt your app into them, and how to adapt to bandwidth that is a fraction of what your app normally sees.

[ ![Build and deploy your Capacitor app with Capawesome Cloud](https://capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.png?t=1) ](https://capawesome.io/) 

## Key Takeaways[¶](#key-takeaways "Permanent link")

* On Android 15+, the [Capacitor Network plugin](/docs/sdks/capacitor/network/) reports satellite connections as the [ConnectionType.Satellite](/docs/sdks/capacitor/network/#connectiontype) enum value.
* On iOS 26+, Apple does not expose satellite as a connection type; carrier-provided satellite connections appear as `CELLULAR` with `ultraConstrained` set to `true`.
* Android only routes app traffic over [constrained satellite networks](https://developer.android.com/develop/connectivity/satellite/constrained-networks) for apps that opt in via the `PROPERTY_SATELLITE_DATA_OPTIMIZED` manifest entry.
* Push notifications on Android must be sent with the `bandwidth_constrained_ok` flag to be delivered over a constrained satellite network.
* On iOS, transferring data over an ultra-constrained network requires a per-request opt-in via [allowsUltraConstrainedNetworkAccess](https://developer.apple.com/documentation/foundation/urlrequest/allowsultraconstrainednetworkaccess).
* `SATELLITE` describes what the connection is; `ultraConstrained` describes how limited it is. The two don't always coincide.

## Why Satellite Networks Matter for Mobile Apps[¶](#why-satellite-networks-matter-for-mobile-apps "Permanent link")

Until recently, a phone without cell coverage was simply offline. That assumption no longer holds: carriers such as T-Mobile connect standard phones directly to Starlink satellites, and Apple has offered satellite messaging on iPhones for several years. For apps, this creates a connection class that didn't exist before, one that works in the middle of nowhere but delivers very little bandwidth at high latency.

Treating a satellite connection like Wi-Fi is a recipe for timeouts and drained batteries. Treating it like being offline wastes a connection the user may urgently need, since remote areas are exactly where messaging, navigation, and safety features matter most. The right behavior is in between, and it starts with knowing what kind of network you're on.

## How to Detect a Satellite Connection on Android[¶](#how-to-detect-a-satellite-connection-on-android "Permanent link")

On Android 15 and later, the system exposes satellite as its own network transport, and the plugin surfaces it as a dedicated value of the [ConnectionType](/docs/sdks/capacitor/network/#connectiontype) enum. To install the Capacitor Network plugin, please refer to the [Installation](/docs/sdks/capacitor/network/#installation) section in the plugin documentation. Detection is then a single comparison:

`[](#%5F%5Fcodelineno-0-1)import { ConnectionType, Network } from '@capawesome/capacitor-network';
[](#%5F%5Fcodelineno-0-2)
[](#%5F%5Fcodelineno-0-3)const isOnSatellite = async () => {
[](#%5F%5Fcodelineno-0-4)  const { connectionType } = await Network.getStatus();
[](#%5F%5Fcodelineno-0-5)  return connectionType === ConnectionType.Satellite;
[](#%5F%5Fcodelineno-0-6)};
`

Since the check runs through the regular [getStatus()](/docs/sdks/capacitor/network/#getstatus) call, you can also catch the moment a device switches to satellite by listening for the [networkStatusChange](/docs/sdks/capacitor/network/#addlistenernetworkstatuschange-) event, which delivers the same status object on every change.

## How to Detect Ultra-Constrained Networks on iOS[¶](#how-to-detect-ultra-constrained-networks-on-ios "Permanent link")

iOS takes a different approach: Apple does not expose satellite as a connection type at all. Instead, iOS 26 introduced the concept of ultra-constrained networks, connections that are severely limited in bandwidth, and reports a carrier-provided satellite connection as `CELLULAR` with that flag set. The plugin exposes it as the `ultraConstrained` property:

`[](#%5F%5Fcodelineno-1-1)import { Network } from '@capawesome/capacitor-network';
[](#%5F%5Fcodelineno-1-2)
[](#%5F%5Fcodelineno-1-3)const isUltraConstrained = async () => {
[](#%5F%5Fcodelineno-1-4)  const { ultraConstrained } = await Network.getStatus();
[](#%5F%5Fcodelineno-1-5)  return ultraConstrained === true;
[](#%5F%5Fcodelineno-1-6)};
`

The strict comparison against `true` matters, because `ultraConstrained` is `null` where the platform can't determine it: on the web and on iOS versions below 26\. On Android, the property is also set on satellite networks and on any network the system reports as bandwidth-constrained, which makes it the better cross-platform signal for "assume almost no bandwidth" than checking the connection type alone.

## Opting In to Constrained Satellite Networks on Android[¶](#opting-in-to-constrained-satellite-networks-on-android "Permanent link")

Detecting a satellite network is only half the story on Android: by default, the system does not route your app's traffic over constrained satellite networks at all. Android reserves them for apps that declare themselves optimized for extremely limited bandwidth and variable latency, which you do with a `meta-data` entry inside the `application` element of your `AndroidManifest.xml`:

`[](#%5F%5Fcodelineno-2-1)<meta-data
[](#%5F%5Fcodelineno-2-2)  android:name="android.telephony.PROPERTY_SATELLITE_DATA_OPTIMIZED"
[](#%5F%5Fcodelineno-2-3)  android:value="PACKAGE_NAME"
[](#%5F%5Fcodelineno-2-4)/>
`

Replace `PACKAGE_NAME` with your app's package name. The plugin intentionally does not add this entry for you, because each app has to decide for itself whether it behaves well on a connection this limited. Two more things to know before opting in: push notifications only arrive over a constrained satellite network when they are sent with the `bandwidth_constrained_ok` flag, and Google's [constrained satellite networks documentation](https://developer.android.com/develop/connectivity/satellite/constrained-networks) describes the full requirements.

## Allowing Data Transfers on iOS[¶](#allowing-data-transfers-on-ios "Permanent link")

iOS gates ultra-constrained networks per request rather than per app. Detecting the state requires no entitlement, but actually transferring data over such a network means allowing it on each request via [allowsUltraConstrainedNetworkAccess](https://developer.apple.com/documentation/foundation/urlrequest/allowsultraconstrainednetworkaccess), and being allowed on all carriers may additionally require the [com.apple.developer.networking.carrier-constrained.appcategory](https://developer.apple.com/documentation/bundleresources/entitlements/com.apple.developer.networking.carrier-constrained.appcategory) entitlement. The plugin neither adds entitlements nor modifies your `URLSession` configuration; Apple's guide on [configuring your app for ultra-constrained networks](https://developer.apple.com/documentation/bundleresources/configuring-your-app-for-ultra-constrained-networks) covers the setup.

## Adapting Your App to Satellite Bandwidth[¶](#adapting-your-app-to-satellite-bandwidth "Permanent link")

Once you can detect the constraint, the adaptation itself is ordinary engineering: send less, less often. A listener keeps a single flag current, and the rest of the app consults it before doing anything heavy:

`[](#%5F%5Fcodelineno-3-1)import { Network } from '@capawesome/capacitor-network';
[](#%5F%5Fcodelineno-3-2)
[](#%5F%5Fcodelineno-3-3)let deferHeavyTransfers = false;
[](#%5F%5Fcodelineno-3-4)
[](#%5F%5Fcodelineno-3-5)const watchNetworkConstraints = async () => {
[](#%5F%5Fcodelineno-3-6)  await Network.addListener('networkStatusChange', status => {
[](#%5F%5Fcodelineno-3-7)    deferHeavyTransfers = status.ultraConstrained === true;
[](#%5F%5Fcodelineno-3-8)  });
[](#%5F%5Fcodelineno-3-9)};
`

With that flag in place, a few rules of thumb go a long way. Sync text before media, and queue images, videos, and large payloads until the constraint lifts. Lengthen request timeouts, since satellite latency is variable by nature. And skip anything speculative: prefetching, background refreshes, and analytics batches can all wait. If your app already distinguishes metered and data-saving connections with the `expensive` and `constrained` properties, satellite handling slots into the same decision logic; our guide on [how to detect the network status in Capacitor](/blog/how-to-detect-the-network-status-in-a-capacitor-app/) covers those properties in detail.

## FAQ[¶](#faq "Permanent link")

### What is the difference between the `SATELLITE` connection type and `ultraConstrained`?[¶](#what-is-the-difference-between-the-satellite-connection-type-and-ultraconstrained "Permanent link")

The connection type describes what the connection is, while `ultraConstrained` describes how limited it is. They don't always coincide: a satellite network is not necessarily reported as bandwidth-constrained, and a bandwidth-constrained network is not necessarily a satellite network. `SATELLITE` is Android-only, while `ultraConstrained` is available on Android and iOS 26+.

### Why doesn't iOS report satellite as a connection type?[¶](#why-doesnt-ios-report-satellite-as-a-connection-type "Permanent link")

Apple exposes the condition as a property of the connection rather than as an interface type. A carrier-provided satellite connection on iOS therefore appears as `CELLULAR` with `ultraConstrained` set to `true`, and there is no way for any plugin to report it differently.

### Which platform versions support satellite detection?[¶](#which-platform-versions-support-satellite-detection "Permanent link")

The `SATELLITE` connection type requires Android 15 or later, and the `ultraConstrained` property requires Android or iOS 26 or later. On older iOS versions and on the web, `ultraConstrained` is `null`, so a strict `=== true` check degrades safely everywhere.

### Will my app's traffic automatically use a satellite network?[¶](#will-my-apps-traffic-automatically-use-a-satellite-network "Permanent link")

Not necessarily. On Android, constrained satellite networks only carry traffic for apps that opt in via the `PROPERTY_SATELLITE_DATA_OPTIMIZED` manifest entry. On iOS, each request must allow ultra-constrained network access explicitly. Detection through the plugin works in both cases regardless of whether you opted in.

## Try Capawesome[¶](#try-capawesome "Permanent link")

Satellite handling is easiest to get right before your users need it. Subscribe below to get new Capacitor guides like this one as they are published.

[Subscribe to the Capawesome Newsletter](https://capawesome.io/newsletter/)

## Conclusion[¶](#conclusion "Permanent link")

Satellite support in a Capacitor app is two checks and two opt-ins: compare the connection type against `SATELLITE` on Android, check `ultraConstrained` on iOS 26+, declare `PROPERTY_SATELLITE_DATA_OPTIMIZED` in your Android manifest, and allow ultra-constrained access per request on iOS. Few apps handle this today, which makes it an easy way to stand out in exactly the situations where users have no alternative.

For the fundamentals this guide builds on, from reachability to metered connections, read [How to Detect the Network Status in Capacitor](/blog/how-to-detect-the-network-status-in-a-capacitor-app/). If you have questions, join the [Capawesome Discord server](https://discord.gg/VCXxSVjefW), and subscribe to the [Capawesome newsletter](https://capawesome.io/newsletter/) to stay up to date with new plugins and guides.

August 8, 2026 

Back to top

```json
{
      "@context": "https://schema.org",
      "@type": "BlogPosting",
      "headline": "How to Detect Satellite Networks in Capacitor",
      "description": "Learn how to detect satellite and ultra-constrained networks in a Capacitor app on Android 15+ and iOS 26 and adapt your app to limited bandwidth.",
      "image": "https://capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.png",
      "datePublished": "2026-08-09T00:00:00+00:00",
      "dateModified": "2026-08-09T00:00:00+00:00",
      "author": [
        {
          "@type": "Person",
          "name": "Robin Genz",
          "url": "https://github.com/robingenz"
        }
      ],
      "publisher": {
        "@type": "Organization",
        "name": "Capawesome",
        "url": "https://capawesome.io",
        "logo": {
          "@type": "ImageObject",
          "url": "https://capawesome.io/assets/images/logo.svg"
        }
      },
      "articleSection": "Capacitor",
      "keywords": ["Capacitor", "Guides", "SDKs"],
      "isPartOf": {
        "@type": "Blog",
        "@id": "https://capawesome.io/blog/#blog"
      },
      "mainEntityOfPage": "https://capawesome.io/blog/how-to-detect-satellite-networks-in-a-capacitor-app/",
      "url": "https://capawesome.io/blog/how-to-detect-satellite-networks-in-a-capacitor-app/"
    }
{
      "@context": "https://schema.org",
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://capawesome.io/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Blog",
          "item": "https://capawesome.io/blog/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "How to Detect Satellite Networks in Capacitor",
          "item": "https://capawesome.io/blog/how-to-detect-satellite-networks-in-a-capacitor-app/"
        }
      ]
    }
{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "What is the difference between the SATELLITE connection type and ultraConstrained?", "acceptedAnswer": {"@type": "Answer", "text": "The connection type describes what the connection is, while ultraConstrained describes how limited it is. They don't always coincide: a satellite network is not necessarily reported as bandwidth-constrained, and a bandwidth-constrained network is not necessarily a satellite network. SATELLITE is Android-only, while ultraConstrained is available on Android and iOS 26+."}}, {"@type": "Question", "name": "Why doesn't iOS report satellite as a connection type?", "acceptedAnswer": {"@type": "Answer", "text": "Apple exposes the condition as a property of the connection rather than as an interface type. A carrier-provided satellite connection on iOS therefore appears as CELLULAR with ultraConstrained set to true, and there is no way for any plugin to report it differently."}}, {"@type": "Question", "name": "Which platform versions support satellite detection?", "acceptedAnswer": {"@type": "Answer", "text": "The SATELLITE connection type requires Android 15 or later, and the ultraConstrained property requires Android or iOS 26 or later. On older iOS versions and on the web, ultraConstrained is null, so a strict === true check degrades safely everywhere."}}, {"@type": "Question", "name": "Will my app's traffic automatically use a satellite network?", "acceptedAnswer": {"@type": "Answer", "text": "Not necessarily. On Android, constrained satellite networks only carry traffic for apps that opt in via the PROPERTY_SATELLITE_DATA_OPTIMIZED manifest entry. On iOS, each request must allow ultra-constrained network access explicitly. Detection through the plugin works in both cases regardless of whether you opted in."}}], "url": "https://capawesome.io/blog/how-to-detect-satellite-networks-in-a-capacitor-app/"}
```
