Reference API Roblox

Engine API

Website

Related

Reference API Roblox

ServiceProvider

A ServiceProvider is an abstract class, which stores, and provides certain singleton classes, depending on what inherited class you are using its members with.

This class is not creatable. Instances of this class cannot be created with Instance.new.
This class is not browsable. It is not visible in Studio's object browser.
Tags: [NotCreatable, NotBrowsable]

Member index 8

HistoryMember
497FindService(className: string): Instance
494GetService(className: string): Instance
553getService(className: string): Instance
553service(className: string): Instance
462Close()
462CloseLate()
462ServiceAdded(service: Instance)
462ServiceRemoving(service: Instance)
inherited from Instance
553Archivable: bool
670Capabilities: SecurityCapabilities
723IsInSandbox: bool
553Name: string
553Parent: Instance
702PredictionMode: PredictionMode
670Sandboxed: bool
680UniqueId: UniqueId
576AddTag(tag: string): null
573ClearAllChildren(): null
462Clone(): Instance
573Destroy(): null
486FindFirstAncestor(name: string): Instance
486FindFirstAncestorOfClass(className: string): Instance
486FindFirstAncestorWhichIsA(className: string): Instance
486FindFirstChild(name: string, recursive: bool = false): Instance
486FindFirstChildOfClass(className: string): Instance
486FindFirstChildWhichIsA(className: string, recursive: bool = false): Instance
486FindFirstDescendant(name: string): Instance
563GetActor(): Actor
486GetAttribute(attribute: string): Variant
462GetAttributeChangedSignal(attribute: string): RBXScriptSignal
631GetAttributes(): Dictionary
648GetChildren(): Instances
462GetDebugId(scopeLength: int = 4): string
707GetDescendants(): Instances
486GetFullName(): string
706GetStyled(name: string, selector: string?): Variant
657GetStyledPropertyChangedSignal(property: string): RBXScriptSignal
576GetTags(): Array
576HasTag(tag: string): bool
486IsAncestorOf(descendant: Instance): bool
486IsDescendantOf(ancestor: Instance): bool
664IsPropertyModified(property: string): bool
698QueryDescendants(selector: string): Instances
573Remove(): null
576RemoveTag(tag: string): null
664ResetPropertyToDefault(property: string): null
573SetAttribute(attribute: string, value: Variant): null
462WaitForChild(childName: string, timeOut: double): Instance
648children(): Instances
553clone(): Instance
573destroy(): null
553findFirstChild(name: string, recursive: bool = false): Instance
648getChildren(): Instances
553isDescendantOf(ancestor: Instance): bool
573remove(): null
462AncestryChanged(child: Instance, parent: Instance)
462AttributeChanged(attribute: string)
462ChildAdded(child: Instance)
462ChildRemoved(child: Instance)
462DescendantAdded(descendant: Instance)
462DescendantRemoving(descendant: Instance)
500Destroying()
657StyledPropertiesChanged()
553childAdded(child: Instance)
inherited from Object
647ClassName: string
647className: string
647GetPropertyChangedSignal(property: string): RBXScriptSignal
647IsA(className: string): bool
650isA(className: string): bool
647Changed(property: string)

Description

A ServiceProvider is an abstract base class that manages a registry of singleton service instances. The DataModel (accessible in Lua as game) is the primary ServiceProvider in an experience. Services are created lazily the first time they are requested via ServiceProvider:GetService() and remain available for the lifetime of the DataModel.

You do not create ServiceProvider instances directly; instead you interact with its members through the DataModel.

History 26

Members 8

Close

Parameters (0)
No parameters.

Fires when the game instance is shutting down, immediately before services and instances are torn down. On the server this occurs when the last player leaves or the server is closed; on the client it fires when the player leaves the experience.

Connect to this event to perform final cleanup such as saving player data with DataStoreService. Handlers run synchronously — the engine waits for all connected callbacks to return before proceeding with shutdown.

History 2

CloseLate

Parameters (0)
No parameters.

History 2

FindService

Parameters (1)
classNamestring
Returns (1)
Instance

Returns the service with the given class name only if it has already been created. Unlike ServiceProvider:GetService(), this method does not create the service when it does not yet exist; it returns nil instead. If className is not a valid service name, the method throws an error.

This method is thread-safe and can be called from any thread context. It is useful when you need to check whether a service is present without triggering its initialization, for example during cleanup or conditional logic that should not force service creation.

History 5

GetService

Parameters (1)
classNamestring
Returns (1)
Instance

Returns a service with the class name requested. When called with the name of a service (such as Debris) it will return the instance of that service. If the service does not yet exist it will be created and the new service is returned. This is the only way to create some services, and can also be used for services that have unusual names, e.g. RunService's name is "Run Service".

Note:

  • This function will return nil if the className parameter is an existing class, but the class is not a service.
  • If you attempt to fetch a service that is present under another Object, an error will be thrown stating that the "singleton serviceName already exists".

History 5

ServiceAdded

Parameters (1)
serviceInstance

Fires after a service is added to the DataModel. The service parameter is the Instance of the newly added service. Because services are created lazily (the first time ServiceProvider:GetService() is called for them), this event lets you react to a service becoming available without polling for it.

History 2

ServiceRemoving

Parameters (1)
serviceInstance

Fires just before a service is removed from the DataModel. The service parameter is the Instance that is about to be removed. This event fires during DataModel teardown, giving listeners a chance to disconnect from the service or release references before the service is destroyed.

History 2

getService

Parameters (1)
classNamestring
Returns (1)
Instance
This function is deprecated. It exists only for backward compatibility, and should not be used for new work. GetService should be used instead.

History 3

Tags: [Deprecated]

service

Parameters (1)
classNamestring
Returns (1)
Instance
This function is deprecated. It exists only for backward compatibility, and should not be used for new work. GetService should be used instead.

History 4

Tags: [Deprecated]

Settings