09-10-2019 13:40
09-10-2019 13:40
I'm incredibly frustrated by the documentation provided for app developers. This should be a really high priority for Fitbit, as a rapidly expanding app ecosystem is a big part of the success of new devices - especially ones in amorphous categories like 'Fitness Tracker' and 'Smart Watch'.
I am an experienced developer who is very proficient in multiple languages. My job title in my day job is Lead Developer. I only say that so that this post isn't dismissed out of hand.
I bought an Ionic - even after reading bad reviews - because I wanted to develop Fitbit apps. I loved my Charge HR and Charge 2 - and I have bought Fitbit devices as gifts for various members of my family. I only say this so that I'm not dismissed as a Fitbit hater or something like that. I *really* want to love developing Fitbit apps because of how much I like the platform as an everyday user.
Learning to develop Fitbit apps is like going to the dentist. Really. The user experience as a developer is absolutely terrible. The documentation initially looks good, but there are huge gaps that become really obvious over time. I find myself coming to the forums for examples for something relatively simple again and again. Things that absolutely should be in the documentation, like "How do I define and show different views in my application", or "How do I interact with my device from a companion app", or even "How do I append to a log file". It blows my mind that the last question isn't clearly answered in the Filesystem API documentation.
So the next step for most new devs is to go to the developer forums and search around. That isn't a great experience either. Many of the things I search for are only answered by community developers like myself. Thank god for them though because without their help I'd have twice as many unanswered questions. Many of the responses from the few Fitbit developer employees who post regularly are just links to someone else's example in a Github repo, with zero explanation. So then you have to go through that repo file by file until you find something that looks like it might be what you are asking about. Think about what that experience is like for a new developer who is still learning Javascript, HTML, CSS, etc. Chances are you just lost them.
For a device whose main function is logging data from sensors, there should be an example of how to append data from selected sensors to a continually growing logfile that gets picked up by the companion app in some definable interval of time, and uploaded to the Web API in a way that is easily graphed and styled like the built-in apps. In fact, the API should have higher-level functions that make this stupid easy. That's another big part of what is wrong here - the API mainly exposes low-level functionality of the various components (device, companion, settings, web) and has very little high-level orchestration. That burden is put upon the individual app developer, who is expected to do this with huge gaps in the documentation by digging around in the developer forum and searching through Github Fitbit repos who usually don't specify what version of the OS or API is used or required. This is unacceptable if you are trying to attract new developers - especially folks who are new to Javascript.
Here's some recommendations that will probably just get ignored:
As I said above, I fully expect that my recommendations will get ignored. I also expect that there will be responses to my post that I am anti-Fitbit or that I don't know anything about development. I'll probably get responses that I'm a **ahem** or don't know what I'm talking about, or that I'm asking too much of Fitbit with my suggestions.
So anyone who is about to reply to this post with any of those types of ad hominem attacks can save their keystrokes for something else - I will ignore any responses along those lines. I'm putting forward my viewpoint and suggestions, and I don't really care if anyone dislikes or disagrees with them.
I really want to see Fitbit succeed, and I think they have a really unique niche in the Smart Watch/Activity Tracker space. I don't want to see them get eclipsed by their competition. I'd love to make compelling, useful apps that contribute to the power of this platform, but some serious work is needed to empower and grow the developer community.
09-11-2019 01:29
09-11-2019 01:29
There's some great feedback here which I've captured for future updates to dev.fitbit.com.
I'm the technical writer and community manager, and I am already capturing feedback, bugs and suggestions from developers. We've made some great progress, but there's always room for improvement. Hopefully we'll be able to satisfy some of your concerns soon.
Thanks for taking the time.
09-12-2019 12:13
09-12-2019 12:13
Jon,
Thanks for putting this forward as feedback. I didn't realize you were the community manager and technical writer, as your tagline is Fitbit Web Developer. I have seen more responses from you than anyone else. You relay a lot of information regarding what is and is not supported by the APIs and what direction development is going, so I guess I should have connected the dots. I appreciate that you did not take my comments personally. My frustration is with the general process, not anyone in particular.
09-14-2019 09:06
09-14-2019 09:06
I am just about to buy a Versa 2. I want SpO2 sensing and heart rate because I have sleep apnea, accurate steps tracking because I walk mow and play pickleball (not all together), health tracking apps, and lots of other apps. Garmin meets all of these except for not tracking steps while mowing or playing pickleball (don't ask). Garmin even has a pickleball scoring app. But I need accurate steps, like my Charge 2 does. Samsung does not measure SpO2. Apple Watch is another world, and no SpO2. So back to Fitbit. I trust they will activate SpO2 soon. So I am just missing a Pickleball scoring app for Versa 2, likely also for Versa and Ionic for others. The best one is on Apple. Would you please develop one? I will help with all the rules and desirable features. Please?
10-16-2019 00:48
10-16-2019 00:48
This is an incredibly insightful post, and I wholeheartedly agree with it.
I also find the closedness of the SDK very hostile to getting any meaningful apps made. I find it incredible that we, as developers can not schedule wake times on the device. There is no way for a developer to create something as simple as a kitchen timer that keeps working after exiting the application, something I would very much like to create.
Would this functionality be abused by developers that would use the wake times to trigger every second and use up all the battery? You betcha! Is the correct response to close this off to all developers so nobody does anything silly? Heck no!
If there was a good way for end users to see which apps are using all your battery, the abusing app would very soon get terrible reviews or the developer would improve it!
It's incredibly frustrating to see that the Versa is easily capable of doing this but 3rd party developers cannot. The built in timer rubs this in our face everytime we use it!
Another thing which I find very odd is that we can only develop in javascript. I have developed **ahem** terminal software on 16 bit card terminals in C. I have written low latency audio software that does not hiccup in C. I have done a bit of assembly on the side.
Why do I have to be constrained by a language that only has floats on a device that would much rather use integers??
Why, if I want to perform some quick and dirty movement analysis for my weightlifting app, do I have to use a very slow interpreted language for that task? It is ridiculous!
Are some developers going to crash some watches? Sure! Is that a reason to keep real development tools out of the hands of people who are capable of using them? Heck, no!
Just tell the user which app crashed their watch, and developers will learn.
10-16-2019 00:50
10-16-2019 00:50
The ***ahem*** in my last post, thought I was referring to a chunk of waste, when I was actually referring to a Point Of Sale terminal.. sheeesh. 😂
10-16-2019 17:47
10-16-2019 17:47
Agreed we really need a C/C++ API for performant apps. There's so many apps which could be opened up if that was the case. There's a bunch of machine learning ideas I have but can't do because of the API.
04-25-2021 06:40
04-25-2021 06:40
I would like to see the developers improve the Fitbit Web app to be equal to the phone app in features. The web app has not had a feature update in quite a while. I am older and my 28 inch PC screen is much easier to read and typing is a better experience than the phone.