This is a highly in-depth report on issues that have severely impacted developer workflows and caused major disruptions in top Roblox games.
Recently, Roblox has begun altering the product type of 2D clothing items (such as T-shirts, shirts, pants, etc.) from the previously used “User Product” type to “Collectible Item.” Whether this change was intentional or not, it has caused major disruptions for developers and their workflows, especially in majorly popular games. This change is especially impactful on donation-based games like PLS DONATE, which had to remove support for catalog items from player stands, meaning donations can no longer happen through these items, greatly impacting its core functionality. Other top games, such as Catalog Avatar Creator (owned by @ItsMuneeeb), are also likely affected by this.
The ripple effect of this issue is massive—many developer workflows that rely on external APIs (such as MarketplaceService:GetProductInfo()
or Roblox’s economy, marketplace, and catalog APIs) are now broken due to this backend data change. This is catastrophic for developers who have built robust systems around these APIs, including myself.
The Problem:
Apologies for the redundancy in some of the points here.
-
Backend Data Changes for 2D Clothing:
- Previously, the
ProductType
field for 2D clothing items was returned as"User Product"
in API requests. - Now, some 2D clothing items are randomly being updated to
"Collectible Item"
, while others remain"User Product"
. There appears to be no consistent pattern—some old assets have changed, while others, even newer ones, remain unaffected. - For example, the economy API response for asset
6948637552
shows the expected"User Product"
behavior:{ "TargetId": 6948637552, "ProductType": "User Product", "AssetId": 6948637552, ... }
- However, newer assets (and some totally random older ones that Roblox has decided to migrate, e.g., from 2017) return
"Collectible Item"
. Example:{ "TargetId": 0, "ProductType": "Collectible Item", "AssetId": 121292848668647, ... }
- Previously, the
- Something interesting I found is that older items that were migrated (at least, the ones I tested) have their
TargetId
field populated correctly, whereas newly created ones that exhibit the issue have theirs set to0
, which is detrimental to existing workflows.
-
Randomly Affected Assets:
- It’s not only newer items being affected by this change. Some older items, like a shirt created in 2017 (
915066971
), are now incorrectly returning"Collectible Item"
data, despite no updates being made to the item recently. - This inconsistency between assets with identical types and creators is causing major disruption.
- It’s not only newer items being affected by this change. Some older items, like a shirt created in 2017 (
-
UX Differences in Creator Hub:
- Not a huge issue but worth noting. Items marked as
"Collectible Item"
have slightly different UI in the Creator Hub compared to"User Product"
items. Specifically, the publish/save button is a different style and has different text and functionality, which is another messy issue caused by this rollout. The UX should be the same regardless of whether or not the items have undergone the migration–they are the same type.
- Not a huge issue but worth noting. Items marked as
-
TargetId Field Returning 0:
- The
TargetId
field, which many developers use to cross-reference and verify assets, is now returning0
for newer items marked as"Collectible Item"
. This breaks in-game systems relying onTargetId
for purchase validation or item identification.
- The
Major Impacts:
-
Game Functionality Broken:
- Many games use
ProductType == "User Product"
to ensure items are 2D clothing, filtering them from other types. The shift to"Collectible Item"
has made it impossible to differentiate properly, breaking critical game workflows. -
No workarounds exist except manually checking
AssetTypeId
, which is far more complex and unnecessary when theProductType
should suffice.
- Many games use
-
Breaking Purchase Validation:
-
Critical Issue: A central component of player-to-player catalog asset purchase validation is broken due to this change. The API (details shared in private PM) used for verification no longer works with
"Collectible Item"
types, making it impossible to validate UGC clothing purchases and process donations properly. - This impacts the core functionality of these donation games and has led to the removal of its support for UGC catalog items.
-
Critical Issue: A central component of player-to-player catalog asset purchase validation is broken due to this change. The API (details shared in private PM) used for verification no longer works with
-
Developer Workflows Shattered:
- External tools and systems relying on Roblox’s economy, marketplace, and catalog APIs are now completely unreliable. The inconsistent data from
"Collectible Item"
versus"User Product"
makes it impossible to maintain working external applications or systems.
- External tools and systems relying on Roblox’s economy, marketplace, and catalog APIs are now completely unreliable. The inconsistent data from
-
Zero Developer Communication:
- There was no advanced notice given to developers about this change which amazes me. If this is an intentional update, it is baffling that such a significant shift was rolled out randomly, with no prior announcement or timeline. This is a prime example of a botched rollout, showing zero regard for developer workflows. If it is intended, I’m not sure why half of the current catalog items are affected whilst the other half aren’t.
Possible Solutions:
-
Roll Back Changes:
- Ideally, Roblox should roll back all affected assets to the previous
"User Product"
type and give developers advanced notice beforehand if this change is reintroduced. - Ideally, as has been the case with similar breaking changes, developers should receive clear communication, a timeline, and a universal implementation across all items (instead of this random approach where only certain items are affected).
- Ideally, Roblox should roll back all affected assets to the previous
-
Fix the TargetId Field:
- The
TargetId
field should never return0
. This is a major oversight that should be urgently corrected.
- The
-
Fix API for Purchase Validation:
- The API (see attached PM) used in donation games should be updated to handle
"Collectible Item"
types correctly, allowing purchase validation workflows to continue without breaking. Elsewise, other APIs should be modified to have the same behavior as this one and act as a drop-in replacement.
- The API (see attached PM) used in donation games should be updated to handle
-
Consistent UX:
- Ensure that
"Collectible Item"
workflows in the Creator Hub match the original"User Product"
workflows for consistency and better user experience.
- Ensure that
And finally:
This change has decimated games and destroyed developer workflows that relied on consistent API data. Roblox has a history of being cautious about backward compatibility and quite literally refuses to fix long-standing bugs for this very reason, yet this rollout shows a shocking disregard for developers’ needs. Immediate action is required to fix these issues, as developers cannot adjust to a broken system with inconsistent and undocumented changes.
Further details on the API that doesn’t work with newer products are available via the attached private message.
CC’ing @GyroEffects, @bunnyc1986 and @BrightYellowElephant here.
A private message is associated with this bug report