Skip to content

Introduction

ARS CarPlay is an in-vehicle infotainment system for FiveM servers. It renders a tablet-style dashboard (Apple CarPlay inspired) that opens with a configurable keybind (default F6) while you are driving. The UI is built with Preact + TypeScript and scales to any resolution via CSS transform: scale().

The resource ships as an escrow-safe Lua backend (no require(), load-ordered via fxmanifest.lua) plus a Preact NUI frontend (pre-built, included in the download). All framework-specific logic lives behind a unified Bridge global so feature code stays framework-agnostic.

  • CarPlay Dashboard — Tablet form-factor UI with status bar, app grid, and persistent dock. Opens for the driver seat only; respects vehicle class blacklist (bikes, boats, aircraft disabled by default) and auto-closes on exit.
  • Music App — Play direct audio URLs (mp3/ogg/m3u8) and YouTube links. Playlist persists in browser localStorage. Optional 3D positional audio so passengers and nearby players hear the music fade with distance. Auto-advance on track end.
  • Vehicle App — Engine toggle, all doors (FL/FR/RL/RR/hood/trunk), side windows, headlight cycle (off → low → high), live fuel gauge (auto-detects 11+ fuel systems), engine & body health gauges. Pure GTA natives — no extra resources.
  • Navigation App — Live driving readout (street, crossing, speed, 8-point compass heading), nearby POI search (fuel, hospital, Ammu-Nation, police, mechanic via map blips), set/clear GTA GPS waypoint.
  • Radio App — Dual-mode: FM presets (GTA native stations, no deps) + Internet radio streams via Radio Browser API (thousands of stations, cached on server). Internet streams use the same xsound positional path as Music.
  • Weather widget — Current weather type + approximated temperature + coarse region label (Los Santos, Sandy Shores, etc.) using natives only. Weather is a Home dashboard widget, not a dock app (there is no weather key in Config.CarPlay.apps).
  • Home / Phone / Messages / Settings Apps — Home dashboard with quick actions; Phone/Messages placeholders for future integration; Settings persists layout, last app, speed unit, and tablet position per vehicle or per player.
  • Frameworks — QBCore (qb-core), QBox (qbx_core), ESX (es_extended). Auto-detected or pinned in config.lua.
  • Dependenciesox_lib (locales, callbacks, notifications, keybinds) — required. xsoundrequired for Music/Internet Radio audio (server-side exports sync positional audio to nearby players). oxmysqloptional soft-dependency for vehicle ownership checks (plate-scoped settings persistence).

Settings (layout, last app, speed unit, tablet position) persist via browser localStorage backed by an in-memory server KV cache.

  • Per-plate scope (default) — Each owned vehicle remembers its own settings (durable via localStorage). NPC/unowned vehicles stay in server memory only (cleared on restart).
  • Per-player scope (optional) — One preference set follows the character everywhere (always persists).
  • Ownership checked via Bridge.IsVehicleOwned (queries player_vehicles for QB/QBX, owned_vehicles for ESX) with a configurable fallback when oxmysql is absent.
  • ox_lib (ensure started before ars_carplay)
  • xsound (ensure started before ars_carplay — audio backend)
  • One of: QBCore (qb-core), QBox (qbx_core), or ESX (es_extended)
  • oxmysql (optional, for ownership-gated persistence)
  • (NUI is pre-built — no build tools needed on the server)
Command Description
/carplay Toggle the CarPlay dashboard (default keybind: F6, remappable in GTA Settings → Key Bindings → FiveM).

None — all configuration is via config.lua (buyer-editable, listed in escrow_ignore).

Table Framework Purpose
player_vehicles QBCore / QBox Vehicle ownership check for plate-scoped persistence
owned_vehicles ESX Vehicle ownership check for plate-scoped persistence

Note: These tables are only read (never written) by ars_carplay. oxmysql is a soft dependency — if not started, ownership falls back to Config.CarPlay.ownership.fallbackOwned (default true).


Note: This guide is written by a third party. If you find any incorrect or outdated information, please contact us on Discord so we can update it for you.