getsentry / getsentry/sentry

external-install: no loading indicator when form loads after org preselect

Open
#112,439 1 comment 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.