Stirling-Tools/Stirling-PDF · error · Error
Supabase is not configured. License key lookup is not availa
Error message
Supabase is not configured. License key lookup is not available.
What it means
Thrown by checkLicenseKey when Supabase isn't configured. License-key lookup is performed by the Supabase edge function get-license-key (mapping an installation_id to a license), so without Supabase the lookup can't run. The guard fails fast with a message naming the unavailable capability (license key lookup).
Source
Thrown at frontend/editor/src/proprietary/services/licenseService.ts:430
async getInstallationId(): Promise<string> {
try {
const response = await apiClient.get("/api/v1/admin/installation-id");
const data: InstallationIdResponse = await response.data;
return data.installationId;
} catch (error) {
console.error("Error fetching installation ID:", error);
throw error;
}
},
/**
* Check if license key is ready for the given installation ID
*/
async checkLicenseKey(installationId: string): Promise<LicenseKeyResponse> {
// Check if Supabase is configured
if (!isSupabaseConfigured || !supabase) {
throw new Error(
"Supabase is not configured. License key lookup is not available.",
);
}
const { data, error } = await supabase.functions.invoke("get-license-key", {
body: {
installation_id: installationId,
},
});
if (error) {
throw new Error(`Failed to check license key: ${error.message}`);
}
return data as LicenseKeyResponse;
},
/**View on GitHub (pinned to 9ef20dcab8)
Solutions
- Gate the license-activation UI on isSupabaseConfigured.
- Set VITE_SUPABASE_URL/VITE_SUPABASE_ANON_KEY in the active env layer.
- Catch the error and show a 'license lookup unavailable in this mode' message.
Example fix
// before
const res = await licenseService.checkLicenseKey(installationId);
// after
if (!isSupabaseConfigured) {
showToast(t('license.lookupUnavailable'));
return;
}
const res = await licenseService.checkLicenseKey(installationId); Defensive patterns
Strategy: validation
Validate before calling
if (!isSupabaseConfigured) {
showToast(t('license.lookupUnavailable'));
return;
} Type guard
export function canLookupLicenseKey(): boolean {
return isSupabaseConfigured;
} Try / catch
try {
await licenseService.checkLicenseKey(installationId);
} catch (e) {
if (/not configured/i.test(e instanceof Error ? e.message : "")) {
showToast(t('license.lookupUnavailable'));
} else throw e;
} Prevention
- Gate the activation UI on isSupabaseConfigured.
- Ensure getInstallationId() returns a real fingerprint before lookup.
- Set Supabase env vars where activation is expected.
When it happens
Trigger: Calling checkLicenseKey(installationId) in a build without Supabase configured; isSupabaseConfigured false because env vars missing; activation flow run in a flavor that omits Supabase.
Common situations: Self-hosted deploy without Supabase env vars; dev environment without .local Supabase keys; the license-activation UI rendered when the licensing backend is unavailable.
Related errors
- Supabase is not configured. Please use static plans instead.
- Supabase is not configured. Checkout is not available.
- Supabase is not configured. Billing portal is not available.
- Failed to check license key: ${error.message}
- Supabase is not configured. Seat updates are not available.
AI-assisted analysis of Stirling-Tools/Stirling-PDF@9ef20dcab8 (2026-08-13).
Data as JSON: /api/errors/da2ef56617c3083d.
Report an issue: GitHub.