npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

nawcrest-react-native-location-sdk

v1.0.1

Published

Enterprise-grade React Native background location tracking SDK with offline-first architecture, journey tracking, geofencing, and battery optimization. Supports both Android and iOS.

Readme

📍 React Native Background Location SDK

npm version License: MIT Platform Platform

Production-ready React Native SDK for enterprise-grade background location tracking. Built with offline-first architecture, journey tracking, geofencing, and intelligent battery optimization. Perfect for fleet management, employee tracking, delivery apps, and field service applications.

📋 Table of Contents


🚀 Platform Support

| Platform | Status | Version | NPM Tag | |----------|--------|---------|---------| | 🤖 Android | ✅ Fully Supported | 1.0.0+ | @latest | | 🍎 iOS | ✅ Fully Supported | 1.0.0+ | @latest |

Current Release: Android + iOS

npm install nawcrest-react-native-location-sdk

Both Android and iOS are fully supported as of v1.0.0. See Platform Setup for the per-platform configuration steps.


✨ Features

🎯 Core Location Features

  • 📍 Background Location Tracking - Continuous, reliable tracking across all app states (foreground, background, terminated, screen locked)
  • 🗺️ High-Accuracy Positioning - Leverages Google Play Services Fused Location Provider for optimal accuracy
  • 📱 Foreground Service - Persistent notification ensures tracking reliability on Android
  • 🔄 Auto-Restart - Automatically resumes tracking after device reboot
  • ⏸️ Pause & Resume - Temporarily suspend tracking without losing state

💾 Enterprise-Grade Offline Architecture

  • 🔐 Encrypted Local Storage - SQLCipher database with AES-256 encryption
  • 📦 Offline Queue - Automatic queuing when network unavailable
  • 🔄 Smart Sync - Background synchronization with exponential backoff retry
  • 💪 Resilient - Never lose location data, even with poor connectivity
  • 🗄️ Database Management - Automatic cleanup and size management

🚗 Journey & Trip Tracking

  • 📊 Complete Analytics - Distance, duration, average speed, max speed
  • 🛣️ Path Recording - Full coordinate path with polyline encoding
  • ⏯️ Pause & Resume - Pause journeys without losing data
  • 🏷️ Custom Metadata - Attach custom data (order IDs, driver info, etc.)
  • 📈 Historical Queries - Filter and retrieve past journeys

🏘️ Advanced Geofencing

  • ⭕ Circular Geofences - Define zones with center point and radius
  • 🔷 Polygon Geofences - Create complex shapes with multiple coordinates
  • 🚪 Entry & Exit Detection - Real-time events when entering/exiting zones
  • ⏱️ Dwell Time Support - Detect when user stays in zone for specified duration
  • 📍 Unlimited Geofences - No limit on number of monitored zones
  • 🏷️ Custom Metadata - Attach business logic to each geofence

🔋 Intelligent Battery Optimization

  • 🎚️ Three Battery Modes - Low, Balanced, High (5-30% battery/24hrs)
  • 🚶 Activity Recognition - Detects walking, running, driving, cycling, still
  • 🔇 Smart Throttling - Reduces GPS polling when user is stationary
  • ⚡ Dynamic Adjustment - Automatically optimizes based on device motion
  • 📊 Battery Event Monitoring - Alerts when battery is low

🌐 Network & Synchronization

  • 🔄 Auto-Sync with Retry - Periodic background sync with WorkManager
  • 📤 Batch Uploads - Efficient batch processing reduces network overhead
  • 🔁 Exponential Backoff - Smart retry logic for failed uploads
  • 🔒 Certificate Pinning - Enhanced security with SSL pinning support
  • 🔑 Token Authentication - JWT, Bearer token, and custom header support

📱 Remote Features

  • 📲 Push-Triggered Location - Fetch location on-demand via FCM push notification
  • 🚨 Remote Location Requests - Backend can request current location anytime
  • 🔔 Instant Delivery - Sub-second response time for urgent requests

