Skip to content

About

A React Native (Expo) speed test app styled with NativeWind that measures download/upload speed, ping, jitter, and packet loss. It includes test history, interactive graphs, and device/network details like platform and OS version, providing clear insights into network performance and stability.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

⚡ NET-SPEED-TESTPRO

A modern, feature-rich internet speed test application built with React Native Expo 54, NativeWind v5, and TypeScript. Test your download speed, upload speed, ping, jitter, and packet loss — all with a beautiful dark UI and persistent history.


📱 Screenshots

Speed Test History Network Info
SPEEDTEST HISTORY NETWORK INFO

|



✨ Features

🚀 Speed Test

  • Download Speed — measures real-world download throughput (Mbps)
  • Upload Speed — measures real-world upload throughput (Mbps)
  • Ping — round-trip latency in milliseconds
  • Jitter — variation in ping response times (ms)
  • Packet Loss — percentage of lost packets during the test
  • Average Speed — running average across all past tests

📊 History & Analytics

  • Bar graph of past speed test results (download & upload)
  • Highlights Newest, Fastest, and Slowest results at a glance
  • Persistent history stored locally — data survives app restarts
  • Tap any history entry for full test details

🌐 Network Tab

  • Wi-Fi / Cellular connection type detection
  • IP Address (local and/or public)
  • Platform (iOS / Android)
  • OS Version
  • Internet Access status (connected / disconnected)
  • Device Model info via Expo Device

🛠 Tech Stack

Technology Version Purpose
Expo ~54.0.0 App framework & build tooling
React Native 0.76.5 Cross-platform mobile UI
NativeWind ^5.0.1 Tailwind CSS utility classes for RN
Tailwind CSS ^3.4.0 Utility-first CSS (NativeWind peer)
TypeScript ^5.3.0 Type safety
Expo Router ~4.0.0 File-based navigation
Expo Network ~6.0.0 Network info (IP, type, connectivity)
Expo Device ~7.0.0 Device & OS information
Expo Constants ~17.0.0 App constants
React Native SVG ^15.8.0 Bar chart graphs
React Native Reanimated ~3.16.1 Smooth animations
AsyncStorage ^1.23.1 Local persistent storage
Zustand ^4.5.0 Lightweight state management

📁 Project Structure

SpeedTestApp/
├── app/
│   ├── _layout.tsx              ← Root layout, StatusBar, SafeAreaProvider
│   └── (tabs)/
│       ├── _layout.tsx          ← Bottom tab bar (3 tabs)
│       ├── index.tsx            ← Speed test screen ⚡
│       ├── history.tsx          ← Test history + chart 📊
│       └── network.tsx          ← Network diagnostics 🌐
├── components/
│   ├── SpeedGauge.tsx           ← SVG arc gauge with animated needle
│   ├── PulseRing.tsx            ← Animated pulse rings during test
│   ├── HistoryCard.tsx          ← Individual result card with badges
│   ├── SpeedChart.tsx           ← SVG line chart (download + upload)
│   └── NetworkCard.tsx          ← Network info summary card
├── services/
│   ├── speedTest.ts             ← Real HTTP speed measurement engine
│   └── storage.ts               ← AsyncStorage CRUD for history
├── types/index.ts               ← All TypeScript interfaces
├── package.json / app.json
├── babel.config.js / metro.config.js
├── tailwind.config.js / global.css
└── tsconfig.json

🚀 Getting Started

Prerequisites

Installation

# 1. Clone the repository
git clone https://github.com/Jaykumar122/NET-SPEED-TESTPRO.git
cd net-speedtest-pro

# 2. Install dependencies
npm install

# 3. Start the development server
npx expo start

Then scan the QR code with Expo Go (Android) or the Camera app (iOS).

Run on Simulator / Emulator

# iOS Simulator (macOS only)
npx expo start --ios

# Android Emulator
npx expo start --android

Environment

No API keys are required. The speed test uses publicly available endpoints (e.g., Cloudflare, fast.com-style chunked requests) and can be configured in utils/speedTest.ts.



🧪 How the Speed Test Works

  1. Ping & Jitter — sends multiple HTTP HEAD requests to a test endpoint, measures round-trip time, calculates variance (jitter).
  2. Download — fetches a large binary payload, measures bytes received over time, computes throughput in Mbps.
  3. Upload — sends a large binary payload via POST, measures time to completion, computes throughput in Mbps.
  4. Packet Loss — fires N requests in parallel and counts failures/timeouts as lost packets.
  5. Results are saved to AsyncStorage via the Zustand store for persistent history.

📊 History Screen

  • Bar chart rendered with React Native SVG — no third-party charting lib needed.
  • Each bar represents one test session (download in cyan, upload in green).
  • Badges highlight:
    • 🟦 NEWEST — most recent result
    • 🟩 FASTEST — highest download speed
    • 🟥 SLOWEST — lowest download speed
  • Swipe or tap to delete individual results.

🌐 Network Screen

Uses expo-network and expo-device to display:

Field Source
Connection Type Network.getNetworkStateAsync()
IP Address Network.getIpAddressAsync()
Internet Access Network.getNetworkStateAsync().isInternetReachable
Platform Platform.OS
OS Version Device.osVersion
Device Model Device.modelName

🐛 Known Issues / Roadmap

  • Real server selection (pick nearest test server)
  • IPv6 address display
  • Share result card as image
  • Widget support (iOS 16+ / Android)
  • Unit toggle: Mbps ↔ MB/s
  • Dark / Light theme toggle

📄 License

MIT License

Copyright (c) 2025 JAYKUMAR112

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

🙏 Acknowledgements


Built with ❤️ using React Native + Expo

>>>>>>> 4e72a73f9509347c21e061cd28dde588da89367f

About

A React Native (Expo) speed test app styled with NativeWind that measures download/upload speed, ping, jitter, and packet loss. It includes test history, interactive graphs, and device/network details like platform and OS version, providing clear insights into network performance and stability.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages