Skip to main content
Home
Shop
Free Mods
Tools
Bundles
Full Servers
  1. Home
  2. Blog
  3. Troubleshooting

FiveM Phone Scripts Troubleshooting FAQ: 12 Common Issues Fixed

Published on March 30, 2026·by Lars Miller(Founder & Lead Editor)·Credentials·7 min read·Updated on April 17, 2026
Troubleshootingfivem phone not opening

Phone scripts are the most feature-rich resources on a FiveM server — messaging, calls, social media, GPS, and a dozen apps in one bundle. More features mean more failure surface. This guide covers the 12 most common phone failures on ESX, QBCore, and QBox with diagnostic steps and working code.

FiveM Phone Scripts Troubleshooting FAQ: 12 Common Issues Fixed
FiveM Phone Scripts Troubleshooting FAQ: 12 Common Issues Fixed

Phone scripts are the most feature-rich resources on a FiveM server. Messaging, calls, social media, GPS, camera, app store, dark mode — often a dozen apps in one bundle. The feature surface means more failure surface. When any single app breaks, the phone looks entirely broken to players.

This guide walks through the twelve phone script failures we see most often across qs-smartphone, npwd, lb-phone, and the QBCore/ESX defaults. Each section covers how to diagnose the root cause, the fix that resolves it in most cases, and the integration edge case that catches experienced admins.

Quick Diagnosis Table

Symptom-to-cause mapping

FiveM Phone Scripts Comparison and Features

Before diving into individual issues, match the symptom you see to the most likely root cause.

SymptomMost likely causeFirst thing to check
Keybind does nothingResource not started / no phone itemF8 console + inventory
Phone opens blankNUI build skippednpm run build in resource folder
Contacts emptyIdentifier mismatchSELECT owner FROM phone_contacts
Messages don't sendSQL schema mismatchServer console for SQL errors
Camera black screenscreenshot-basic missingensure screenshot-basic
Social feed blankApp tables missingRe-run phone SQL install
App store errorsApp metadata driftRe-run phone migration SQL
GPS does nothingOther script clearing waypointsHUD/minimap scripts disabled
Calls don't connectVOIP resource integrationVoice resource ensure order
No notification soundsNUI audio autoplay blockF8 devtools warnings
Dark mode doesn't persistlocalStorage clearedStore server-side instead
Custom app missingApp not in manifestGrep resource for app name
Billing app brokenEvent name mismatchBilling resource events

Use this table as a triage filter. Once you've narrowed the bucket, jump to the detailed section below.

1. Phone Not Opening

Symptoms and first checks

When the phone keybind does nothing, start with the basics: is the resource running, is the NUI built, and does the player meet the phone's requirements?

-- Test in F8 console
start qs-smartphone  -- or your phone resource name

If this fails with couldn't find resource, the resource isn't installed. If it starts but the phone still doesn't open, check F8 for NUI errors.

Fix checklist, in order:

  1. Resource is ensure-ed in server.cfg after your framework
  2. NUI build step completed:
cd resources/[phone]/qs-smartphone/
npm install
npm run build
  1. Player has a phone item in inventory (if required):
-- QBCore: qb-core/shared/items.lua
['phone'] = {
    ['name'] = 'phone',
    ['label'] = 'Phone',
    ['weight'] = 500,
    ['type'] = 'item'
},
  1. No NUI errors in F8 console — press F8, open DevTools, check both Console and Network panels.

Modern phone scripts (qs-smartphone, npwd, lb-phone) all use React or Vue and require a build step. Skipping npm run build is the single most common install mistake.

2. Contacts Missing

Symptoms and first checks

Contacts live in a database table, typically phone_contacts or phone_contacts_<framework>. Verify the table is populated:

SELECT COUNT(*) FROM phone_contacts WHERE identifier = 'YOUR_IDENTIFIER';
DESCRIBE phone_contacts;

If the table exists but contacts don't load for a specific player, the identifier format has drifted. Servers that migrated from Steam hex to license IDs or to citizen IDs need to migrate their phone_contacts owner columns:

