[DEPRECATED] ClassIcon2 - a lightweight modern class icon solution

ClassIcon2 is now deprecated

In a recent update to modernize the Explorer in Luau, Roblox has now fixed StudioService:GetClassIcon. It now properly returns new icons as well as adjust for dark/light mode.

Introduction

Roblox has a method for getting explorer class icons. Ironically, this method is a bit outdated. I created ClassIcon2 to solve this!

ClassIcon2

ClassIcon2 is a modern approach to getting the icons for classes in Roblox! Small, fast, dev-friendly, and it’s much better than Roblox’s available methods.

Roblox’s method (StudioService:GetClassIcon):

  • Still relies on the old ClassIcons.png spritesheet if it needs to fallback to an icon that doesn’t exist in the icon folder.
  • Can’t get a themed (Dark or Light) icon
  • Can’t get the 2x and 3x sized variants of icons

My method:

  • Does what Roblox’s doesn’t

So why not try it? You can get it here for free:

Icon Guide

Need to try out the module? Well, here’s a lot of names you can use!
(NOTE: Not all icons may work. Also, there’s like 250 entries here so don’t unfold the dropdown unless you want to see it all.)

Icon List

Accessory
Actor
AdGui
AdPortal
AirController
Animation
AnimationConstraint
AnimationController
AnimationFromVideoCreatorService
Animator
ArcHandles
Atmosphere
AudioAnalyzer
AudioChorus
AudioCompressor
AudioDeviceInput
AudioDeviceOutput
AudioDistortion
AudioEcho
AudioEmitter
AudioEqualizer
AudioFader
AudioFlanger
AudioListener
AudioPitchShifter
AudioPlayer
AudioReverb
AvatarEditorService
Backpack
BallSocketConstraint
BasePlate
BillboardGui
BindableEvent
BindableFunction
BlockMesh
BloomEffect
BlurEffect
BodyAngularVelocity
BodyColors
BodyForce
BodyGyro
BodyPosition
BodyThrust
BodyVelocity
Bone
BoolValue
BoxHandleAdornment
BrickColorValue
BubbleChatConfiguration
Buggaroo
Camera
CanvasGroup
CFrameValue
CharacterControllerManager
CharacterMesh
Chat
ChatInputBarConfiguration
ChatWindowConfiguration
ChorusSoundEffect
Class
ClickDetector
ClientReplicator
ClimbController
Clouds
Color
ColorCorrectionEffect
CompressorSoundEffect
ConeHandleAdornment
Configuration
Constant
Constructor
CoreGui
CornerWedgePart
CylinderHandleAdornment
CylindricalConstraint
Decal
DepthOfFieldEffect
Dialog
DialogChoice
DistortionSoundEffect
EchoSoundEffect
EditableImage
EditableMesh
Enum
EnumMember
EqualizerSoundEffect
Event
FaceControls
Field
File
FlangeSoundEffect
Folder
ForceField
Frame
Function
GroundController
Handles
HapticService
HeightmapImporterService
Highlight
HingeConstraint
Humanoid
HumanoidDescription
IKControl
ImageButton
ImageHandleAdornment
ImageLabel
Interface
Keyword
Lighting
LineHandleAdornment
LocalFile
LocalizationService
LocalizationTable
LocalScript
MaterialService
MaterialVariant
MemoryStoreService
MeshPart
Meshparts
MessagingService
Method
Model
Modelgroups
Module
ModuleScript
Motor6D
NetworkClient
NoCollisionConstraint
Operator
PackageLink
Pants
Part
PathfindingLink
PathfindingModifier
PathfindingService
PitchShiftSoundEffect
Place
Plane
Players
PluginGuiService
PrismaticConstraint
Property
ProximityPrompt
PublishService
Reference
RemoteEvent
RemoteFunction
RenderingTest
ReplicatedFirst
ReplicatedScriptService
ReplicatedStorage
ReverbSoundEffect
RigidConstraint
RobloxPluginGuiService
RocketPropulsion
RodConstraint
RopeConstraint
ScreenGui
Script
ScrollingFrame
Seat
Selected_Workspace
SelectionBox
SelectionSphere
ServerScriptService
ServerStorage
Shirt
ShirtGraphic
SkinnedMeshPart
Sky
Snap
Snippet
SocialService
Sound
SoundEffect
SoundGroup
SoundService
SpawnLocation
SpecialMesh
SphereHandleAdornment
SpringConstraint
StandalonePluginScripts
StarterCharacterScripts
StarterGui
StarterPack
StarterPlayer
StarterPlayerScripts
Struct
SunRaysEffect
SurfaceAppearance
SurfaceGui
SurfaceSelection
SwimController
Team
Teams
Terrain
TerrainDetail
TestService
TextBox
TextBoxService
TextButton
TextChannel
TextChatCommand
TextChatService
TextLabel
TextString
Texture
Tool
TorsionSpringConstraint
TremoloSoundEffect
TrussPart
TypeParameter
UGCValidationService
UIAspectRatioConstraint
UICorner
UIGradient
UIGridLayout
UIListLayout
UIPadding
UIPageLayout
UIScale
UISizeConstraint
UIStroke
UITableLayout
UITextSizeConstraint
Unit
UniversalConstraint
UnreliableRemoteEvent
UpdateAvailable
UserService
Value
Variable
VehicleSeat
VideoFrame
ViewportFrame
VirtualUser
VoiceChannel
Voicechat
VoiceChatService
WedgePart
Weld
WeldConstraint
Wire
WireframeHandleAdornment
Workspace
WorldModel
WrapLayer
WrapTarget

Still not convinced to use this?

Well, do what you want. If you aren’t a fan of this, you might want to check out my other release that would likely benefit your development. Enjoy!

10 Likes

I made a PR about making two parameters optional [those being iconSize and studioTheme]

Edit: found out that it got merged

All seemed well until I published the game and played it on the Roblox player. The icons turn invisible. Any fix for this?

This will break very quickly if the icon format changes… this would be better as a feature request :slight_smile:

I was going to make a feature request for this while writing this thread originally. However, I didn’t have (and still don’t have) permissions to send feature requests due to it being limited to Regulars only. However, if I could post in #feature-requests, I absolutely would write up a detailed feature request.

Edit: Apparently, I just found out that you can request access to Feature Requests. Previously, I had assumed that making feature requests was limited to “Regulars” or whatever it’s called. I recognize my mistake, sorry about that.