Release Notes for 538

Please note: There were no release notes for 537. This week continues with 538 linked below.

Notes for Release 538


Client Difference Log

API Changes

Added Class FacialAnimationRecordingService : Instance [NotCreatable] [Service] [NotReplicated]
	Added Property bool FacialAnimationRecordingService.BiometricDataConsent {RobloxScriptSecurity} [Hidden] [NotReplicated]
	Added Function bool FacialAnimationRecordingService:IsAgeRestricted() {RobloxScriptSecurity}

Added Class PluginManagementService : Instance [NotCreatable] [Service] [NotReplicated]
	Added Function void PluginManagementService:SetAutoUpdate(int64 pluginId, bool state) {RobloxScriptSecurity}

Added Class AssetSoundEffect : SoundEffect [NotCreatable]

Added Class WireframeHandleAdornment : HandleAdornment [NotBrowsable]
	Added Function void WireframeHandleAdornment:AddLine(Vector3 from, Vector3 to)
	Added Function void WireframeHandleAdornment:AddLines(Array points)
	Added Function void WireframeHandleAdornment:AddPath(Array points, bool loop)
	Added Function void WireframeHandleAdornment:Clear()

Added Property PhysicalProperties MaterialVariant.CustomPhysicalProperties
Added Property bool StudioDeviceEmulatorService.HasMultiTouchStarted {RobloxScriptSecurity} [Hidden] [ReadOnly]
Added Property bool StudioDeviceEmulatorService.IsMultiTouchEnabled {RobloxScriptSecurity} [Hidden] [ReadOnly]
Added Property Vector2 StudioDeviceEmulatorService.PivotPosition {RobloxScriptSecurity} [Hidden] [ReadOnly]

Added Function Tuple AnimationStreamTrack:GetTrackerData() {RobloxScriptSecurity}
Added Function Array AvatarEditorService:GetRecommendedAssetsV2(Enum.AvatarAssetType assetType, int64 assetId, int numItems, bool includeDetails) [Yields]
Added Function Array AvatarEditorService:GetRecommendedBundlesV2(Enum.BundleType bundleType, int64 bundleId, int numItems, bool includeDetails) [Yields]
Added Function bool GuiService:GetGuiIsVisible(Enum.GuiType guiType) {RobloxScriptSecurity}
Added Function void GuiService:ToggleGuiIsVisibleIfAllowed(Enum.GuiType guiType) {RobloxScriptSecurity}
Added Function Dictionary PackageUIService:GetPackageInfo(int64 packageAssetId) {RobloxScriptSecurity} [Yields]
Added Function void PackageUIService:PublishPackage(Instance packageInstance) {RobloxScriptSecurity} [Yields]
Added Function Instance PackageUIService:SetPackageVersion(Instance packageInstance, int64 versionNumber) {RobloxScriptSecurity} [Yields]
Added Function Array PhysicsService:GetRegisteredCollisionGroups()
Added Function void PhysicsService:RegisterCollisionGroup(string name)
Added Function void PhysicsService:UnregisterCollisionGroup(string name)
Added Function void Player:SetModerationAccessKey(string moderationAccessKey) {RobloxScriptSecurity}
Added Function void ScriptContext:ClearScriptProfilingData() {RobloxScriptSecurity}
Added Function void ScriptContext:StartScriptProfiling() {RobloxScriptSecurity}
Added Function string ScriptContext:StopScriptProfiling() {RobloxScriptSecurity} [CustomLuaState]
Added Function string ScriptDocument:GetSelectedText() {PluginSecurity}
Added Function Tuple ScriptDocument:GetSelectionEnd() {PluginSecurity}
Added Function Tuple ScriptDocument:GetSelectionStart() {PluginSecurity}
Added Function bool ScriptDocument:HasSelectedText() {PluginSecurity}
Added Function int StudioDeviceEmulatorService:GetMaxNumTouches() {RobloxScriptSecurity}
Added Function Vector2 StudioDeviceEmulatorService:GetTouchPosition(int index) {RobloxScriptSecurity}

Added Event GuiService.GuiVisibilityChangedSignal(Enum.GuiType guiType, bool visible) {RobloxScriptSecurity}
Added Event StudioDeviceEmulatorService.TouchPositionsChanged() {RobloxScriptSecurity}

Added Enum GuiType
	Added EnumItem GuiType.Core : 0
	Added EnumItem GuiType.Custom : 1
	Added EnumItem GuiType.PlayerNameplates : 2
	Added EnumItem GuiType.CustomBillboards : 3

Added EnumItem CollisionFidelity.DynamicPreciseConvexDecomposition : 4
Added EnumItem ConnectionError.DisconnectOutOfMemoryKeepPlayingExit : 289

Added Tag [Deprecated] to Function AvatarEditorService:GetRecommendedAssets
Added Tag [Deprecated] to Function AvatarEditorService:GetRecommendedBundles
Added Tag [Deprecated] to Function DebuggerManager:StepIn
Added Tag [Deprecated] to Function DebuggerManager:StepOut
Added Tag [Deprecated] to Function DebuggerManager:StepOver
Added Tag [Deprecated] to Function Model:GetPrimaryPartCFrame
Added Tag [Deprecated] to Function Model:SetPrimaryPartCFrame

Changed the category of Property BasePart.CFrame 
	from: "Data"
	  to: "Transform"

Changed the category of Property BasePart.Orientation 
	from: "Data"
	  to: "Transform"