-- Example: migrate steam: to citizenid
UPDATE phone_contacts pc
JOIN players p ON p.identifier = pc.identifier
SET pc.identifier = p.citizenid
WHERE pc.identifier LIKE 'steam:%';

Always back up the table before running migrations.

3. Messages Not Sending

Symptoms and first checks

Message failures are almost always SQL errors in the phone_messages insert. Three common causes:

  • Column name mismatch — the script expects sender_identifier but the table has senderIdentifier
  • Missing NOT NULL column — a recent phone update added a read_status column that's NOT NULL with no default
  • Foreign key violation — the receiver phone number isn't registered, so the FK constraint rejects the insert

Test a direct insert to isolate:

INSERT INTO phone_messages (sender, receiver, message, date)
VALUES ('1001', '1002', 'Test message', NOW());

If that works, the phone script is wrong. If it fails, the schema is wrong.

Enable SQL error logging in your server config so silent failures become loud ones.

4. Camera App Crashes

Symptoms and first checks

The phone camera uses screenshot-basic to capture and upload images. Without it, the camera crashes on first use.

# server.cfg
ensure screenshot-basic
ensure qs-smartphone

Configure screenshot-basic with an upload destination. Most phone scripts use Imgur, some use custom upload endpoints. Check the phone's camera config:

Config.ScreenshotResource = 'screenshot-basic'
Config.ScreenshotUploader = 'imgur' -- or 'custom'
Config.ImgurClientId = 'your-client-id'

A missing Imgur client ID produces a silent failure — the screenshot captures but never uploads. Watch the server console when taking a photo.

5. Social Media Not Loading

Symptoms and first checks

Twitter/Instagram clones in phone scripts are self-contained apps with their own tables. If the feed loads blank:

SELECT COUNT(*) FROM phone_twitter;
SELECT * FROM phone_twitter_accounts WHERE identifier = 'YOUR_IDENTIFIER';

If the table is missing entirely, re-run the phone script's SQL install file. Most phones bundle all app tables into a single phone.sql that creates everything — running it is safe (uses CREATE TABLE IF NOT EXISTS).

If tables exist but data doesn't show, check F8 DevTools Network tab for CORS errors or failed iframe loads. Some phones load social media apps in sandboxed iframes that need explicit permission.

6. App Store Errors

Symptoms and first checks

App store errors come from app metadata drift. Each installable app needs a valid entry:

ColumnRequiredNotes
nameYesMatches app folder
labelYesDisplay name
iconYesPath to icon file
versionYesSemver string
enabledYesBoolean
categoryVariesNew in some phone versions
min_versionVariesNew in some phone versions

The most common cause is a phone update that added new columns without running the migration. Re-run the phone's migration SQL to align schema with the current version.

7. GPS Not Working

Symptoms and first checks

Phone GPS calls SetNewWaypoint(x, y) client-side. If setting a destination does nothing, verify the coordinates are valid:

-- Debug: log what the phone is sending
RegisterNUICallback('setWaypoint', function(data, cb)
    print(('[phone-gps] waypoint: %s, %s'):format(tostring(data.x), tostring(data.y)))
    SetNewWaypoint(data.x + 0.0, data.y + 0.0)
    cb({ ok = true })
end)

If coordinates log correctly but the waypoint doesn't appear, another script is clearing it. HUD replacements and custom minimaps are the usual culprits — they call DeleteWaypoint on their own update loop. Disable them temporarily to isolate.

8. Phone Calls Dropping

Symptoms and first checks

Phone calls depend on your VOIP resource (pma-voice, mumble-voip). Verify the integration:

-- Phone config
Config.VoiceResource = 'pma-voice'
Config.EnableVoiceCalls = true

Fix checklist:

  1. Voice resource is ensure-ed BEFORE the phone in server.cfg
  2. Voice resource's exports match what the phone expects
  3. Phone version matches voice resource version (pma-voice had breaking changes in v6)
  4. Player's mic permissions granted in Cfx settings

If calls connect (ringing works) but audio is silent, the voice resource isn't opening a private call channel. This is usually a version mismatch — the phone is calling an export that the voice resource renamed.