🛡️ Enterprise Security

  • 🔐 End-to-End Encryption - AES-256 encrypted database
  • 🔒 Certificate Pinning - Prevent man-in-the-middle attacks
  • 🔑 Secure Credential Storage - API keys and tokens stored securely
  • 🛡️ Mock Location Detection - Detect and flag fake GPS data
  • ✅ Data Validation - Server-side validation prevents bad data

🚀 React Native New Architecture

  • ⚡ TurboModules - Built on React Native's new architecture for maximum performance
  • 🔥 Hermes Engine - Optimized for Hermes JavaScript engine
  • 📱 Native Performance - Direct native bridge with minimal overhead
  • 🔄 Synchronous APIs - Fast, synchronous method calls where appropriate

🎨 Developer Experience

  • 📘 TypeScript First - Full TypeScript definitions and type safety
  • 📚 Comprehensive Docs - Complete API reference and guides
  • 🧪 Battle-Tested - Production-ready, used in real enterprise apps
  • 🐛 Debug Tools - Built-in logging and debugging utilities
  • 📖 Rich Examples - Real-world code examples for every feature

🚀 Quick Start

Get up and running in less than 5 minutes:

1. Install the SDK

# Using npm
npm install nawcrest-react-native-location-sdk

# Using yarn
yarn add nawcrest-react-native-location-sdk

2. Request Permissions

import { PermissionsAndroid, Platform } from 'react-native';

async function requestPermissions() {
  if (Platform.OS === 'android') {
    await PermissionsAndroid.requestMultiple([
      PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
      PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION,
      PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION, // Android 10+
    ]);
  }
}

3. Initialize and Start Tracking

import { LocationSDK } from 'nawcrest-react-native-location-sdk';

const sdk = new LocationSDK();

// Initialize
await sdk.initialize({
  apiKey: 'your-api-key',
  uploadEndpoint: 'https://api.yourcompany.com/locations',
  trackingInterval: 10000, // 10 seconds
  distanceFilter: 20, // 20 meters
  accuracy: 'high',
  enableBackgroundTracking: true,
});

// Start tracking
await sdk.start();

// Listen for location updates
sdk.addEventListener('location', (location) => {
  console.log('New location:', location.latitude, location.longitude);
});

That's it! Your app is now tracking location in the background. See Full Documentation for advanced features.


📦 Installation

NPM

npm install nawcrest-react-native-location-sdk

Yarn

yarn add nawcrest-react-native-location-sdk

Package Information

  • Package Name: nawcrest-react-native-location-sdk
  • Current Version: 1.0.0
  • NPM Tag: @latest (Android + iOS)
  • License: MIT

🛠️ Platform Setup

Android Setup

Complete Android setup requires 3 steps: dependencies, permissions, and configuration. Full setup guide: docs/SETUP_GUIDE.md

Quick Setup

1. Add Dependencies (android/app/build.gradle):

dependencies {
    implementation "com.google.android.gms:play-services-location:21.1.0"
    implementation "net.zetetic:android-database-sqlcipher:4.5.4"
    implementation "androidx.work:work-runtime-ktx:2.9.0"
}

2. Add Permissions (android/app/src/main/AndroidManifest.xml):

<manifest>
    <!-- Location -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
    
    <!-- Foreground Service -->
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION" />
    
    <!-- Background -->
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    
    <!-- Network -->
    <uses-permission android:name="android.permission.INTERNET" />
</manifest>

3. Request Runtime Permissions:

See Quick Start section above.

📖 Complete Setup Instructions: docs/SETUP_GUIDE.md

iOS Setup

iOS support coming in v2.0.0. Setup instructions will be provided with iOS release.


💻 Basic Usage

Simple Tracking Example

import { LocationSDK } from 'nawcrest-react-native-location-sdk';
import type { Location } from 'nawcrest-react-native-location-sdk';

const sdk = new LocationSDK();

// Initialize SDK
await sdk.initialize({
  apiKey: 'your-api-key',
  uploadEndpoint: 'https://api.yourcompany.com/locations',
  employeeId: 'user-123',
  trackingInterval: 10000, // 10 seconds
  distanceFilter: 20, // 20 meters
  accuracy: 'high',
  enableBackgroundTracking: true,
  enableOfflineSync: true,
  batteryMode: 'balanced',
});

