Skip to main content
This page gives you a practical overview of what TS-Lib exposes at runtime once you include @ts-lib/import.lua in your resource.

Core utilities

TS-Lib attaches a few helpers to a global TS table that are reused across Thunder Scripts.

Logging

  • Utils.Print(message, resourceName?)
  • Utils.DebugPrint(message, resourceName?)
  • Utils.ErrorPrint(message, resourceName?)
  • Utils.SuccessPrint(message, resourceName?)

Generic utils

Common helpers include:
  • Utils.IsRessourceLoaded(resourceName): boolean
  • Utils.IsTableEmpty(tbl): boolean

Intervals

TS-Lib embeds an interval helper to simplify repeating callbacks:
  • TS.Intervals.Set(callback, ms, ...): id
  • TS.Intervals.Clear(id)

UI helpers

TS-Lib exposes small, framework-agnostic UI helpers through TS.Lib.*.
These are rendered via the bundled NUI (ui/build).

Subtitle

  • TS.Lib.Subtitle.Show(text: string)
  • TS.Lib.Subtitle.Hide()
From a client script that has included @ts-lib/import.lua:
From another resource using exports only:

Text UI (help text)

  • TS.Lib.TextUI.Show(text: string, position?: string)
  • TS.Lib.TextUI.Hide()
position defaults to 'top-left'. Common positions used by the UI are:
  • top-left
  • top-center
Example from a client script:
Or via exports:

Text Input

  • TS.Lib.TextInput(data: table): table
Opens a NUI-based text input dialog and returns the user’s input.
Or via exports:

Command System

TS-Lib provides a unified command registration system with built-in type validation and permission support.
  • TS.Lib.Command.add(commandName, properties, callback)

Parameter Types


Server Utilities

Update Checker

  • TS.CheckUpdate(versionUrl, changelogUrl?)
Checks for updates by fetching a version JSON from a remote URL. Shows a formatted console box if outdated.
The version JSON should look like:

Bridge Helpers

  • TS.Bridge.GetPlayers(): table - Returns a list of player sources
  • TS.Bridge.HasPermission(source, permission): boolean - Checks if player has a permission (uses framework bridge or ACE as fallback)

Bridges overview

The main reason to use TS-Lib is its bridge modules. They expose normalized APIs that hide framework-specific or script-specific details.
  • Bridge.Framework.* → talks to your framework (QBCore / ESX / QBox / standalone)
  • Bridge.Garages.* → talks to your garage script
  • Bridge.VehicleKeys.* → talks to your vehicle keys script
  • Bridge.Notify.* → unified notification system
Each bridge has its own dedicated page with full details: Below are the patterns you will most often use from a script that depends on TS-Lib.

Framework bridge (quick reference)

Client

  • Bridge.Framework.Client.PlayerData
    Unified player data, automatically updated when the player loads / unloads / changes job.
  • Bridge.Framework.Client.Functions.GetPlayerJob() -> ok, jobOrError
  • Bridge.Framework.Client.Functions.Notify(message, type?)

Server

  • Bridge.Framework.Server.Functions.GetPlayerJob(source)
  • Bridge.Framework.Server.Functions.GetPlayersByJobName(jobName, checkOnDuty?)
  • Bridge.Framework.Server.Functions.GetPlayers()
  • Bridge.Framework.Server.Functions.GetVehicleType(model)
  • Bridge.Framework.Server.Functions.HasPermission(source, permission)
See Framework Bridge for framework-specific notes and event names.

Garage bridge (quick reference)

Server

  • Bridge.Garages.Server.Functions.IsVehicleOwned(plate, netId?) -> boolean
  • Bridge.Garages.Server.Functions.SetVehicleOutsideState(plate, state)
See Garage Bridges for the exact behavior per system.

Vehicle keys bridge (quick reference)

The keys bridge focuses on locking / unlocking vehicles from a unified entrypoint.

Client

  • Bridge.VehicleKeys.Client.Functions.SetDoorStatus(entity, lockStatus)
Lock states follow GTA’s native semantics (1 = unlocked, 2 = locked, 4 = locked for all players, etc.). See Vehicle Keys Bridges for system-specific behavior (qb-vehiclekeys, qs-vehiclekeys, standalone).

Notify bridge (quick reference)

The notify bridge provides a unified way to send notifications across different frameworks.

Client

  • Bridge.Notify.Client.Functions.Notify(message, type?)
Supported types vary by framework:
  • QBCore: success, error, warning, info (or any custom type)
  • ESX: Uses ESX notification system
See Notify Bridge for more details.
Last modified on July 22, 2026