Changed the category of Property BasePart.Position 
	from: "Data"
	  to: "Transform"

Changed the category of Property BasePart.Size 
	from: "Part"
	  to: "Transform"

Changed the category of Property Model.PrimaryPart 
	from: "Data"
	  to: "Pivot"

Changed the thread safety of Property Bone.TransformedWorldCFrame 
	from: {🧬Safe}
	  to: {🧬Unsafe}

Changed the thread safety of Function HttpService:GenerateGUID 
	from: {🧬Unsafe}
	  to: {🧬Safe}

Changed the thread safety of Function HttpService:JSONDecode 
	from: {🧬Unsafe}
	  to: {🧬Safe}

Changed the thread safety of Function HttpService:JSONEncode 
	from: {🧬Unsafe}
	  to: {🧬Safe}

Changed the thread safety of Function HttpService:UrlEncode 
	from: {🧬Unsafe}
	  to: {🧬Safe}

Changed the thread safety of Function RunService:IsClient 
	from: {🧬Unsafe}
	  to: {🧬Safe}

Changed the thread safety of Function RunService:IsEdit 
	from: {🧬Unsafe}
	  to: {🧬Safe}

Changed the thread safety of Function RunService:IsRunMode 
	from: {🧬Unsafe}
	  to: {🧬Safe}

Changed the thread safety of Function RunService:IsServer 
	from: {🧬Unsafe}
	  to: {🧬Safe}

Changed the thread safety of Function RunService:IsStudio 
	from: {🧬Unsafe}
	  to: {🧬Safe}

Changed the thread safety of Function Workspace:GetRealPhysicsFPS 
	from: {🧬Unsafe}
	  to: {🧬Safe}

Removed Class ABTestService
	Removed Function ABTestService:ClearUserVariations
	Removed Function ABTestService:GetBrowserTrackerABTestLoadingStatus
	Removed Function ABTestService:GetPendingOrInitializedUserId
	Removed Function ABTestService:GetUserABTestLoadingStatus
	Removed Function ABTestService:GetVariant
	Removed Function ABTestService:InitializeForUserId
	Removed Function ABTestService:WaitUntilBrowserTrackerABTestsInitialized
	Removed Function ABTestService:WaitUntilUserABTestsInitialized
	Removed Event ABTestService.OnBrowserTrackerABTestLoadingStatusChanged
	Removed Event ABTestService.OnUserABTestLoadingStatusChanged

Removed Class RomarkSoundEffect

Removed Property Workspace.PhysicsSimulationRate

Removed Enum ABTestLoadingStatus
	Removed EnumItem ABTestLoadingStatus.None
	Removed EnumItem ABTestLoadingStatus.Pending
	Removed EnumItem ABTestLoadingStatus.Initialized
	Removed EnumItem ABTestLoadingStatus.Error
	Removed EnumItem ABTestLoadingStatus.TimedOut
	Removed EnumItem ABTestLoadingStatus.ShutOff

Removed Tag [NotBrowsable] from Property SoundService.VolumetricAudio

(Click here for a syntax highlighted version!)




Can we please get an option to disable the UI editor?

It’s totally abysmal when working with UI. I’m sure it has use outside of my workflow but, having it forced is ridiculous.

I know there’s a way to disable it if you delete a few files but, studio updates a lot and having to do that (I automated it) is kinda a pain.

Edit: Oh, I thought I saw something about it here. rip

Edit #2: Close enough?



FYI we hear you on this. The reason it’s taken so long to get this is that we were working on other things which would have likely removed the need for a way to disable it, so we chose to skip adding a way to disable it at the time. Unfortunately the timeline on those things has continued to slip, so I reopened the discussion on adding a simple disable option recently.


Thank you for the transparency on this issue, it’s nice to hear literally anything about this when everybody has been complaining about it for years to absolute radio silence. Especially appreciate you reopening dialog on this issue.

But once again, I have to say that this approach is foolish. At the completion of the feature, saying “Let’s not do this extremely straight forward thing that solves a huge problem for all users because we have grand plans” does not make any sense, Roblox should know that it moves glacially slow and within even just the first 6 months it should have taken action; this is a critical usability issue that completely makes it impossible to work on UI in many situations. The visibility problems everyone has with this tool would have come up as early as the announcement, but Roblox chose not to act on any of that feedback this whole time because of what seems to be hard-shifting priorities and “big plans” that we’ll probably never see for another 2 years.

This approach is the exact same reason why we still cannot see tags in Studio natively, and adding a bare bones interface to do it has been shirked for years, difference being that there is a plugin for this problem. This method of prioritization is broken, Roblox engineering is too slow to be doing things this way when users of the platform are making a living here and need solutions now. It’s embarrassing that tooling that harms an entire facet of game development has just been left this way.

I’ve said this before, and I still stand by it. Release Notes for 466 - #25 by PeZsmistic


I actually understand where Roblox comes from with their response. I work in a massive tech company. Stuff moves notoriously slow. There’s a lot of internal discussion and roadmap issues well beyond your pay grade to just make a change yourself. Sometimes, you have to reach out to other teams because what you want isn’t actually under what your team owns. It’s not as simple as just changing it. So much stuff comes to play here. Much of what you probably don’t see as a developer. The corporate structure is basically designed like that.

Honestly, @tnavarts giving a response in general about it is a win in my eyes and I trust where it’s going. It’s unfortunate that developers directly see the blunt force of lack of prioritization but, you’d be surprised. Engineers deal with it too!