Skip to content

ServiceProvider

Supported Class Other NotBrowsable NotCreatable

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

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.

Inheritance

Object → Instance → ServiceProvider

Nova inheritance: Instance → ServiceProvider

Known subclasses: DataModel, GenericSettings

Methods

FindService Supported Function Returns the service specified by the given className if it's already created, errors for an invalid name.
ServiceProvider:FindService(string className): Instance

Returns the service specified by the given className if it's already created, errors for an invalid name.

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.

Roblox reference signature
ServiceProvider:FindService(className: string): Instance

Roblox documentation

GetService Supported Function Returns the service with the requested class name, creating it if it does not exist.
ServiceProvider:GetService(string className): Instance

Returns the service with the requested class name, creating it if it does not exist.

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".
Roblox reference signature
ServiceProvider:GetService(className: string): Instance

Roblox documentation

getService Supported Function Deprecated
ServiceProvider:getService(string className): Instance

No description available.

Roblox reference signature
ServiceProvider:getService(className: string): Instance
Nova behaviour: Nova keeps this legacy member for compatibility. Roblox's modern deprecation wording may describe later Roblox behaviour; verify it against Nova before relying on the copied text.

Roblox documentation

service Supported Function Deprecated Use GetService() instead
ServiceProvider:service(string className): Instance

Use GetService() instead

Roblox reference signature
ServiceProvider:service(className: string): Instance
Nova behaviour: Nova keeps this legacy member for compatibility. Roblox's modern deprecation wording may describe later Roblox behaviour; verify it against Nova before relying on the copied text.

Roblox documentation

Events

Close Supported Event Fires when the current place is exited.
Close()

Fires when the current place is exited.

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.

Roblox documentation

CloseLate Supported Event
CloseLate()

No description available.

Security: LocalUserSecurity

Roblox documentation

ServiceAdded Supported Event Fired when a service is created.
ServiceAdded(Instance service)

Fired when a service is created.

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.

Roblox reference signature
ServiceAdded(service: Instance)

Roblox documentation

ServiceRemoving Supported Event Fired when a service is about to be removed.
ServiceRemoving(Instance service)

Fired when a service is about to be removed.

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.

Roblox reference signature
ServiceRemoving(service: Instance)

Roblox documentation

Inherited members

Inherited from Instance: 8 properties, 36 methods, 7 events. They are documented on the base class page.

Roblox reference: ServiceProvider

Generated from Nova's API dump and Roblox creator-docs. Nova-only members come from the engine's reflection metadata.