// Start tracking
await sdk.start();

// Listen for location updates
sdk.addEventListener('location', (location: Location) => {
  console.log('New location:', location.latitude, location.longitude);
});

// Stop tracking
await sdk.stop();

Journey Tracking Example

// Start a delivery journey
const journeyId = await sdk.startJourney({
  purpose: 'delivery',
  orderId: '12345',
  driverId: 'DRIVER-001',
});

console.log('Journey started:', journeyId);

// ... driving ...

// Stop journey and get analytics
const journey = await sdk.stopJourney(journeyId);
console.log('Distance:', journey.distance, 'meters');
console.log('Duration:', journey.duration / 60000, 'minutes');
console.log('Average speed:', journey.averageSpeed * 3.6, 'km/h');

Geofencing Example

// Create a circular geofence
const geofenceId = await sdk.addGeofence({
  type: 'circle',
  center: { latitude: 37.7749, longitude: -122.4194 },
  radius: 100, // 100 meters
  dwellTime: 60000, // 1 minute
  metadata: { name: 'Office', location: 'HQ' },
});

// Listen for geofence events
sdk.addEventListener('geofenceEnter', (event) => {
  console.log('Entered geofence:', event.geofenceId);
});

sdk.addEventListener('geofenceExit', (event) => {
  console.log('Exited geofence:', event.geofenceId);
});

📖 More Examples: docs/USAGE_EXAMPLES.md


⚙️ Configuration

Configuration Options

The SDK provides comprehensive configuration to customize tracking behavior:

interface SDKConfiguration {
  // ========== REQUIRED ==========
  apiKey: string;                    // Your API authentication key
  uploadEndpoint: string;            // Backend URL for location uploads
  
  // ========== OPTIONAL IDENTITY ==========
  employeeId?: string;               // User/employee identifier
  
  // ========== TRACKING PARAMETERS ==========
  trackingInterval?: number;         // Update interval (ms, default: 10000)
  distanceFilter?: number;           // Min distance change (meters, default: 20)
  accuracy?: AccuracyLevel;          // 'low'|'medium'|'high'|'best' (default: 'high')
  
  // ========== FEATURE FLAGS ==========
  enableBackgroundTracking?: boolean;      // Background tracking (default: true)
  enableOfflineSync?: boolean;             // Offline queue (default: true)
  enableJourneyTracking?: boolean;         // Journey features (default: false)
  enableGeofencing?: boolean;              // Geofencing (default: false)
  enableActivityRecognition?: boolean;     // Activity detection (default: false)
  enableRemoteLocationRequest?: boolean;   // Push-triggered location (default: false)
  enableBatteryOptimization?: boolean;     // Battery optimization (default: true)
  
  // ========== SYNC CONFIGURATION ==========
  syncInterval?: number;             // Auto-sync interval (ms, default: 60000)
  retryCount?: number;               // Max retry attempts (default: 3)
  retryDelay?: number;               // Base retry delay (ms, default: 5000)
  
  // ========== AUTHENTICATION ==========
  authToken?: string;                // JWT or bearer token
  
  // ========== NETWORK ==========
  customHeaders?: Record<string, string>;  // Custom HTTP headers
  requestTimeout?: number;                 // Request timeout (ms, default: 30000)
  enableCertificatePinning?: boolean;      // SSL pinning (default: false)
  certificateHashes?: string[];            // Certificate SHA-256 hashes
  
  // ========== ANDROID SPECIFIC ==========
  notificationChannelId?: string;              // Notification channel ID
  foregroundNotificationTitle?: string;        // Notification title
  foregroundNotificationDescription?: string;  // Notification text
  
  // ========== BATTERY OPTIMIZATION ==========
  batteryMode?: BatteryMode;         // 'low'|'balanced'|'high' (default: 'balanced')
  
  // ========== DATABASE ==========
  maxQueueSize?: number;             // Max queued records (default: 10000)
}

Configuration Presets

Minimal Configuration

await sdk.initialize({
  apiKey: 'your-api-key',
  uploadEndpoint: 'https://api.yourcompany.com/locations',
});

Balanced (Recommended)

