In what services can RemoteEvents fire?

All I am asking here is which services are RemoteEvents able to fire from, I tried services such as ContextActionService, etc. (ContextAction allowed for the client to fire it, and then the server failed to receive, however I believe I already know why.)

This is NOT for remote security, but rather for a different reason.

I am only looking for obscure services where Remotes can be found by the client and received by the server.

Thank you.

I used the api dump on github for this, and it spat out a rather surprisingly small list of services that will actually work with remote events:

Edit: It has been ~24 hours since the release of UnreliableRemoteEvents and I have since retested this with the same result.

{
  [1] = "StarterGui",
  [2] = "Chat",
  [3] = "FriendService",
  [4] = "InsertService", --!?!?!
  [5] = "JointsService", --????? honestly surprised that either of these work
  [6] = "Lighting",
  [7] = "LocalizationService",
  [8] = "MarketplaceService",
  [9] = "MaterialService",
  [10] = "Workspace",
  [11] = "Players",
  [12] = "ProximityPromptService",
  [13] = "ReplicatedStorage",
  [14] = "SoundService",
  [15] = "StarterPack",
  [16] = "StarterPlayer",
  [17] = "Teams",
  [18] = "TestService",
  [19] = "TextChatService",
  [20] = "VoiceChatService"
}

Unsurprisingly, most other services either have too high of a script security to be accessed by a script, or just arent a child of game at all (which makes it impossible to get using game:GetService()).

I did find a really weird bug though; if you try to create an instance under LiveScriptingService, RemoteCursorService or ScriptCommitService. Roblox studio just… crashes, I will most likely make a bug report on that soon but yeah.

Anyways,
You can generate this yourself using the small script I made if you’d like, it will also give you all the services that failed to work and why inside of their own respective tables.

Server:

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TryFiring = Instance.new("RemoteFunction", ReplicatedStorage)
TryFiring.Name = "TryFiring"

local HttpService = game:GetService("HttpService")
print("Grabbing API dump.")
local ApiDump = HttpService:GetAsync("https://raw.githubusercontent.co".."m/MaximumADHD/Roblox-Client-Tracker/roblox/API-Dump.json") --split the string so that devforum would let me send the message
print("Decoding JSON.")
local JSONDecode = HttpService:JSONDecode(ApiDump)

local Services = {}

print("Indexing Classes.")
for _, Class in JSONDecode.Classes do
	if not Class.Tags then
		continue
	end
	
	if not table.find(Class.Tags, "Service") then
		continue
	end
	
	if table.find(Services, Class.Name) then
		continue
	end
	
	table.insert(Services, Class.Name)
end
 
local FailedToCreate = {}
local ServiceRemotes = {}
local CurrentlyInstancing = nil

print("Instancing Remotes.")
for _, ServiceName in Services do
	local _, FailedCreation = pcall(function ()
		if ServiceName == "LiveScriptingService" or ServiceName == "RemoteCursorService" or ServiceName == "ScriptCommitService" then 
			return -- stops studio from crashing... for some reason? I really can't tell you why, but it does!
		end
		
		CurrentlyInstancing = game:GetService(ServiceName)
			
		local ServiceRemote = Instance.new("RemoteEvent", CurrentlyInstancing)
		ServiceRemote.Name = CurrentlyInstancing.Name
			
		ServiceRemotes[ServiceRemote.Name] = ServiceRemote
	end)
		
	if FailedCreation then
		warn("Failed to create remote for service '"..ServiceName.."'.")
		FailedToCreate[ServiceName] = FailedCreation
	end
end

local Recieved = {}
print("Firing Remotes.")
for _, Remote in ServiceRemotes do
	Remote.OnServerEvent:Once(function ()
		table.insert(Recieved, Remote.Name)
	end)
end

local FailedToFire = {}
local Players = game:GetService("Players"):GetPlayers()
local FailedToFire = TryFiring:InvokeClient(Players[1], Services)

task.wait(3) -- wait for any extra remotes that may still be firing

local CompletedTable = {
	CompletedSucessfully = Recieved;
	FailedToCreate = FailedToCreate;
	FailedToFire = FailedToFire;
}

print(CompletedTable)

Client:

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TryFiring: RemoteFunction = ReplicatedStorage:WaitForChild("TryFiring")

local FailedToFire = {}
function OnFire(ServiceTable: {string})
	for _, ServiceName in ServiceTable do
		
		local _, Error = pcall(function ()
			local Remote = game:GetService(ServiceName):WaitForChild(ServiceName, .1)
			
			if not Remote then
				error("Couldn't grab remote from service.")
			end
			
			Remote:FireServer()
		end)
		
		if Error then
			FailedToFire[ServiceName] = Error
		end
	 	
	end	
	
	return FailedToFire
end

TryFiring.OnClientInvoke = OnFire

Useful, but the two seemingly most obscure services here are actually commonly used in what I’m doing, however some of these arent even though they seem common (excluding workspace and all the basic services).

Regardless, thank you!

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.