Want bloatware-free always uptodate list to get all properties?
Then this tutorial is for you!
(i ran out of ideas for emojy)
So how are we gonna get them?
Well we can use a always updating github repository for that!
Ok cool but how do i extract properties out of it?
That a good question! Create a module script (although you could execute it directly)
And paste code here
Bro ts types took so long for me to write
--!strict
--!optimize 2
local HttpService = game:GetService("HttpService")
type SecurityMethods = "None"|"LocalUserSecurity"|"NotAccessibleSecurity"|"PluginSecurity"|"RobloxScriptSecurity"|"RobloxSecurity"
type Class_Tags = {
[number]:"CanYield"|"CustomLuaState"|"Deprecated"|"Hidden"|"NoYield"|"NotBrowsable"|"NotCreatable"|"NotReplicated"|"NotScriptable"|"PlayerReplicated"|"ReadOnly"|"Service"|"Settings"|"UserSettings"|"Yields"
}
type Thread_Safety = "ReadSafe"|"Safe"|"Unsafe"
type Capabilities = "Animation"|"Assistant"|"Audio"|"Avatar"|"Basic"|"CSG"|"CapabilityControl"|"Chat"|"CreateInstances"|"DataStore"|"Environment"|"Input"|"InternalTest"|"LegacySound"|"Network"|"Physics"|"Players"|"PluginOrOpenCloud"|"RemoteEvent"|"UI"
--------^^^^^^ is basically Enum.SecurityCapability
type Value_Type = {
["Name"]:string;
["Category"]:string;
}
type AllRobloxClasses = {
[number]:{
["Tags"]: Class_Tags?;
["Superclass"]:string;
["Name"]:string;
["MemoryCategory"]:"Animation"|"GraphicsTexture"|"Gui"|"Instances"|"Internal"|"PhysicsParts"|"Script";
["Members"]:{
[number]:{
["Capabilities"]:{
[number]:{
[number]:Capabilities
}|{
["Read"]:{
[number]:Capabilities
};
["Write"]:{
[number]:Capabilities
}
}
}?;
["Category"]:string?;
["MemberType"]:"Callback"|"Event"|"Function"|"Property";
["Name"]:string;
["Parameters"]:{
[number]:{
["Name"]:string;
["Type"]:Value_Type
}
}?;
["ReturnType"]:Value_Type?;
["Security"]:SecurityMethods|{
["Read"]:SecurityMethods|{};
["Write"]:SecurityMethods|{}
};
["Serialization"]:{
["CanLoad"]:boolean;
["CanSave"]:boolean
}?;
["Tags"]:Class_Tags?;
["ThreadSafety"]:Thread_Safety;
["ValueType"]:{
["Category"]:"Class"|"DataType"|"Enum"|"Primitive";
["Name"]:string;
}?;
}
};
}
}
type AllRobloxEnums = {
[number]:{
Name:string;
Items:{
[number]:{Name:string;Value:number}
};
Tags:Class_Tags?
}
}
type API_Dump = {
Classes:AllRobloxClasses;
Enums:AllRobloxEnums;
Version:number
}
type FormattedClass = {
[string]:string
}
type FormattedClasses = {
[string]:FormattedClass
}
-- i think there is a few more types that i missed
local TranslateProperties:FormattedClass = {
["bool"]="boolean";
["int"]="number";
["float"]="number";
["double"]="number";
["int32"]="number";
["int64"]="number";
["int16"]="number";
["int8"]="number";
}
local success,ret = pcall(HttpService.GetAsync,HttpService,"https://raw.githubusercontent.com/MaximumADHD/Roblox-Client-Tracker/refs/heads/roblox/API-Dump.json")
--Im still standing ahhh loop ๐ฅ๐ฅ๐ฅ
while success~=true do
success,ret = pcall(HttpService.GetAsync,HttpService,"https://raw.githubusercontent.com/MaximumADHD/Roblox-Client-Tracker/refs/heads/roblox/API-Dump.json")
end
local Data:API_Dump = HttpService:JSONDecode(ret)
local raw_Classes:AllRobloxClasses = Data.Classes
local Enums:AllRobloxEnums = Data.Enums
local Classes:FormattedClasses = {}
local function RecursiveSuperclassProperties(class:FormattedClass,Superclass:string?):FormattedClass
if Superclass==nil then return class end
local search:number? = nil
for i,v in raw_Classes do
if v.Name==Superclass then search=i break end
end
if search==nil then return class end
for i,v in raw_Classes[search].Members do
if v.MemberType~="Property" then continue end
if v.Security~="None" and (v.Security.Write~="None" or v.Security.Read~="None") then continue end
if v.ValueType==nil then continue end
if v.Tags~=nil and (table.find(v.Tags,"ReadOnly")~=nil or table.find(v.Tags,"NotScriptable")~=nil) then continue end
class[v.Name]=(v.ValueType.Category=="Class" and "Instance") or (v.ValueType.Category=="Enum" and `Enum.{v.ValueType.Name}`) or (TranslateProperties[v.ValueType.Name] or v.ValueType.Name)
end
RecursiveSuperclassProperties(class,raw_Classes[search].Superclass)
return class
end
for i,v in raw_Classes do
if v.MemoryCategory~="Instances" then continue end
if v.Tags~=nil and (table.find(v.Tags,"NotCreatable")~=nil or table.find(v.Tags,"NotScriptable")~=nil) then continue end
local tab:FormattedClass = {}
for ii,vv in v.Members do
if vv.MemberType~="Property" then continue end
if vv.Security~="None" and (vv.Security.Write~="None" or vv.Security.Read~="None") then continue end
if vv.ValueType==nil then continue end
if vv.Tags~=nil and (table.find(vv.Tags,"ReadOnly")~=nil or table.find(vv.Tags,"NotScriptable")~=nil) then continue end
tab[vv.Name]=(vv.ValueType.Category=="Class" and "Instance") or (vv.ValueType.Category=="Enum" and `Enum.{vv.ValueType.Name}`) or (TranslateProperties[vv.ValueType.Name] or vv.ValueType.Name)
end
Classes[v.Name]=RecursiveSuperclassProperties(tab,v.Superclass)
end
-- Man im dead ๐ฅ๐ฅ๐ฅ๐
return Classes
I wrote this post on mobile btw 

