Troubleshooting
npx cannot find @nitpickhq/cli
The packages are not published yet. See the status note in the Quickstart.
The login page does not open
nitpick login prints the address and the code. Open the address yourself. If you run in a remote shell, copy it to a browser on your own machine. The code is valid for 30 minutes, enough to create an account and start the subscription in the browser. After that, run the command again.
nitpick login waits and never gives a token
The token comes only after the subscription runs. Finish the payment in the browser; the page waits a few seconds for the payment provider to confirm and then shows Allow. Press Allow, and the CLI continues by itself. Without a running subscription there is no token, also not through the dashboard.
402 subscription_required
Your account has no running subscription. Creating an app or a token needs one, and changing the status of a report does too. Renew at the address the message shows (<app address>/billing). Reading reports that are not locked keeps working. See Billing and limits.
409 limit_reached
An account has at most 50 apps and 25 tokens that are not revoked. The message names what you can clean up: nitpick tokens list and nitpick tokens revoke <id>, or remove an app you no longer use in the dashboard.
The agent says "invalid token" or 401
Run npx -y @nitpickhq/cli@latest login again, or set NITPICK_TOKEN. A revoked token stops working at once.
Test report does not show up
- Check that the public key in the app starts with
npk_and belongs to the app you are looking at. - Check that the app can reach the API address (
apiURLin Swift,apiUrlin React Native). On a real device,localhostis the device, not your Mac. - You can send at most 30 reports per minute per app and 10 per minute per IP address. After that you get 429.
- Screenshots are limited to 1 MB per image. A report with a larger image answers 413
too_large. The components make the image smaller until it fits. - The monthly limit of 2,000 reports is reached (
429 monthly_limit), or the app is inactive (403 app_inactive). See below.
The tab does not appear
- SwiftUI:
.nitpick()must be on the root view, and the app must require iOS 17 or newer. - Expo:
NitpickProvidermust wrap your navigation, andoptions.tabmust not befalse. - Both kinds of feedback are off. Run
nitpick settings show --app <id>; with General and Point at something both off there is no tab. Turn one on in the dashboard or withnitpick settings set. See Settings. - The public key is unknown to the platform (
401 invalid_keyon the settings request). Check that the key starts withnpk_and is the key of an app on your account. The developer log shows one line about it. - No settings have been fetched yet. The tab only shows after a successful request, which happens when the app starts. Without a network it tries again after 30 seconds, up to 3 times, and then when the app comes back to the foreground. On Expo the settings live in memory, so every cold start needs a new request; SwiftUI shows the last good settings from the device. Check
apiURLorapiUrl. - The subscription does not run any more. After the first 14 days and the 30 days that follow, the tab disappears (
active: false, and ingest answers403 app_inactive). Runnitpick whoamito see the state, and renew at the address it shows. The tab is back within a minute of the next app start after you pay. - The monthly limit of 2,000 reports is reached. The tab disappears until the first of the next month (UTC).
nitpick whoamishows the usage from 80%. - After a change in the settings, wait up to a minute and restart the app, or bring it back after more than an hour in the background.
Your users see "Feedback is not available right now."
That is the sentence the form shows (translated) when the platform answers 403 app_inactive or 429 monthly_limit to a report. It means the subscription has ended long enough that the tab is hidden, or the monthly limit is reached. It says nothing about your users' own account, and they never see why. The draft is dropped, there is no Try again, and the tab goes away until the next valid answer for the settings. Fix the cause (renew, or wait for the first of the month) and the tab returns by itself.
The report says element_match: none
The tap was not in or within 44 points of a marked element. Mark the element with a name, see Screens, elements and masking.
The screenshot misses a map, video or web view
These can come out blank or black on a screenshot that the app makes of itself. The report still has the tap position and the names. Mask them on purpose if they hold anything personal.
The feedback form shows up on the screenshot
It should not: the component removes the tab, the layer and the panel before the screenshot. If you see it, update the package to the newest version.
Expo Go
The component only uses what Expo Go ships. If you added a native module for it, remove it.