await sdk.initialize({
  apiKey: 'your-api-key',
  uploadEndpoint: 'https://api.yourcompany.com/locations',
  trackingInterval: 10000,           // 10 seconds
  distanceFilter: 20,                 // 20 meters
  accuracy: 'high',
  batteryMode: 'balanced',
  enableBackgroundTracking: true,
  enableOfflineSync: true,
  enableBatteryOptimization: true,
});

High Precision

await sdk.initialize({
  apiKey: 'your-api-key',
  uploadEndpoint: 'https://api.yourcompany.com/locations',
  trackingInterval: 5000,            // 5 seconds
  distanceFilter: 10,                 // 10 meters
  accuracy: 'best',
  batteryMode: 'high',
  enableJourneyTracking: true,
  enableGeofencing: true,
});

Battery Saver

await sdk.initialize({
  apiKey: 'your-api-key',
  uploadEndpoint: 'https://api.yourcompany.com/locations',
  trackingInterval: 30000,           // 30 seconds
  distanceFilter: 50,                 // 50 meters
  accuracy: 'medium',
  batteryMode: 'low',
  enableActivityRecognition: true,
  enableBatteryOptimization: true,
});

📖 Full Configuration Guide: docs/SETUP_GUIDE.md#sdk-configuration


📚 Documentation

Complete Documentation

| Document | Description | |----------|-------------| | API Reference | Complete API documentation with all methods, types, and events | | Setup Guide | Detailed platform setup, installation, and configuration | | Usage Examples | Real-world code examples for all features | | Troubleshooting | Common issues, solutions, and debugging tips | | Contributing Guide | How to contribute to the SDK |

Quick Links

Core Features Documentation

Basic Tracking

Journey Tracking

Geofencing

Advanced


📋 Requirements

React Native

  • Version: 0.73.0 or higher
  • New Architecture: Required (TurboModules)
  • Hermes Engine: Recommended

Android

  • Minimum SDK: API Level 24 (Android 7.0)
  • Target SDK: API Level 34 (Android 14)
  • Google Play Services: Location 21.1.0+
  • Kotlin: 1.9.0+
  • Gradle: 8.0+

iOS (Coming in v2.0)

  • Minimum Version: iOS 13.0
  • Xcode: 15.0+
  • Swift: 5.9+
  • CocoaPods: 1.12.0+

Development Environment

  • Node.js: 18.x or higher
  • npm: 9+ or yarn 3+
  • Android Studio: 2023.1.1 (Hedgehog) or later
  • TypeScript: 5.0+ (recommended)

💼 Use Cases

Fleet Management

Track your vehicle fleet in real-time with journey analytics, geofencing for depot zones, and driver activity monitoring.

// Fleet tracking configuration
await sdk.initialize({
  apiKey: 'fleet-api-key',
  uploadEndpoint: 'https://fleet.company.com/vehicles',
  employeeId: vehicleId,
  trackingInterval: 10000,
  enableJourneyTracking: true,
  enableGeofencing: true,
});

Employee Tracking

Monitor field employee locations for safety, efficiency, and compliance with clock-in/out geofences.

// Employee tracking with geofencing
await sdk.initialize({
  apiKey: 'hr-api-key',
  uploadEndpoint: 'https://hr.company.com/employees',
  employeeId: employeeId,
  enableGeofencing: true,
  enableActivityRecognition: true,
});

// Add office geofence
await sdk.addGeofence({
  type: 'circle',
  center: { latitude: 37.7749, longitude: -122.4194 },
  radius: 50,
  metadata: { name: 'Office', autoClockIn: true },
});

Delivery & Logistics

Optimize delivery routes, provide real-time ETAs, and automate proof of delivery with geofence detection.

// Delivery tracking
const journeyId = await sdk.startJourney({
  purpose: 'delivery',
  orderId: orderId,
  customerId: customerId,
  deliveryAddress: address,
});

// Add delivery location geofence
await sdk.addGeofence({
  type: 'circle',
  center: deliveryCoordinates,
  radius: 30,
  metadata: { orderId: orderId, autoComplete: true },
});

Field Service

Track technician locations, optimize dispatch, and verify on-site arrival/departure times.

