Skip to content

DataField

Garmin
Status ✅
Code apps/garmin-datafield/source/, apps/garmin-datafield/manifest.xml, apps/garmin-datafield/resources/
Version 1.2.1 (AppVersion in apps/garmin-datafield/resources/resources.xml)

Verified against code: 2026-10-11

Purpose

The DataField is a free Connect IQ app of type datafield. The sailor adds it to a data screen of one of Garmin's own activities, usually Sailing. It replaces Garmin's grid of single values with one full sailing screen: speed with a speed curve, COG with the tack/jibe angle, distance, average speed, pressure with a trend arrow, position, clock, timer, GPS and battery status.

Garmin's activity does the recording. The FIT file goes to Garmin Connect as usual. The DataField only reads and displays.

There is one platform (Garmin), so the specs have no platform subsections. Device differences (screen size, MIP vs AMOLED) are covered in screen.md.

What it does

  • Reads Garmin's activity data once per second (compute) and redraws the screen (onUpdate).
  • Shows 13 metrics on one screen. The count used in marketing groups GPS and battery status as one metric: SOG, speed curve, tack/jibe angle, COG, average speed, distance, pressure, pressure trend, latitude, longitude, clock, timer, GPS and battery status.
  • Is meant for a 1-field layout (the field fills the whole screen). See screen.md.

What it never does

  • It never uploads anything to SailEver. It has no pairing, no device token and no network access (no Communications permission).
  • It writes nothing to the FIT file: no developer fields, no FitContributor. The vessel state, the trip_token and all other SailEver FIT fields belong to the WatchApp.
  • It stores nothing between activities: no Application.Storage, no properties. All history (speed curve, COG history, pressure samples) lives in memory and starts empty each time the field is loaded.
  • It has no settings, no user properties and no on-watch menu. It reacts to no buttons or touches.
  • It raises no alerts: no tones, no vibration, no pop-ups.

A sailor who wants the track in the SailEver logbook uploads Garmin's FIT file on the website (upload dialog).

Data sources

Value Source Unit conversion
SOG Activity.Info.currentSpeed (m/s) × 3600 / 1852 → kn. null → 0, negative → 0
Distance Activity.Info.elapsedDistance (m) / 1852 → nm. null → 0
Average speed elapsedDistance / timerTime m/s → kn. 0 while distance or timer is 0 or null
Timer Activity.Info.timerTime (ms) H:MM:SS
Position Activity.Info.currentLocation degrees, shown as degrees and decimal minutes
GPS quality Activity.Info.currentLocationAccuracy Position.Quality 0–4
COG Position.getInfo().heading (radians) and Position.getInfo().accuracy degrees. Never the compass (Activity.Info.currentHeading)
Pressure Activity.Info.ambientPressure (Pa) / 100 → hPa. Station pressure, not reduced to sea level. null → 0
Clock System.getClockTime() H:MM, 24 h
Battery System.getSystemStats().battery percent 0–100

The maths for COG smoothing, the tack/jibe angle and the pressure trend is shared with the WatchApp and specified in ../shared/calculations.md. What the DataField shows, and its own parameters, are in screen.md.

Supported devices

The products in apps/garmin-datafield/manifest.xml (72 products, minSdkVersion 2.4.0). Every one of them has a round screen. The public list of compatible watches on the website is generated from this manifest (bin/rails devices:sync), so the manifest is the only place to change it.

Screen Display Products
218×218 MIP fenixchronos, fr255s, fr255sm
240×240 MIP fenix5plus, fenix5splus, fenix5x, fenix5xplus, fenix6s, fenix6spro, fenix7s, fenix7spro, fr945, fr945lte, marqcaptain
260×260 MIP fenix6, fenix6pro, fenix7, fenix7pro, fenix7pronowifi, fenix8solar47mm, fenix9prosolar47mm, fr255, fr255m, fr955
280×280 MIP enduro3, fenix6xpro, fenix7x, fenix7xpro, fenix7xpronowifi, fenix8solar51mm, fenix9prosolar51mm
360×360 AMOLED fr265s, venu2s
390×390 AMOLED descentg2, descentmk343mm, epix2pro42mm, fr165, fr165m, fr170, fr170m, fr57042mm, instinct3amoled45mm, instinctcrossoveramoled, marq2, marq2aviator, venu3s, venu441mm
416×416 AMOLED d2mach1, epix2, epix2pro47mm, fenix843mm, fenix943mm, fenix9pro43mm, fenixe, fr265, instinct3amoled50mm, venu2, venu2plus
454×454 AMOLED d2mach2, d2mach2pro, descentmk351mm, epix2pro51mm, fenix847mm, fenix8pro47mm, fenix947mm, fenix9pro47mm, fr57047mm, fr965, fr970, venu3, venu445mm
466×466 AMOLED fenix9pro51mm

31 MIP products, 41 AMOLED products. Screen sizes and display types come from the Connect IQ SDK device definitions.

Permissions: Positioning (for Position.getInfo()) and Sensor. Language: English only. The only UI string from resources is the app name SailEver; all on-screen labels are hard-coded in apps/garmin-datafield/source/SailEverView.mc.

App identity

Value
App name SailEver (AppName)
Manifest app ID, production e6abd42e-4ed3-41a0-b865-af2c91e3c8aa
Manifest app ID, beta e6abd42e-4ed3-41a0-b865-af2c91e3c8bb
Launcher icon apps/garmin-datafield/resources/drawables/launcher_icon.png: 40×40 PNG, orange sail on a dark blue tile
Entry class SailEverField → one SailEverView (Ui.DataField)

The version string is not shown anywhere on the watch.

Release and versioning

Releases use the /sailever-garmin-release skill (.agents/skills/sailever-garmin-release/SKILL.md): datafield, beta or prod, and a semver bump. It sets the beta or production app ID in the manifest for the build, writes AppVersion, builds the .iq with the shared signing key, renders the store images and writes apps/garmin-datafield/RELEASE_NOTES_v<version>.md. Beta and production builds behave the same.

Files

File Covers
README.md This page: what the DataField is, devices, identity, release
screen.md The screen: layout, every element, fonts, colours, formats, speed curve, COG and tack/jibe angle, pressure trend arrow, states and device differences