external-install: no loading indicator when form loads after org preselect
- Dominant language
- Python
- Stars
- 44.8k
- Forks
- 4.9k
- Avg merge
- 21h 10m
- Merged PRs (30d)
- 635
Description
## Summary
On the `external-install` page for a Sentry app, when an organization is preselected, the form below the org selector loads after a delay of several seconds with no loading indicator shown. During that delay the page appears broken or incomplete.
## Reproduction
1. Open a Sentry app's external install URL with an organization preselected (e.g. `sentry.io/sentry-apps/:slug/external-install/`)
2. Observe the org is already selected
3. Wait for the install form to appear below the org selector
4. **No loading indicator is shown** during the several-second wait — the page looks empty/broken until the form appears
## Expected behavior
A loading indicator (spinner or skeleton) should be visible while the form data is being fetched, so the user knows the page is working and not frozen.
## Root cause hypotheses
- **High confidence:** The component conditionally renders the install form only after a dependent API response (e.g. sentry app details, org-scoped data), but does not render a loading state for that secondary fetch — only the org selector is shown, leaving the page visually incomplete.
- The loading guard likely covers the initial page load but not the follow-on form fetch triggered by org selection.
## Related context
The `external-install` page (`sentryAppExternalInstallation/index.tsx`) was recently patched to handle 403 errors (missing loading error state), so this component is actively being improved. The missing loading indicator for the preselected-org form path is a separate gap in the same flow.
Action taken on behalf of David Cramer.
Contributor guide
Research direction
Start in sentryAppExternalInstallation/index.tsx and trace the form data request when an organization is preselected. Reproduce the external-install flow with a preselected organization, then identify the loading guard for the follow-on fetch. Done means a spinner or skeleton is visible until the install form appears, without changing the existing organization selector or error handling.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- react, typescript
- Domain
- frontend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100