Through the years, Roblox has been changing its API silently leaving us library developers to figure out changes when peoples’ bots and games (that use our libraries) suddenly start breaking. It isn’t a very effective method. The API is surely inconsistent and we thank Roblox engineers for trying to bring consistency to it. However, consistency without informing anyone is just trouble for everyone. As a Roblox library developer, it is very difficult for us to quickly deliver fixes to our libraries that are a result of silent changes to Roblox API endpoints.
Cases
At 0:34 EDT today, a user asked for support with an issue he was having after using the noblox.js library which I maintain. I found it peculiar considering his code looked perfectly fine and I even asked him to reduce it to just simpler methods like nbx.changeRank. His issue was the function was promoting/demoting people to seemingly random ranks. I didn’t know what the issue was until another user mentioned the issue came from Roblox as they now returned the roles in a group in random order.
One year ago, another similar issue occurred just as subtle with the same endpoint. Previously, what this endpoint returned had a different naming convention where all the field names were capitalized. Suddenly, all the field names were lowercase. So instead of Name and ID, it turned into name and id. Incredibly subtle change when you’re looking over your code trying to figure out what’s wrong.
Proposed Solution
In order to prevent future cases like these with subtle changes being made, I am asking for some kind of change logs be implemented so we can see what is changing about API endpoints so library developers can quickly update their libraries without having to spend hours trying to figure out what slight change occurred. If this issue is addressed, it would not only improve my development experience but those of others as well as there will be less worries about broken code due to random changes to Roblox’s API.
As someone who also relies heavily on ROBLOX’s API endpoints, it’s very confusing when ROBLOX out of the blue pushes a change, and does not alert us.
Please introduce changelogs. +1
Roblox API endpoints are technically not meant to be used by other people and purely exist so that the site (Roblox’s) can function. However, after maintaining my own library I have come to see my users report identical issues all of which are out of my hands. This is frustrating to say the least.
Roblox has made the continuous effort to block bots (refer to the endless captchas on certain site buttons, etc) but, it has subjectively and rather blatantly left out the third party libraries that use Roblox for non-malicious activities such as group rank bots or simple metrics bots. While those that have created endless botnets, falsified game visits, etc are the cause of this action taken against us, I believe that Roblox should take a step back and assess.
Libraries such as mine and yours (OP) were created to help bridge the gap between a language and a platform we love. To me, when the platform continually rejects and fails to alert us (library developers) when a breaking API change will occur, it’s nothing short of frustrating.
Roblox’s constant need to exclude external tooling capability is becoming more and more apparent as time goes on. Fortunately, as more developers become eager to expand Roblox past its personal containment / confines, someone will listen and finally communicate the words we’d all like to hear.
Seems like a bad assumption, unless the API description specified that it would return it in order, so that seems more like developer error.
This is not accurate, endpoints on API sites (like https://users.roblox.com/docs) are intended to be used by third parties (as well as Roblox itself). It’s only the endpoints directly on www.roblox.com that should not be considered for public use.
Hard to believe this when changes aren’t communicated to us. The lack of transparency in communication when breaking changes are made silently doesn’t support what you claim. Hopefully, this area is expanded and given love because thus far, I only know when stuff breaks after users have reported it to me. Otherwise, breaking changes remain indefinite.
As the owner / original creator of bloxy (Bloxy - Roblox Web API Library), I still find this topic relevant and important. Just recently Roblox changed / removed an endpoint on https://accountsettings.roblox.com/docs, and now I don’t know if it was replaced, updated or removed. All I know is that it’s no longer there.
For this reason, I have written tests and these tests help me identify what endpoints are changing. Only because of this, I know the endpoint was changed, but now I will have difficulties knowing what happened to it:
Because they don’t know if it was just a rename to the api, or if the api just doesn’t exist anymore. It also could be an internal change, like one of the examples shown in OP’s post.
This is something that is still needed. Loads of external tools rely on these endpoints and not being able to see past and present changes is highly frustrating.
I’ve ran into issues where endpoints randomly disappear without a trace or are replaced by endpoints found somewhere else. Or when my own users are facing issues and debugging takes way more time than I can personally afford to give.
As a library developer, it really shouldn’t be this hard.