Troubleshooting
Nearly every jj-radial support ticket is one of the first two entries. Start there.
The radial looks unchanged / customisation does nothing
The ox_lib patch hasn't been applied, or an ox_lib update overwrote it. This is by far the most common issue.
Symptoms, all at once:
- The radial still looks like stock ox_lib.
- The Customize tab says "Open your radial menu first to see available items" no matter how many times you open it.
- Hiding, reordering and accent colours appear to save but change nothing.
- Hold-vs-toggle mode does nothing.
- Custom shortcuts do appear — because those go through
lib.addRadialItem— but render in the stock UI.
Fix: re-apply the patch to ox_lib/resource/interface/client/radial.lua, then restart ox_lib and jj-radial. To confirm it's live, that file should contain exports['jj-radial']:Render(data).
Re-check this after every ox_lib update. Updating ox_lib restores the stock file and silently disables jj-radial.
Buttons in the settings panel do nothing
The folder has been renamed. The NUI posts back to https://jj-radial/..., so if the resource folder isn't exactly jj-radial, every callback fails silently — no console error, no visible effect.
Fix: rename the folder back to jj-radial.
Client-side error on a Qbox server
On a pure Qbox server with no qb-core present, client/functions.lua throws while loading and the whole client side of jj-radial stops.
The cause is in the qbx branch of the detection block:
if GetResourceState('qbx_core') == 'started' then
Framework = 'qbx'
QBCore = exports['qb-core']:GetCoreObject() -- fails: qb-core isn't running
Fix: delete that QBCore = ... line. The variable is never used anywhere in the file, so removing it is safe. client/functions.lua is unencrypted.
There's no keybind for jj-radial in the settings menu
Correct — there isn't one, and there shouldn't be. The radial keybind belongs to ox_lib, not jj-radial.
Players rebind it under FiveM → Settings → Key Bindings, looking for the ox_lib entry (default F1). Searching for "radial" or "jj" there will find nothing.
Icons are blank boxes
Font Awesome ships with the resource, so this is almost always a bad icon name rather than a loading problem. Check the icon exists in the free Font Awesome set — Pro-only icons render as blank boxes.
If every icon is blank, the font files didn't deploy. Confirm html/webfonts/ contains the four fa-*.woff2 files and that html/vendor/fontawesome.min.css is present, then restart the resource.
Hiding and reordering don't work inside submenus
Working as designed. Both apply to the root ring only — submenu contents are passed straight through as the owning resource defined them.
An entry from another resource isn't in the menu
- Check it isn't hidden — open
/radialsettings→ Customize and look for it in the hidden state. - Confirm the owning resource actually started, and started after ox_lib.
- Entries added conditionally (job-locked, item-locked) only appear when their condition is met — that's the owning resource's logic, not jj-radial's.
Resetting a player's settings
Either have them hit Revert To Default in the panel, or delete their row:
DELETE FROM jj_radial_settings WHERE citizenid = 'ABC12345';
They'll get defaults on next login.
Settings save on every click
There's no Save button by design — each change writes straight to the database. Dragging the colour picker fires a write per movement, so a player fiddling with colours generates a burst of small writes to their own row.
Harmless on any normal server, but worth knowing if you're watching query volume.
Still stuck? Bring your F8 console output to Discord — the framework detection line jj-radial prints on join ([jj-radial] client: framework=...) is usually the first useful clue.