geo3bit
GPS Track Recorder & Route Analyser · Mobile App
Android 15+
iOS 16+
React Native 0.76
Expo SDK 52
Edge-to-Edge
Offline-First
No Registration
geo3bit is a professional GPS route recorder for Android and iOS. It records your outdoor activities in real time, saves them as industry-standard GPX files, and lets you review every detail — route map, speed profile, elevation graph, terrain gradient and attached photos — entirely offline on your device. No account or internet connection is required to record or view routes.
Background GPS Recording
Tracks your position continuously even when the screen is off or another app is in the foreground.
Interactive Route Map
OSM or Google Maps with tappable GPS points, fullscreen mode, photo markers and chart overlay.
Speed / Elevation / Gradient Charts
Interactive Chart.js graphs with crosshair that syncs a live cursor on the map.
Geotagged Photos
Capture photos during tracking — each photo is pinned to the exact GPS point where it was taken.
Import & Export
Share routes as GPX, KML or Garmin TCX. Import GPX / KML / TCX files from any other app.
Fully Offline & Private
All data lives on the device. No cloud sync, no analytics, no registration required.
geo3bit records your movement as a sequence of GPS track points. Each point captures coordinates, timestamp, altitude, speed, heading, accuracy, satellite count and device battery level. Recording continues in the background using the system location service.
Starting a New Route
Tap the + button on the dashboard. Fill in the route name (required), an optional description, and choose an activity type:
Running
Cycling
Hiking
Walking
Swimming
Skiing
Recording Controls
-
StartBegins background GPS collection. A persistent notification appears in the system tray with live distance and point count.
-
PauseFreezes point collection while keeping the session open. The notification shows "Paused" state. Resume any time.
-
Stop & SaveFinalises the track, calculates statistics, and saves the GPX file to local storage. A confirmation dialog is shown before stopping.
-
Camera CaptureTap the camera button on the recording banner to take a photo at the current GPS position. The photo is permanently linked to that track point.
Background Operation
geo3bit uses expo-location with Background accuracy and expo-task-manager to run a location task when the app is not visible. On Android a Foreground Service with type location ensures the OS does not kill the process. On iOS Background Modes → Location updates is enabled in the entitlements.
Battery logging: each recorded point stores the current battery percentage so you can correlate power drain with route segments in post-analysis.
Live Stats During Recording
| Stat | Description |
| Elapsed Time | Counting from the moment recording started (excludes paused periods) |
| Distance | Cumulative distance calculated via the Haversine formula (metres → km) |
| Avg Speed | Total distance ÷ elapsed seconds × 3.6, displayed in km/h |
| Max Speed | Peak instantaneous speed reported by the GPS sensor (km/h) |
| Elevation Gain | Total metres climbed (ignores downhill segments) |
| GPS Points | Number of location fixes collected so far |
GPS Recording Precision
| Setting | Available options | Default |
| Distance interval | 5 · 10 · 20 · 50 · 100 m | 10 m |
| Time interval | 1 · 3 · 5 · 10 · 20 · 30 s | 3 s |
A point is recorded when either threshold is crossed. Redundant duplicate points are filtered by a speed-plausibility check to suppress GPS jumps.
System Tray Notification
-
Live StatsElapsed time, distance and point count updated every few seconds directly in the notification.
-
Pause / ResumeAction button in the notification. Works from the lock screen, notification shade, or any other app without opening geo3bit.
-
Stop & SaveEnd your session and save the route directly from the notification.
Dashboard
-
Stats Overview CardShows total routes, combined distance and total time across all recorded tracks.
-
Recent Routes ListEach card shows route name, date, distance, duration, activity tag and a status badge (Active / Paused / Completed).
-
New Route Button (FAB)Floating action button at the bottom right. Opens the New Route form. During an active recording the button becomes a red Stop button.
-
Recording BannerA sticky banner at the top of the dashboard while GPS tracking is active, showing elapsed time, live distance and the camera capture button.
-
SettingsAccessible via the gear icon in the top-right corner of the dashboard header.
-
Import RouteAccessible via the import icon in the dashboard header. Supports GPX, KML and Garmin TCX files.
Track Detail View
-
Route Map PreviewEmbedded map showing the full track path, start marker (green), finish marker (red), and camera markers for points with photos. Tap to expand fullscreen.
-
Edit Name & DescriptionTap the name or description field inline to edit. Changes are saved automatically on submit.
-
Route StatisticsDistance, duration, average speed, max speed, elevation gain, altitude range (min–max) and total GPS points recorded.
-
Photos & VideosHorizontal scroll strip of all media attached to the route. Tap any thumbnail to open fullscreen viewer. "View All" button (≥ 9 photos) opens a 3-column grid browser.
-
Map with PhotosOpens the fullscreen map showing only GPS points that have photos attached. Tap any camera marker to slide up a photo thumbnail panel.
-
Delete RoutePermanently removes the route and all attached media from the device. A confirmation dialog is shown first.
Track Status Badges
| Status | Meaning |
|
GPS tracking is currently active for this route. Stats update in real time. |
|
Tracking was paused; the route can be resumed. |
|
Recording was stopped and the route is fully saved. |
The route map is rendered inside a WebView using Leaflet.js (OSM) or the Google Maps JavaScript API — eliminating any native map SDK dependency.
Map Providers
Free · No API key
OpenStreetMap (OSM)
Default provider. Uses Leaflet.js 1.9.4 with OSM tiles. Works offline for cached tiles. No account required. Max zoom level 19.
API key required
Google Maps
Uses the Google Maps JavaScript API loaded via CDN. Enter your own API key in Settings → Map → Google Maps API Key.
Map Features
-
Track PolylineThe recorded GPS path rendered as a solid blue line (#228be6) on both map providers.
-
Start / Finish MarkersGreen circle at the first point, red circle at the last point. Visible at all zoom levels.
-
Photo MarkersGPS points with photos attached are rendered as orange dots. Tap to see the photo thumbnail panel.
-
Point Info PopupIn interactive mode, tapping any track point shows: coordinates, time, altitude, speed, heading, accuracy, satellite count, battery level.
-
Fullscreen ModeTap the expand icon to open a fullscreen interactive map. Extends edge-to-edge on Android 15 (Portal-based rendering) and iOS.
-
Chart Panel ButtonA round button (stats-chart icon) in the lower-right of the fullscreen map opens the interactive chart panel. Disappears while the chart is open.
-
Chart Cursor MarkerWhen the user drags on a chart, a white circle with red border appears on the map at the corresponding GPS coordinates — moves in real time.
-
Open in Google MapsExports the full route as a Directions URL with up to 23 sampled waypoints and opens it in the Google Maps app.
-
Photo MapA dedicated fullscreen map showing only GPS points where photos were captured. Tap a marker to view its photos in the slide-up panel.
Technical note: The map fills the entire screen (height: 100vh in the WebView) including the status bar and navigation bar on Android 15 edge-to-edge mode via Portal-based rendering.
The chart panel slides up from the bottom of the fullscreen map and occupies approximately one-third of the screen height. Powered by Chart.js 4.4.6 in a dedicated WebView. Charts display up to 400 sub-sampled points for smooth rendering on long routes.
Available Chart Tabs
Speed
km/h — over cumulative distance (km)
Elevation
metres above sea level — over cumulative distance (km)
Gradient
% slope (rise ÷ run × 100) — over cumulative distance (km)
Chart Details
| Tab | Y-axis | X-axis | Line colour |
| Speed | km/h (speed × 3.6) | Distance km | ■ #228be6 |
| Elevation | metres | Distance km | ■ #2f9e44 |
| Gradient | % grade | Distance km | ■ #e67e22 |
Gradient Calculation
gradient[i] = ( altitude[i+1] − altitude[i] ) ÷ ( distance_m[i→i+1] ) × 100 %
Positive = uphill, negative = downhill. Points with distance < 1 m are skipped to prevent artefacts.
Interactive Features
-
Touch CrosshairTouch or drag on the chart to show a vertical dashed crosshair line at your finger position.
-
Floating TooltipAppears at the top of the chart showing the current value and cumulative distance: e.g. 42 km/h · 7.34 km
-
Map Cursor SyncWhile you touch the chart, a red/white circle marker appears on the map at the corresponding GPS coordinates — moves in real time. Disappears on finger lift.
-
Tab SwitchingTap Speed / Elevation / Gradient tabs at the top of the chart panel. Animates to the new dataset in 180 ms.
-
Drag to ClosePull the drag handle downward or tap × in the panel header to dismiss the chart panel.
Localised Tab Labels
| Language | Speed tab | Elevation tab | Gradient tab | Panel title |
| English | Speed | Elevation | Gradient | Charts |
| Українська | Швидкість | Висота | Ухил | Графіки |
| Русский | Скорость | Высота | Уклон | Графики |
| Deutsch | Tempo | Höhenprofil | Steigung | Diagramme |
| Italiano | Velocità | Quota | Pendenza | Grafici |
Export Formats
GPX 1.1
KML 2.2
Garmin TCX
| Format | Standard | Compatible Apps | Contains |
| GPX 1.1 |
GPS Exchange Format |
Strava, Garmin Connect, Komoot, Google Maps, OsmAnd, any GPX viewer |
Track points (lat/lon/ele/time), metadata, statistics extensions |
| KML 2.2 |
Keyhole Markup Language |
Google Earth, Google Maps, Google My Maps |
Track polyline, start/end placemarks, route metadata |
| Garmin TCX |
Training Center XML |
Garmin Connect, TrainingPeaks, Strava, SportTracks |
Activity data, track segments, lap structure |
Import Formats
GPX 1.0 / 1.1
KML 2.2
Garmin TCX
-
File PreviewAfter selecting a file, a preview card shows the detected route name, point count, format type and metadata before confirming the import.
-
Duplicate DetectionIf a route with the same internal ID already exists, a warning dialog is shown with the option to import anyway or cancel.
-
ValidationFiles are validated before import — malformed or unrecognised formats show a clear error message.
Open in Google Maps
The Google Maps button in Track Detail samples up to 23 waypoints evenly from the route and opens a Directions URL. On iOS the comgooglemaps:// URL scheme is tried first, falling back to the web URL.
Settings are accessible via the gear icon on the dashboard. All values are persisted to AsyncStorage and restored on app launch.
Data
Demo Data
Load sample routes to explore the app without recording real tracks.
ON / OFF
GPS Tracking
Distance Interval
Minimum distance the device must move before a new GPS point is saved.
5 · 10 · 20 · 50 · 100 m
Time Interval
Maximum time between GPS points. A point is saved when either threshold is reached.
1 · 3 · 5 · 10 · 20 · 30 s
Map
Map Provider
Switch between OpenStreetMap (free, no key) and Google Maps (requires API key).
OSM · Google
Google Maps API Key
Your own Google Maps JavaScript API key. Stored locally, never transmitted.
Text field
Photo Nearby Radius
Max distance between a photo's GPS coordinates and a track point to link them.
10 · 20 · 50 · 100 · 200 m
Language
App Language
Override the device language. All UI text including chart labels updates immediately.
EN · UA · RU · DE · IT
About
App Info
Shows app name (geo3bit), version, and confirms all data is stored locally — no registration required.
Read-only
Each permission is requested in context with a rationale panel before the system dialog appears. Permissions that are denied do not block the app — only the relevant feature is disabled.
Location — Foreground Required
Needed to record GPS points while the app is visible. Requested when the user taps "Start Recording".
Location — Background Required for full tracking
Required for GPS recording to continue when the screen is off. On iOS: select "Always Allow". On Android 15: prompted separately by the OS.
Camera Optional
Needed to capture photos during a recording session. If denied, the camera button is hidden but all other features work normally.
Notifications (POST_NOTIFICATIONS) Recommended
Required on Android 13+ to display the live tracking notification. Without it, Pause/Stop controls are only available inside the app.
Android 15 specifics: The app declares FOREGROUND_SERVICE_LOCATION permission and targets API 35. READ/WRITE_EXTERNAL_STORAGE are limited to API ≤ 32 via maxSdkVersion="32".
geo3bit uses i18next with react-i18next for full UI localisation. The language can be changed at any time in Settings without restarting the app. All labels — including chart tab names, map point info fields, permissions panels and settings — are translated.
| Language | Code | Coverage |
|
English |
en |
Full — reference language |
|
Українська |
uk |
Full |
|
Русский (Украина) |
ru |
Full |
|
Deutsch |
de |
Full |
|
Italiano |
it |
Full |
The app detects the device locale on first launch and selects the closest supported language. If the device language is not in the list, English is used as a fallback.
-
On-Device Storage OnlyAll GPS tracks, photos and settings are stored exclusively on the device using AsyncStorage and the file system. Nothing is sent to any server.
-
No Registration RequiredThe app works fully in guest mode. An optional login screen exists for future authenticated features but is not required for any current functionality.
-
No Analytics or TelemetryNo crash reporters, analytics SDKs or advertising networks. The only external network calls are map tile requests to OSM or Google.
-
Google Maps API KeyStored locally in AsyncStorage. Sent directly to Google Maps CDN when loading map tiles — never transmitted to geo3bit servers.
-
App Private DirectoryGPX files are written to the app's private cache/document directory. No external storage permissions needed on Android 6+.