Common Technical Error Fragments

Many messages below end in ": [dyn]" — the app appends the raw error.message from Supabase/the network, which isn't translated and isn't in the app's control. These are the fragments that actually show up there most often, and what they mean.

Fragment (appears in error.message) What it means What to do
JWT expiredYour login session token expired (Supabase sessions normally auto-refresh, but this can fail after long inactivity, a sleeping laptop, or a wrong system clock).Log out and log back in. If it keeps happening, check that your device's date/time is correct.
JWT malformed / invalid JWTThe stored session is corrupted (e.g. cleared cookies, switched browsers mid-session).Log out and log back in.
Invalid login credentialsWrong email or password.Double-check email/password, or use "Forgot password".
Failed to fetch / NetworkErrorThe browser couldn't reach Supabase or the Netlify function — no internet, VPN/firewall, or an ad-blocker blocking the request.Check your connection; try disabling VPN/ad-blocker; retry.
duplicate key value violates unique constraintYou're saving something (SQ number, quote/report number, customer code…) that already exists.Use a different number/code, or load the existing record instead of creating a new one.
violates foreign key constraintThe record links to something (e.g. a customer) that no longer exists — probably deleted by someone else.Re-select the customer/reference and save again.
new row violates row-level security policy / permission denied for table …Your account's role doesn't have database permission for this action.Contact an admin to check your assigned role (Admin/Sales/Service).
JSON object requested, multiple (or no) rows returnedA lookup expected exactly one matching record but found zero or several — usually the record was deleted, or a filter (e.g. SQ number) matched nothing.Refresh and reload the record; if it's gone, it may have been deleted.
Failed to fetch dynamically imported moduleThe browser has an old cached version of the app after a new deployment.Hard-refresh the page (Ctrl/Cmd+Shift+R).

Programmed Error & Validation Messages

Every alert() popup and inline status/toast error message in the app, grouped by page/module. Messages built from a variable (e.g. "Failed to save: " + error.message) show the fixed part only — the rest depends on what actually went wrong (see "Common Technical Error Fragments" above). Source = file:line in public/.

Type Message (EN) Message (DE) Possible Cause Source