9. Notification Sounds Missing

Symptoms and first checks

Notification sound failures have three causes:

  • Files missing from resource — check the phone's audio/ or html/sounds/ folder
  • Not declared in fxmanifest.lua — the files block must include audio paths:
files {
    'html/**/*',
    'html/sounds/*.mp3',
    'html/sounds/*.ogg',
}
  • NUI audio autoplay blocked — modern Chromium NUI blocks audio until user interaction. Watch F8 DevTools for:
play() failed because the user didn't interact with the document first

Most phones handle this with an on-load click, but custom forks often break it.

10. Dark Mode Issues

Symptoms and first checks

Dark mode is a pure NUI toggle — a CSS class on the root element. If clicking the toggle does nothing:

  1. Check F8 DevTools Console for JavaScript errors on click
  2. Inspect the root element to see if the dark class is being added
  3. If the class is added but nothing visually changes, the stylesheet doesn't define dark mode selectors

If dark mode toggles correctly but resets between sessions, the phone is storing the preference in localStorage — NUI localStorage gets cleared between resource restarts. Fix by storing the preference server-side:

CREATE TABLE phone_settings (
    identifier VARCHAR(50) PRIMARY KEY,
    dark_mode BOOLEAN DEFAULT FALSE,
    notifications_enabled BOOLEAN DEFAULT TRUE
);

Load on phone open, save on toggle.

11. Custom Apps Not Appearing

Symptoms and first checks

Custom apps need three things, all in sync:

  1. Config entry — in the phone's app config, matching the folder name
  2. Files present — HTML/JS at the path declared in config
  3. Manifest inclusion — in fxmanifest.lua's files block so NUI serves them
-- fxmanifest.lua must include custom app files
files {
    'html/apps/my-custom-app/**/*',
}

Missing any one makes the app invisible. Grep the phone resource for your app name:

grep -r "my-custom-app" resources/[phone]/qs-smartphone/

You should see hits in config, fxmanifest.lua, and the app folder itself.

12. Billing App Not Working

Symptoms and first checks

Phone billing apps bridge to a separate billing/invoicing resource. The three most common: okokBilling, qb-banking, esx_billing.

-- Phone billing config
Config.BillingResource = 'okokBilling'
Config.BillingEvents = {
    send = 'okokBilling:server:SendInvoice',
    list = 'okokBilling:server:GetInvoices',
    pay = 'okokBilling:server:PayInvoice',
}

Event names must match on both sides. If the billing resource renamed an event in a recent update, your phone stops working silently. Trace the events:

-- Phone side: log what it's emitting
RegisterNUICallback('sendInvoice', function(data, cb)
    print(('[phone-billing] emit: %s'):format(Config.BillingEvents.send))
    TriggerServerEvent(Config.BillingEvents.send, data)
    cb({ ok = true })
end)

If the emit logs but the billing resource never receives it, check the receiving handler's registered event name for a typo or rename.

Recommended Scripts

When you need a phone script that just works — framework-native, actively maintained, documented — check the FiveMX catalog:

  • FiveM Phone Scripts — Premium and free phone resources
  • Best FiveM Scripts 2026 — Top-rated scripts across all categories
  • FiveM Troubleshooting Guide — Broader troubleshooting playbook
  • FiveM Error Codes Fixes — Decoding common error messages

Frequently Asked Questions

Why is my FiveM phone not opening when I press the keybind?

Three common causes: (1) the phone resource isn't ensure-ed in server.cfg or started after the framework, (2) the NUI build step was skipped (modern phones need npm install && npm run build inside the resource folder), or (3) the player doesn't have a phone item in inventory when the script requires one. Check F8 for NUI errors first, then verify the inventory requirement in the phone's config.

Why are contacts missing from my FiveM phone?

Missing contacts mean either the phone_contacts table is empty, or the player's identifier format doesn't match the stored records. Run SELECT COUNT(*) FROM phone_contacts WHERE identifier = ? with your actual identifier — if zero rows, contacts never wrote. If non-zero but the phone shows none, your server probably switched identifier formats (Steam hex to license to citizenid) and old records don't match new identifiers.

