Hold one loading surface when opening an integration - #2085
Draft
RhysSullivan wants to merge 1 commit into
Draft
RhysSullivan wants to merge 1 commit into
RhysSullivan wants to merge 1 commit into
Conversation
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
executor-cloud | 28e964f | Sep 21 2026, 03:47 AM |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
executor-marketing | 28e964f | Commit Preview URL Branch Preview URL |
Sep 21 2026, 03:45 AM |
Contributor
Cloudflare preview
Sign-in is Cloudflare Access (one-time PIN to an allowed email). The preview has its own database and encryption key; it is destroyed when this PR closes. |
@executor-js/cli
@executor-js/config
@executor-js/execution
@executor-js/sdk
@executor-js/codemode-core
@executor-js/runtime-quickjs
@executor-js/plugin-file-secrets
@executor-js/plugin-graphql
@executor-js/plugin-keychain
@executor-js/plugin-mcp
@executor-js/plugin-onepassword
@executor-js/plugin-openapi
executor
commit: |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Opening an integration walked the detail page through several placeholders in a
row. On a cold open the header printed the raw URL slug (
postman-echo-9f2a)before swapping it for the real name, and the Accounts pane showed a pulsing dot
and the words "Loading accounts…" — a loading vocabulary used nowhere else on
the page — before the real content arrived in a different box.
Each of those is one of our own internal boundaries: the catalog row request,
the plugin lookup that depends on it, the connections request. None is a fact
the person clicking an integration has any use for, and several short loading
states are worse than one longer one, because every transition is a fresh demand
on the eye.
What changed
it renders — the name, whether the integration is built-in, which plugin owns
the Accounts pane, the declared auth methods — comes from the catalog row, so
rendering before that lands does not show less, it shows a different page.
strip's border and padding, then the pane that tab will fill), so content
lands where the skeleton already was.
the row it holds space for.
asyncResultValuereads a result's retained value, so a background refreshcannot blank data the client already has.
Before
After
Verification
New scenario
e2e/scenarios/integration-detail-loading-surface.test.ts, modelledon the artifact loading-surface scenario. These states were only ever on screen
for a few hundred milliseconds, so a screenshot at one moment would miss them and
pass against the old code too. The page is sampled continuously on an animation
frame, from before the click until the detail page is live, and the assertion is
over everything that was ever on screen: no placeholder words, no raw slug in the
title, and a detail body whose box never changed size. Warm (a click from the
list) and cold (a direct URL in a fresh context) are both covered.
Against the pre-fix code the cold open fails on both counts —
"Loading accounts" was on screen at sample 24 of 85andthe header printed the raw slug "postman-echo-9b15aea9" at sample 24 of 85. With the change the scenario passes.bun run typecheck(packages/react),oxlint, andbun run formatare clean.Not checked: the other hosts' surfaces, and the wider e2e suite.