// Field service tracking
await sdk.initialize({
  apiKey: 'service-api-key',
  uploadEndpoint: 'https://service.company.com/technicians',
  employeeId: technicianId,
  enableJourneyTracking: true,
  enableGeofencing: true,
  batteryMode: 'balanced',
});

🔋 Battery Optimization

Battery Consumption by Mode

| Battery Mode | Update Interval | Distance Filter | Accuracy | Battery/24hrs | Use Case | |--------------|----------------|-----------------|----------|---------------|----------| | Low | 30 seconds | 50 meters | Medium | 5-8% | Minimal tracking | | Balanced | 10 seconds | 20 meters | High | 10-15% | Normal tracking (recommended) | | High | 5 seconds | 10 meters | Best | 20-30% | High precision |

Battery Optimization Strategies

1. Use Balanced Mode (Recommended)

await sdk.initialize({
  batteryMode: 'balanced',
  enableBatteryOptimization: true,
});

2. Enable Activity Recognition

Automatically reduces GPS usage when user is stationary:

await sdk.initialize({
  enableActivityRecognition: true,
  enableBatteryOptimization: true,
});

3. Adjust Tracking Parameters

await sdk.initialize({
  trackingInterval: 15000,    // 15 seconds (less frequent)
  distanceFilter: 30,          // 30 meters (larger threshold)
  accuracy: 'medium',          // Lower accuracy = less power
});

4. Optimize Sync Frequency

await sdk.initialize({
  syncInterval: 300000,        // Sync every 5 minutes
});

5. Monitor Battery Events

sdk.addEventListener('batteryLow', (data) => {
  console.log('Battery low:', data.level);
  // Automatically switch to low battery mode
  switchToLowPowerMode();
});

📖 Complete Battery Guide: docs/USAGE_EXAMPLES.md#battery-optimization


🌐 Backend Integration

Location Upload Endpoint

Your backend should accept POST requests with this format:

Request:

POST /locations HTTP/1.1
Content-Type: application/json
Authorization: Bearer <token>
X-API-Key: <api-key>

{
  "locations": [
    {
      "uuid": "550e8400-e29b-41d4-a716-446655440000",
      "latitude": 37.7749,
      "longitude": -122.4194,
      "accuracy": 10.5,
      "altitude": 15.2,
      "bearing": 180.0,
      "speed": 5.5,
      "provider": "fused",
      "isMock": false,
      "timestamp": 1704067200000,
      "employeeId": "EMP001"
    }
  ],
  "deviceInfo": {
    "platform": "android",
    "osVersion": "14",
    "appVersion": "1.0.0"
  }
}

Response (Success):

{
  "status": "success",
  "received": 1
}

Response (Error):

{
  "status": "error",
  "code": "INVALID_DATA",
  "message": "Invalid location data"
}

📖 Complete Backend Guide: docs/SETUP_GUIDE.md


🐛 Troubleshooting

Common Issues

| Issue | Cause | Solution | |-------|-------|----------| | "SDK not initialized" | Called SDK method before initialize() | Always call initialize() first and wait for promise | | "Permission denied" | Location permissions not granted | Request all location permissions before initializing | | No location updates | GPS disabled or permissions missing | Enable GPS and check permission status | | High battery drain | Using best accuracy with 5s interval | Use balanced mode, increase interval to 10-15s | | Locations not syncing | Network error, backend down, auth failure | Check logs, verify endpoint URL and API key | | Tracking stops in background | Android battery optimization | Request exemption in Settings → Battery → App | | Foreground service not starting | Missing notification permission (Android 13+) | Request POST_NOTIFICATIONS permission |

Debug Commands

# Monitor location updates
adb logcat -s LocationSDKModule LocationService

# Check foreground service status
adb shell dumpsys activity services | grep LocationService

# View database content
adb shell "run-as com.yourapp sqlite3 /data/data/com.yourapp/databases/location_sdk.db 'SELECT COUNT(*) FROM locations;'"

# Monitor sync operations
adb logcat | grep SyncManager

Enable Detailed Logging

// Add this to see all SDK events
const events = ['location', 'syncCompleted', 'syncFailed', 'error'];
events.forEach(event => {
  sdk.addEventListener(event, (data) => {
    console.log(`[SDK] ${event}:`, data);
  });
});