Why aren't messages sending on my FiveM phone script?

Message send failures are almost always SQL errors in the phone_messages insert. Check the server console for errors when hitting send. Common causes: column mismatch (the script expects sender_identifier but the table has senderIdentifier), missing NOT NULL column, or foreign key violation if the receiver isn't registered. Test by inserting directly via SQL to isolate whether it's the script or the DB.

Why does the camera app crash my FiveM phone?

The camera crashes when the screenshot-basic resource is missing, not started, or missing its upload configuration. Ensure screenshot-basic is running, and check the phone's camera config for the upload method — most phones use Imgur, some use custom endpoints. A misconfigured upload URL produces a black screen crash; a missing resource produces an immediate NUI error.

Why isn't Twitter or social media loading on my FiveM phone?

Social media apps are self-contained with their own database tables. If the feed loads blank: check that phone_twitter or equivalent tables exist and have data, verify the NUI iframe loads without CORS errors (F8 devtools > Network tab), and confirm the player has a registered profile in phone_twitter_accounts. The most common fix is re-running the phone's SQL install file to create any missing app tables.

Why is the phone app store showing errors?

App store errors come from missing or corrupt app metadata in the phone_apps config/table. Each installable app needs a valid name, icon path, version, and enabled flag. Most commonly this is a config drift after a phone update — the phone expects new fields (like min_version or category) that the DB migration didn't add. Re-run the phone's migration SQL to align schema with the current version.

Why isn't GPS working on my FiveM phone?

Phone GPS uses SetNewWaypoint(x, y) client-side. If setting a destination does nothing, verify the coordinates being passed are valid numbers (not nil, not NaN), and check for other scripts calling DeleteWaypoint or clearing waypoints on a loop. Some HUD scripts and minimap replacements interfere with waypoints — disable them temporarily to isolate.

Why are phone calls dropping or not connecting?

Phone call failures come from a broken integration with your VOIP resource (pma-voice, mumble-voip). Verify the phone's config points to the correct voice resource name, that the voice resource is ensure-ed BEFORE the phone in server.cfg, and that the voice resource's exports match what the phone expects. If calls connect but audio is silent, the voice resource isn't opening a private call channel — check for version mismatch.

Why are notification sounds missing from my phone?

Either the sound files aren't in the phone's audio folder, they're not declared in fxmanifest.lua, or the NUI is blocking audio autoplay. Modern Chromium-embedded NUI blocks audio until the user interacts with the page. Most phone scripts handle this with an on-load click, but custom forks often break it. Check F8 devtools for 'play() failed because the user didn't interact with the document' warnings.

Why isn't dark mode working on my FiveM phone?

Dark mode is a pure NUI feature toggled via a CSS class on the root element. If clicking the toggle does nothing, the click handler isn't firing (check F8 devtools), or the CSS class doesn't exist in the stylesheet. If it toggles but doesn't persist, the phone is storing the preference in localStorage which NUI clears between sessions — fix by storing preferences server-side in a phone_settings table.

Why aren't custom apps appearing in my phone?

Custom apps need three things: (1) an entry in the phone's app config matching the app folder name exactly, (2) the HTML/JS files present at the path declared in the config, and (3) inclusion in fxmanifest.lua files block so they're served to the NUI. Missing any one makes the app invisible. Grep the phone's resource folder for your app name to verify all three are wired up.

Why is the billing app not working on my phone?

Phone billing apps bridge to a separate billing/invoicing resource (okokBilling, qb-banking, esx_billing). Both resources must be running, and the event names on both sides must match. Check the phone's billing config for the target resource, verify that resource is ensure-ed, and watch the server console as you open the billing app — you'll see the trigger event fire (or not).

Previous Article

FiveM Police Script Troubleshooting — 12 Common Issues & Fixes

Next Article

FiveM MLO Scripts Troubleshooting FAQ: 12 Common Issues Fixed

More on This Topic