I were writing a plugin relates to classesโ:money_mouth_face:
Cuz i havenโt found anybody use this method and use it properly there so i made a post
And now you can do:
local module = require("./HelpMePlz")
local part = Instance.new("Part")
print(module[part.ClassName]) ---> returns all properties.
You could also get properties that is read only etc but you can already do that yourself because i provided you types and i will provide you info here also:
Also you probably want to change recursive function into a loop cuz yk recursive is meh.
.Superclass [[
Basically your instance has ALL properties of its Superclass and Superclassโs superclass and so on
]]
.Tags [[
Such as //depeacated //read only and so on
You may see them appear in documentation too
]]
MemoryCategory [[Just a category of Instance]]
.Members [[
Properties of your superclass
- . Serialization studio related voodoo that basically depends on can Instance be saved or nah
- .Tags same as the ones i mentioned above
- .Capabilities relative new Sandbox feature roblox has added i would say a lil expiriemental
- .Name of our peoperty/function/event
- .ValueType type of property (nil if its not a property)
- .Security basically perms of instance is it a resd only/write only or None (if its none then no restrictikns)
- .ReturnType type that event/function (not sure) returns
- .Parameters function parameters (nil if its not a function)
- .MemberType determines if its a Property/Event/Function
- .ThreadSafety not really sure what is it but i assume its parallel Luau thing
]]
.Name its a name of Instance bruh
I canโt not sneaking a joke everywhere im sorry if it makes post feel unprofessional to you.I just feel that adding jokes makes learning better and having more soul to it yk.