📖 Complete Troubleshooting Guide: docs/TROUBLESHOOTING.md


📖 Documentation

📚 Complete Documentation

| Document | Description | |----------|-------------| | 📘 API Reference | Complete API documentation with all methods, types, events, and examples | | 🛠️ Setup Guide | Detailed platform setup, installation, configuration, and best practices | | 💡 Usage Examples | Real-world code examples covering all SDK features | | 🐛 Troubleshooting | Common issues, solutions, debugging tips, and FAQ | | 🤝 Contributing | Guidelines for contributing to the SDK |

Quick Reference


🤝 Contributing

Contributions are welcome! We appreciate bug reports, feature requests, documentation improvements, and code contributions.

How to Contribute

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Setup

# Clone repository
git clone https://github.com/NAWCREST-TECH-INNOVATION/nawcrest-react-native-location-sdk.git
cd nawcrest-react-native-location-sdk

# Install dependencies
yarn install

# Run example app
yarn example android

# Run tests
yarn test

# Lint code
yarn lint

# TypeScript check
yarn typecheck

Contribution Guidelines

  • Follow the existing code style and conventions
  • Write tests for new features
  • Update documentation for API changes
  • Keep pull requests focused and small
  • Write clear commit messages

📖 Full Contributing Guide: CONTRIBUTING.md


📄 License

MIT License

Copyright (c) 2026 NAWCREST TECH INNOVATION

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.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.

See LICENSE for full details.


📞 Support

Get Help

Before Opening an Issue

  1. Check the Troubleshooting Guide
  2. Search existing issues
  3. Review the API Documentation

Issue Template

When reporting bugs, please include:

  • SDK version
  • React Native version
  • Platform and OS version
  • Steps to reproduce
  • Expected vs actual behavior
  • Relevant logs/screenshots

🙏 Acknowledgments

Built with these amazing open-source libraries:

Special thanks to all our contributors!


🗺️ Roadmap

v1.0 - Android (Current) ✅

  • ✅ Background location tracking with foreground service
  • ✅ Offline-first architecture with SQLCipher encryption
  • ✅ Journey tracking with complete analytics
  • ✅ Circular and polygon geofencing
  • ✅ Activity recognition for battery optimization
  • ✅ Auto-sync with exponential backoff retry
  • ✅ Remote location requests via FCM
  • ✅ React Native New Architecture (TurboModules)
  • ✅ Comprehensive TypeScript definitions
  • ✅ Production-ready documentation

v2.0 - iOS Support (Q2 2024) 🚧

  • [ ] iOS native implementation
  • [ ] Background location tracking (significant changes)
  • [ ] Region monitoring for geofencing
  • [ ] Journey tracking with Core Location
  • [ ] Activity recognition with Core Motion
  • [ ] Offline queue with Core Data
  • [ ] Cross-platform feature parity
  • [ ] Unified API for Android and iOS

v2.1 - Performance & Features (Q3 2024) 📋

  • [ ] Advanced battery optimization algorithms
  • [ ] Real-time location streaming via WebSocket
  • [ ] Route prediction with machine learning
  • [ ] Improved geofence analytics
  • [ ] Location accuracy verification
  • [ ] Enhanced mock location detection
  • [ ] Configurable data retention policies

v3.0 - Enterprise Features (Q4 2024) 🎯

  • [ ] Multi-user/multi-device tracking
  • [ ] Offline map caching
  • [ ] Advanced route optimization
  • [ ] Historical playback and visualization
  • [ ] Custom event triggers
  • [ ] Enhanced analytics and reporting
  • [ ] Cloud configuration management

Vote on features: GitHub Discussions


⭐ Show Your Support

If this SDK helps your project, please:

  • Star the repository on GitHub
  • 🐦 Share on social media
  • 📝 Write a blog post or tutorial
  • 🤝 Contribute code, docs, or bug reports
  • 💬 Join our discussions

Your support helps us maintain and improve the SDK!


Made with ❤️ by NAWCREST TECH INNOVATION

WebsiteGitHubnpmDocumentation