capacitor-network-speed
v0.0.1
Published
Native network speed and bandwidth estimation for Android and iOS without data consumption
Readme
capacitor-network-speed
Native network speed and bandwidth estimation for Android and iOS without data consumption.
Features
- ✅ Zero data consumption - Uses native OS APIs instead of downloading test files
- ✅ Instant results - No waiting for speed tests to complete
- ✅ Battery efficient - Minimal CPU usage
- ✅ Works offline - Provides estimates based on connection type
- ✅ Cross-platform - Android & iOS support
Install
npm install capacitor-network-speed
npx cap syncUsage
import { NetworkSpeed } from 'capacitor-network-speed';
const speedInfo = await NetworkSpeed.getNetworkSpeed();
console.log(speedInfo);
// {
// downlinkSpeedKbps: 50000,
// uplinkSpeedKbps: 20000,
// connectionType: "wifi",
// quality: "excellent"
// }Example Use Cases
Decide between local vs cloud processing
import { NetworkSpeed } from 'capacitor-network-speed';
async function processData(data: any) {
const { quality } = await NetworkSpeed.getNetworkSpeed();
if (quality === 'excellent' || quality === 'good') {
return await processInCloud(data);
} else {
return await processLocally(data);
}
}Adjust media quality based on connection
import { NetworkSpeed } from 'capacitor-network-speed';
async function getVideoQuality() {
const { downlinkSpeedKbps, quality } = await NetworkSpeed.getNetworkSpeed();
if (quality === 'excellent' && downlinkSpeedKbps > 10000) {
return 'HD';
} else if (quality === 'good') {
return 'SD';
} else {
return 'LOW';
}
}API
getNetworkSpeed()
Returns network speed estimation and connection information.
getNetworkSpeed() => Promise<NetworkSpeedInfo>Returns: Promise<NetworkSpeedInfo>
NetworkSpeedInfo
| Property | Type | Description |
| -------- | ---- | ----------- |
| downlinkSpeedKbps | number | Download speed in Kbps (0 if unavailable) |
| uplinkSpeedKbps | number | Upload speed in Kbps (0 if unavailable) |
| connectionType | string | Connection type: wifi, cellular, ethernet, vpn, or unknown |
| quality | string | Network quality: poor, moderate, good, excellent, or unknown |
Quality Thresholds
- poor: < 1 Mbps
- moderate: 1-5 Mbps
- good: 5-20 Mbps
- excellent: > 20 Mbps
Platform Notes
Android
Uses NetworkCapabilities API to get link bandwidth estimates from the Android system.
iOS
Uses NWPathMonitor API. Note: iOS doesn't provide exact speed values, so the plugin provides educated estimates based on connection type and network conditions.
Limitations
- Estimates, not measurements: Values are based on OS-provided estimations, not active speed tests
- iOS precision: iOS provides less granular data than Android
- VPN detection: May report VPN as connection type instead of underlying network
- Background restrictions: Some platforms may limit network monitoring in background
License
MIT
