Repeated 404s from extensibility.lucid.app/application/properties/packageId
Hello Lucid Developer Support,
We're building Quodsi, a Lucidchart editor extension (package id 29e0d321-5cb2-4ae0-a1b6-dabd512c098c). While testing our package in local developer mode, we see a constant stream of failing requests from the Lucid editor itself. We also see OAuth sign-in behavior that we suspect is related. We'd appreciate help understanding both.
Environment
- Lucidchart in Chrome [version], Windows 11
- Local test mode: npx lucid-package test-editor-extension, editor Developer menu → "Enter developer mode"
- lucid-extension-sdk 1.1.3; lucid-package [version, from npx lucid-package --version]
- The same package id is registered in the developer portal, where we upload dev/test builds
- Extension scopes: READ, WRITE, DOWNLOAD, SHOW_MODAL, CUSTOM_UI, NETWORK, USER_INFO, OAUTH_TOKEN
1. Repeated 404s
With our extension loaded, the DevTools console fills with:
GET https://extensibility.lucid.app/application/properties/29e0d321-5cb2-4ae0-a1b6-dabd512c098c 404 (Not Found)
- In one session we saw about 1,200 of these errors.
- Our extension code never calls this URL. We don't use getPackageSettings, setPackageSettings or showPackageSettingsModal. The only package-level API we use is lucid.getPackageId().
- The requests appear to come from the Lucid editor itself, and keep repeating.
- It happens with and without a second OAuth provider in our manifest (details below).
- It does not happen until the developer/user opens the Quodsi right panel.
- It happens with published zips installed as well.
Questions:
- What is application/properties/{packageId}, and what triggers it?
- Is a 404 expected for a package running in local test mode, or does it mean something is misconfigured for our package, in the manifest or in the developer portal?
- Is the request retried in a loop, and does it block or delay getOAuthToken, oauthXhr or performDataAction while it keeps failing?
2. OAuth sign-in and data connector behaviour
Our manifest declares a custom OAuth provider, and our data connector uses it:
"oauthProviders": [
{
"name": "kinde",
"title": "Quodsi Auth",
"authorizationUrl": "https://<our-kinde-tenant>/oauth2/auth?prompt=login&audience=...",
"tokenUrl": "https://<our-kinde-tenant>/oauth2/token",
"revokeTokenUrl": "https://<our-kinde-tenant>/oauth2/revoke",
"scopes": ["openid", "profile", "email"],
"domainWhitelist": ["https://<our-kinde-tenant>"],
"clientAuthentication": "clientParameters",
"usePkce": true
}
],
"dataConnectors": [
{ "name": "quodsi_api_data_connector", "oauthProviderName": "kinde", "callbackBaseUrl": "..." }
]
- "Sign in" does nothing: our "Sign in" button calls client.getOAuthToken('kinde'). Sometimes nothing visible happens and the promise doesn't resolve for a long time. Repeated clicks also do nothing. Later the user ends up signed in without doing anything further. After a page reload, a cached token takes about 4 seconds to come back from getOAuthToken('kinde').
- Our workaround from Lucid support: earlier (2025), when our data connector used a provider named lucid (authorizationUrl: https://lucid.app/oauth2/authorize, tokenUrl: https://api.lucid.co/oauth2/token, scope offline_access), you advised calling this once before performDataAction would work:
await client.oauthXhr("lucid", {
url: "https://api.lucid.co/folders/search",
headers: { "Lucid-Api-Version": "1", "Content-Type": "application/json" },
data: "{}",
method: "POST",
});
- Problems with that workaround: we moved the data connector to our own kinde provider in April 2026 but kept the workaround. It shows a separate "authorize Quodsi to use Lucidchart" consent dialog.
- That dialog collides with other dialogs. We've seen DialogStackingError, a Sign-in click that does nothing, and a data action failing because the consent dialog couldn't open while one of our modals
(showModal) was open.
- Before the user signed in, running it in a local package also seemed to stop the Kinde sign-in prompt from appearing.
- Test without it: we removed the workaround and the lucid provider in a test build. Data actions (performDataAction against our kinde connector) worked, and the 404s still appeared.
Questions:
- With a data connector whose oauthProviderName is a custom provider (kinde), is the oauthXhr("lucid", …) workaround still required before performDataAction, or is it obsolete?
- When getOAuthToken(provider) needs to prompt, can the prompt be blocked or delayed by another open dialog, or by the failing application/properties requests? Is there a recommended way to detect that and report it to the user, rather than waiting on a promise that doesn't resolve?
- EditorClient.triggerAuthFlow(providerName) (returns { s: boolean }) has no description in the SDK reference. What is it for, and should an explicit "Sign in" button use it instead of getOAuthToken?
- Is there a recommended order for user consent when a package has a custom provider for sign-in and data actions, so that the consent dialogs never collide?
3. What we can provide
- Full HAR or console export from a local test session
- Our manifest (secrets removed)
- A screen recording of the Sign-in click doing nothing and the 404 stream
- Access to a dev/test build uploaded from the developer portal, if you'd like to reproduce on a non-local install
Thanks for your help. Please let us know what else would be useful.
Dan
Quodsi