Surfer Watch
· v1.1.2
About
Surfer Watch — a surfer-focused watch face for the Garmin Instinct series.
Supported: Instinct 2, Instinct 2X Solar, Instinct 3 Solar 45/50mm.
Two modes: Shore Mode for daily wear, Surf Mode for in-water use. All on one screen, no menus.
No API keys required for weather (via Open-Meteo or Garmin) or swell data. StormGlass free key required for tide data. OpenWeatherMap 2.5 api key required for OWM weather source.
SHORE MODE (default)
• Next tide time, direction (high/low), and predicted height via StormGlass API
• Weather condition with day/night icons and temperature
• Wind direction arrow and speed (configurable: km/h, knots, mph, m/s)
• Precipitation chance
• Sunrise/sunset with next event time
• Moon phase (16 phases, computed locally)
• Heart rate with configurable arc gauge (stress, solar, body battery, or disabled)
• Battery, notifications, Bluetooth connectivity
• Custom clock font (switchable via settings)
• Seconds on wrist raise (or always-on via setting)
SURF MODE
• Swell height, period, and direction from Open-Meteo Marine API (free, no key)
• Tide curve graph with "now" marker
• Configurable bottom view: swell or tide curve (set default, enable/disable wrist gesture toggle)
• Interpolated current tide height in subscreen circle
• Wind direction and speed for your surf spot
• Water temperature: watch sensor or ocean surface (Open-Meteo Marine, hourly, works offline)
• Configurable arc gauge (solar, stress, body battery, or disabled)
• Sunrise/sunset for surf spot
• Surf spot location: manual entry or one-tap GPS copy
WEATHER SOURCES
• Default: Garmin built-in weather (zero config, updates via phone)
• Optional: Open-Meteo (no key needed, updates every 5 min, hourly wind forecast for surf mode offline use). Uses WMO weather codes which are model-based — may occasionally show "overcast" when it's actually raining. Precipitation probability is a forecast (chance of rain), not a real-time indicator.
• Optional: OpenWeatherMap 2.5 (free, no credit card). Uses station observations for more accurate current conditions and the most granular weather icons (50+ conditions including smoke, haze, dust). Precipitation probability comes from Garmin built-in.
SWELL + OCEAN TEMPERATURE
• Open-Meteo Marine API — free, no key, no quota
• 24-hour hourly forecast, advances automatically even offline
SETUP
• Weather and swell work immediately — no setup needed
• For tide data: get a free StormGlass API key at stormglass.io
• For surf mode: set your surf spot coordinates in settings
• Enter keys in watch face settings via Garmin Connect app
OPEN SOURCE
Free, no PRO version, no ads. Full source code, specs, and documentation:
https://github.com/leomnovaes/surfer-watch-face-garmin
Built by a surfer for his own wrist, spec-driven with AI assistance.
What's new
# Changelog
## v1.1.2
### Fixed
- Temperature now correctly displays in Fahrenheit when set to imperial (was showing Celsius value with "°F" suffix)
- Temperature, tide height, and swell height now each respect their own unit setting (temperature, elevation, distance can be configured independently)
- Mixed unit configurations now work correctly (e.g., distance in miles + temperature in Celsius + elevation in meters)
## v1.1.1
### Fixed
- Weather/wind/sunrise data no longer goes "--" on settings changes (all fields now persisted to Storage)
- Black flash on first render removed (lazy init no longer skips first frame)
- `onPartialUpdate` clip region cleared properly (fixes frozen display when AlwaysShowSeconds is on)
### Improved
- Font glyph trimming: removed unused glyphs from crystal icons (17→3), seg34 icons (22→1), moon icons (28→16). Saves ~1.9KB runtime memory.
- Peak memory reduced from 59.7KB to 58.0KB (1.8KB headroom)
## v1.1.0
### New Features
- **Always Show Seconds** — keep seconds visible in low-power mode. Off by default to save battery.
- **Configurable Arc Gauge** — choose what the arc displays per mode: Stress, Solar Intensity, Body Battery, or Disabled.
- **Surf Bottom View Configuration** — choose default bottom section (Swell or Tide Curve) and enable/disable wrist gesture toggle.
### Improved
- Sunrise/sunset accuracy upgraded to ±1 minute (SunCalc algorithm)
- Architecture refactored to Crystal Face pattern for better memory efficiency
- GPS and moon phase moved from per-tick to event-driven
- Weather glyph mappers consolidated into single function
- Storage keys shortened, version gating prevents stale data on updates
- Dead code and unused resources removed
### Changed
- Removed Home Latitude / Home Longitude settings (GPS from watch is sufficient)
## v1.0.2
### Fixed
- Wind and swell arrows now correctly point in the TRAVEL direction
- Precipitation probability consistent across all weather sources
- Switching weather source clears stale data
### Changed
- Surf mode temperature shows 1 decimal place
- Ocean surface temperature option added (Open-Meteo Marine)
- Settings reordered for better UX
- Launcher icon updated to 62x62 PNG
## v1.0.0
Initial public release of Surfer Watch.
### Features
- Shore Mode: time, date, battery, HR, stress arc, tide, sunrise/sunset, weather, wind, precipitation, moon phase, notifications, Bluetooth
- Surf Mode: swell, tide curve, interpolated tide height, wind, water temperature, solar arc, surf sunrise/sunset
- Weather Sources: Garmin built-in, Open-Meteo (no key), OpenWeatherMap 2.5
- Tide data via StormGlass API with backup key support
- Swell + ocean temperature via Open-Meteo Marine API (free)
- Double wrist gesture toggles surf bottom view
- Custom clock font (Saira Condensed / Rajdhani)
- Supported: Instinct 2, Instinct 2X Solar, Instinct 3 Solar 45/50mm