• How to get started!

    Pinned Locked
    1
    15 Votes
    1 Posts
    3k Views
    No one has replied
  • [Guide] How to get deploy working on Linux

    Pinned guide linux suuntoplus development
    5
    18
    5 Votes
    5 Posts
    1k Views
    C
    @SyncBypass Perfect, thank you!
  • [Tip] How to save/load persistent data

    Pinned tip settings variables tutorial json manifest
    9
    2 Votes
    9 Posts
    2k Views
    A
    @SuuntoPartnerTeam Hello! I’m currently developing an app and own a Suunto 5 Peak watch to test my app. I have followed the manuals and examples, and everything works as expected, except that it looks like my app crashes (or glitches) as soon as it is uploaded to my watch. After commenting out and uncommenting parts of the code, I discovered that it looks like localStorage is not available at all, so the settings cannot be loaded. My app heavily depends on being able to configure these settings. So, what am I doing wrong? Why might localStorage be unavailable inside onLoad, and how should I access it to load my app’s settings? Thank you!
  • 1 Votes
    5 Posts
    2k Views
    S
    @guderaber There is no way to sync images. Also no information to share regarding limitations either, I’m afraid !
  • Examples explained

    Pinned development
    6
    2 Votes
    6 Posts
    2k Views
    SquirrelS
    @Martin-Lillepuu Exactly, and also keep the custom watchfaces (once available) for personal use without going through the bureaucratic hoops of publishing them to official store.
  • [Tip] Helpful CSS for custom layouts

    Pinned tip css development
    1
    0 Votes
    1 Posts
    495 Views
    No one has replied
  • [Inspiration] Share your app ideas

    Pinned inspiration peer-support
    49
    5 Votes
    49 Posts
    9k Views
    T
    @Horizontal_2 I’ve used waypoints that I’ve added on the route for this purpose. This only works if you have the the route so a separate app might be a good idea anyway. I might take a look at this!
  • [Discussion] Share your projects

    Pinned discussion peer-support
    101
    1 Votes
    101 Posts
    19k Views
    A
    @odivie I’ve got everything stored locally, but I’ll take a look if I can upload everything to github. I hardcoded my nightscout key in the beginning, so I’ll need to clear any insecure points. I’ll share the page/send you a message when I’ve done that. I am working from iOS though, not android, so there’s a handful of hoops I have to jump through that won’t be necessary on android.
  • 1 Votes
    11 Posts
    2k Views
    M
    One thing that caused my grief when working with subscribed signals (HR, pace) in main.js or in onLoad is that on the simulator signals are always available. On the watch subscribed signals seem to transition from ‘undefined’ -> ‘NaN’ -> a valid number. I ended up needing to protect any use of these signals by using isFinite(), like this. // Get the index of the the active zone for a 5 zone HR gauge // v current value // zones an array of 4-values defining the 5 zones function getActiveZone(v, zones) { if (!isFinite(v)) return 0; for (var i = 1; i < zones.length; i++) { if (v < zones[i]) return i - 1; } return zones.length - 1; } Inserting systemEvent() was quite effective in pinpointing the point of failure once I understood how to do it. But I do not really get any error message, just something like this. [MR] messages are inserted by me, so I can see something happened after “G4a”, but not what the actual error was. #3251371 26.05.2026 17:44:39 : EVT UI_FRAMEWORK : JS [MR] G1 #3251372 26.05.2026 17:44:39 : EVT UI_FRAMEWORK : JS [MR] G2 #3251373 26.05.2026 17:44:39 : EVT UI_FRAMEWORK : JS [MR] G3 #3251374 26.05.2026 17:44:39 : EVT UI_FRAMEWORK : JS [MR] G4a1-not-supported #3251375 26.05.2026 17:44:39 : WRN UI_FRAMEWORK : JS I am more of a Swift or C# person used to verbose error messages and traceback. But maybe I have been spoiled.
  • [Question] No stupid questions - ask anything here

    Pinned
    158
    4 Votes
    158 Posts
    30k Views
    F
    @matram Hi everyone, Just a quick update and a big thank you for your help! We managed to get it working! My SuuntoPlus Sports App can now read the running power zone limits directly from my Suunto Race using: /Activity/Zones/Power/Zone2/Limit and /Activity/Zones/Power/Zone3/Limit The app now automatically uses these limits to change the background color depending on my current running power. Everything is working on the watch! Thanks again for pointing me in the right direction. I really appreciate it! Cheers!
  • Custom Watch Face Development for Suunto Race S – SuuntoPlus Editor

    2
    0 Votes
    2 Posts
    254 Views
    P
    @Carles-Torres as far as i know there is no option to create custom watch-faces at the moment
  • SuuntoPlus blood glucose sports app

    6
    2 Votes
    6 Posts
    523 Views
    A
    The app has become rather big, but everything works solidly. Keep in mind that all of this is read-only, so you can’t adjust things from your watch to a communicating app. Currently only tested for my Race S (q display), it’ll probably work for the Vertical 1, and the 9PP, but I obviously haven’t tested that. I was able to fit in two different layouts in in the app, switchable by holding the upper right button for about 2-3 seconds. Tried below with Trio in CGM simulator & pump simulator, and went bouldering for 2 hours and on a 40 min run while connected to my own Nightscout, all without issue. BG units are data stream aware, meaning it’ll show as either mmol/L or mg/dL. IOB, COB, Loop, BG, trend arrow, trend value are read from Nightscout/Trio data stream. Data age (lowest value) is data age from CGM, but an internal counter on the watch keeps track and greys out values older than 6 minutes, and gives an audible alert and buzz if older than 10 minutes. The left is a “Sports” layout, the right is a “Daily” layout. [image: 1792926347322-slide1.jpeg] In the Sports layout, pace (upper left) is unit aware so automatically adjusts per sports profile chosen (tested with running, cycling, rowing). I’ve chosen HR and pace here as these are generally the major two I keep an eye on. All other info you can simply see by switching to you screen of choice. The graph on Daily is the past 3 hours, data points are streamed as soon as watch connects to phone, with one point per 5 minutes (takes roughly 2 minutes for everything to load in). Dots in range (user adjustable, but a little quirky still) are white, otherwise red below range, orange above range. Values below 3.0 mmol/L are red triangles, value above 13.9 are orange triangles (upper range is adjustable but compresses the graph). Green band is Low to High, also adjustable. Switching to and back from the Daily screen may cause the graph to empty visually, but should be filled back in over a minute or so. Alerts (vibration, plus a tone if your watch tones are on): going below or above your alert levels, a repeat alert if you stay low, falling or rising fast, and signal lost. In quiet sports (yoga, walking, meditation, etc.) I’ve set different levels because I tested this in a yoga class and the thing went off every 15 minutes because I was consistently just a little too high. The reason I’ve opted for two layouts, and two different alert “types”, is because without a true watch face implementation a “walking” exercise with the Daily layout is the best workaround I could think of for people to keep track of everything without having to check your phone. Regarding settings and connection: BLE bridge key: a 32-character key shown in a phone app. Secure connection and super lightweight. I’ve currently set this to be user generated in my bridge / Trio fork, and I entered this into the Suunto app with the VSCode extension. Low below / High above: your target range: colours, graph band and time-in-range. Stale (grey) after: minutes before an old reading turns grey Alerts: alerts on or off Alert below / Alert above: when the watch alerts (can differ from your range, e.g. alert at 5.0 during exercise) Repeat low alert: repeat while you stay low, every x minutes (0 = off) Quiet sports: alert below / above / falling fast below: the separate levels for quiet sports Save glucose to workout: adds a glucose graph and avg/min/max/time-in-range to your workout in the Suunto app Currently working out if I can send a warning if anything in a closed loop failed, but the app is extremely heavy for Suunto standards so I’ll likely only be able to send an “AID alert” warning.
  • Suunto Race 3S not connecting to Suunto Plus Editor Extension

    Moved
    1
    0 Votes
    1 Posts
    144 Views
    No one has replied
  • Watch Faces as part of new OpenSuuntoPlus

    15
    4 Votes
    15 Posts
    4k Views
    V
    mark to read it and get news about OpenSuuntoPlus
  • SuuntoPlus Improvement Suggestions

    4
    0 Votes
    4 Posts
    244 Views
    Łukasz SzmigielŁ
    @Woodster said: make the watch simulator closer to the watch hardware That would require running the actual firmware.
  • 0 Votes
    1 Posts
    113 Views
    No one has replied
  • SuuntoPlus Extension issues on OS X Golden Gate

    4
    2 Votes
    4 Posts
    227 Views
    isaziI
    @Panagiotis-Kritikakos hopefully they will have ported the plugin to ARM
  • 1 Votes
    1 Posts
    130 Views
    No one has replied
  • no new SuuntoPlus apps for a long time

    4
    0 Votes
    4 Posts
    381 Views
    MarTej_czM
    Honestly, Suunto + doesn’t give me anything. I see all the information I need. ok Hour hand . I don’t want to spoil the effort and work that they put into the apps for others.
  • End to End Test Plus App with Suunto App

    2
    1 Votes
    2 Posts
    351 Views
    W
    @JochenParat definitely need a private QA test version feature

Suunto Terms | Privacy Policy