FiveM Admin Scripts Troubleshooting FAQ: 12 Common Issues FixedFiveM Drug Scripts Troubleshooting FAQ: 12 Common Issues FixedFiveM Economy Scripts Troubleshooting FAQ: 12 Common Issues FixedFiveM Housing Scripts Troubleshooting FAQ: 12 Common Issues FixedFiveM HUD Scripts Troubleshooting FAQ: 12 Common Issues Fixed

Move from research to a production-ready server stack

Once you know the direction, jump into the highest-leverage commercial hubs for verified scripts, curated bundles, and framework-specific buying paths.

Framework hub

Browse QBCore-ready scripts

Move into the QBCore landing page to compare verified scripts, framework fit, and install-ready products built for modern FiveM servers.

Open QBCore hub

Premium catalog

Browse premium FiveM scripts

Move from research into the main shop to compare real products, framework labels, screenshots, and production-ready quality signals.

Open premium shop

Launch faster

Compare curated bundles

Bundles shorten the path from planning to launch by grouping the highest-leverage scripts into a cleaner commercial starting point.

View bundles

Disclosure: Some links below are affiliate links to FiveMX products. We may earn a commission at no extra cost to you.

Premium Scripts You Might Like

FiveM Case Opening Script | Loot Box

FiveM Case Opening Script | Loot Box

$26.99
LB Phone v2

LB Phone v2

$49.00
HSN Phone

HSN Phone

$48.99
GKSPhone (ESX)

GKSPhone (ESX)

$45.99

Free Scripts You Might Like

Project X Prompt Sandy Bank Robbery Heist - QB | QBOX | ESX | Custom

Project X Prompt Sandy Bank Robbery Heist - QB | QBOX | ESX | Custom

294 downloads
Realistic Grapple Gun - Nodus Scripts

Realistic Grapple Gun - Nodus Scripts

202 downloads
OP Gangs 3.0 — Most Advanced Gang Script [ESX/QB/QBOX]

OP Gangs 3.0 — Most Advanced Gang Script [ESX/QB/QBOX]

161 downloads
[FREE][QBOX][QBCORE] Pawnshop Script + FREE MLO

[FREE][QBOX][QBCORE] Pawnshop Script + FREE MLO

156 downloads

Related Articles

20 Best FiveM Scripts in 2026 — The Complete Server Owner Guide

20 Best FiveM Scripts in 2026 — The Complete Server Owner Guide

The best FiveM scripts in 2026 are an Advanced MDT police system, a 911 dispatch and CAD tool, a full banking economy script, a 15+ civilian job pack, a modern smartphone with an…

March 30, 2026
FiveM Troubleshooting: Complete Error & Fix Guide

FiveM Troubleshooting: Complete Error & Fix Guide

FiveM is a powerful platform, but with power comes complexity. Whether you're a player dealing with crashes and connection issues, or a server owner hunting down performance…

February 24, 2026
FiveM Error Codes & Fixes - Mega-Guide

FiveM Error Codes & Fixes - Mega-Guide

We'll help you fix FiveM errors - fast. This guide targets Windows 10/11 players and server owners. Expect clear steps to stop crashes, fix connection...

September 5, 2025
Secure CheckoutInstant AccessMoney-Back GuaranteeLifetime Updates
FiveMX

Premium FiveM scripts and mods for serious server owners.

Shop

  • Shop
  • QBCore Scripts
  • ESX Scripts
  • FiveM Scripts
  • Free Mods
  • Best Scripts & Mods

Help

  • About
  • FAQ
  • Support
  • Contact
  • Account
  • Affiliate Program

Legal

  • Privacy Policy
  • Terms of Service
  • Refund Policy
  • Cookie Policy
  • GDPR Compliance
  • DMCA
  • Imprint
  • Editorial Policy
© 2026 FiveMX. All rights reserved.·support@fivemx.com

FiveMX is not affiliated with Rockstar Games, Take-Two Interactive, or CFX.re. All trademarks are property of their respective owners.

Flash Sale — Up to 19% off!Flash Sale — 19% off!Shop Now