Skip to content

Conversation

@alfonso-noriega
Copy link
Contributor

@alfonso-noriega alfonso-noriega commented Feb 3, 2026

WHY are these changes introduced?

Issue #771

vault error

Fixes an issue where app selection prompts could fail silently without proper error handling or diagnostics, leading to a poor developer experience when the prompt is interrupted.

WHAT is this pull request doing?

Adds robust error handling and retry logic to the app selection process:

  • Implements a retry mechanism (up to 2 attempts) when app selection is interrupted
  • Captures comprehensive diagnostics about the environment and failure context
  • Provides detailed error messages with troubleshooting suggestions
  • Adds specific handling for different environments (Docker, WSL)
  • Improves the autocomplete prompt to throw meaningful errors when interrupted

How to test your changes?

  1. Run shopify app dev in a project with multiple apps
  2. Interrupt the app selection prompt (e.g., with Ctrl+C)
  3. Verify the system retries the prompt
  4. Interrupt multiple times to see the detailed error message

Measuring impact

How do we know this change was effective? Please choose one:

  • n/a - this doesn't need measurement, e.g. a linting rule or a bug-fix

Checklist

  • I've considered possible cross-platform impacts (Mac, Linux, Windows)
  • I've considered possible documentation changes

Copy link
Contributor Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

@github-actions
Copy link
Contributor

github-actions bot commented Feb 3, 2026

Coverage report

St.
Category Percentage Covered / Total
🟡 Statements
79.6% (+0.37% 🔼)
14453/18157
🟡 Branches
73.95% (+0.84% 🔼)
7172/9699
🟡 Functions
79.77% (+0.4% 🔼)
3687/4622
🟡 Lines
79.96% (+0.38% 🔼)
13664/17089
Show new covered files 🐣
St.
File Statements Branches Functions Lines
🟢
... / admin-as-app.ts
100% 100% 100% 100%
🟢
... / metafield_definitions.ts
100% 100% 100% 100%
🟢
... / metaobject_definitions.ts
100% 100% 100% 100%
🟢
... / bulk-operation-cancel.ts
100% 100% 100% 100%
🟢
... / bulk-operation-run-mutation.ts
100% 100% 100% 100%
🟢
... / bulk-operation-run-query.ts
100% 100% 100% 100%
🟢
... / get-bulk-operation-by-id.ts
100% 100% 100% 100%
🟢
... / list-bulk-operations.ts
100% 100% 100% 100%
🟢
... / staged-uploads-create.ts
100% 100% 100% 100%
🟢
... / fetch_store_by_domain.ts
100% 100% 100% 100%
🟢
... / organization_exp_flags.ts
100% 100% 100% 100%
🔴
... / import-custom-data-definitions.ts
0% 100% 0% 0%
🔴
... / cancel.ts
0% 100% 0% 0%
🔴
... / execute.ts
0% 0% 0% 0%
🔴
... / status.ts
0% 0% 0% 0%
🔴
... / pull.ts
0% 100% 0% 0%
🟡
... / execute-operation.ts
75.68% 50% 100% 75.68%
🔴
... / pull.ts
0% 0% 0% 0%
🟢
... / bulk-operation-status.ts
96.55% 92.11% 100% 100%
🟢
... / cancel-bulk-operation.ts
100% 100% 100% 100%
🟢
... / constants.ts
100% 100% 100% 100%
🟢
... / download-bulk-operation-results.ts
100% 100% 100% 100%
🟢
... / execute-bulk-operation.ts
87.14% 83.67% 100% 88.41%
🟢
... / format-bulk-operation-status.ts
100% 100% 100% 100%
🟢
... / run-mutation.ts
100% 100% 100% 100%
🟢
... / run-query.ts
100% 100% 100% 100%
🟡
... / stage-file.ts
73.53% 62.5% 85.71% 72.73%
🟢
... / watch-bulk-operation.ts
100% 94.74% 100% 100%
🟢
... / utilities.ts
100% 100% 100% 100%
🟢
... / declarative-definitions.ts
98.54% 93.18% 100% 98.51%
🟢
... / common.ts
97.62% 95% 100% 97.06%
🟢
... / execute-command-helpers.ts
100% 100% 100% 100%
🟢
... / file-formatter.ts
100% 100% 100% 100%
🔴
... / promiseWithResolvers.ts
33.33% 50% 50% 33.33%
🟢
... / theme-listing.ts
100% 100% 100% 100%
Show files with reduced coverage 🔻
St.
File Statements Branches Functions Lines
🔴
... / execute.ts
0%
0% (-100% 🔻)
0% 0%
🟢
... / loader.ts
94.06% (+0.2% 🔼)
86.41% (-0.42% 🔻)
97.17% (+0.11% 🔼)
94.85% (+0.18% 🔼)
🟢
... / extension-instance.ts
84.8% (+0.23% 🔼)
77.6% (-0.91% 🔻)
92.06% (+0.13% 🔼)
85.11% (+0.24% 🔼)
🟡
... / specification.ts
69.64% (+0.55% 🔼)
75.61% (+2.44% 🔼)
76.47% (-1.31% 🔻)
69.39% (+0.64% 🔼)
🟢
... / ui_extension.ts
88.61% (-6.22% 🔻)
78.57% (-2.68% 🔻)
85.19% (-14.81% 🔻)
90.79% (-5.67% 🔻)
🟡
... / dev.ts
80% (-1.97% 🔻)
70% (-1.43% 🔻)
76.19% (-3.81% 🔻)
77.97% (-2.03% 🔻)
🟢
... / store-context.ts
100%
82.35% (-0.98% 🔻)
100% 100%
🟢
... / Logs.tsx
90%
90.91% (-5.97% 🔻)
100% 90%
🟢
... / fetch.ts
84.21% (+0.88% 🔼)
82.35% (-0.98% 🔻)
75%
85.29% (+1.42% 🔼)
🔴
... / select-app.ts
58.06% (-29.44% 🔻)
50% (-20% 🔻)
100%
58.62% (-34.71% 🔻)
🟢
... / app-event-watcher-handler.ts
86.36% (-4.11% 🔻)
75% 86.67%
85.71% (-5.19% 🔻)
🟡
... / middlewares.ts
77.33% (-0.87% 🔻)
75%
68.42% (-1.58% 🔻)
76.39% (-0.94% 🔻)
🔴
... / server.ts
1.23% (-0.02% 🔻)
0% 0%
1.3% (-0.02% 🔻)
🟢
... / setup-dev-processes.ts
93.62% (+0.14% 🔼)
66.67% (-4.76% 🔻)
90%
92.86% (+0.17% 🔼)
🟢
... / bundle.ts
93.22%
63.33% (-3.33% 🔻)
94.12% (+5.88% 🔼)
96.3%
🟢
... / developer-platform-client.ts
84.62% (-1.5% 🔻)
71.43% (+0.84% 🔼)
81.82% (+1.82% 🔼)
93.75% (+0.42% 🔼)
🔴
... / http-reverse-proxy.ts
58.97% (-4.91% 🔻)
37.04% (-2.96% 🔻)
58.33% (-5.3% 🔻)
59.46% (-5.25% 🔻)
🟢
... / api.ts
87.07% (-0.43% 🔻)
76.71% (-0.1% 🔻)
100%
86.49% (-0.43% 🔻)
🟢
... / device-authorization.ts
88.24% (-0.83% 🔻)
76.47% (-2.94% 🔻)
100%
88.24% (-0.83% 🔻)
🟢
... / SingleTask.tsx
84.21% (-15.79% 🔻)
50% (-50% 🔻)
80% (-20% 🔻)
84.21% (-15.79% 🔻)
🔴
... / environment.ts
35% (-5% 🔻)
41.18%
40% (-10% 🔻)
36.84% (-5.26% 🔻)
🔴
... / ui.tsx
49.21% (-2.41% 🔻)
40% (-8.39% 🔻)
54.55% (+1.42% 🔼)
48.39% (-2.43% 🔻)
🟢
... / console.ts
81.82% (+15.15% 🔼)
75% (-25% 🔻)
100% (+33.33% 🔼)
81.82% (+15.15% 🔼)
🟢
... / init.ts
88% (-0.89% 🔻)
71.43% (+4.76% 🔼)
86.67% (+4.85% 🔼)
88% (-0.89% 🔻)
🟢
... / storefront-renderer.ts
90.2% (-0.54% 🔻)
78.95%
81.82% (-1.52% 🔻)
90.2% (-0.54% 🔻)
🟡
... / theme-polling.ts
67.57% (-0.49% 🔻)
68.75% 78.57%
66.18% (-1.47% 🔻)

Test suite run success

3715 tests passing in 1438 suites.

Report generated by 🧪jest coverage report action from e86c51c

@alfonso-noriega alfonso-noriega force-pushed the 02-03-add_failsafe_and_improve_loging_on_unexepcete_select_app_error branch from ea40cf9 to 5d0894d Compare February 4, 2026 12:59
@alfonso-noriega alfonso-noriega marked this pull request as ready for review February 4, 2026 13:22
@alfonso-noriega alfonso-noriega requested a review from a team as a code owner February 4, 2026 13:22
@github-actions
Copy link
Contributor

github-actions bot commented Feb 4, 2026

We detected some changes at packages/*/src and there are no updates in the .changeset.
If the changes are user-facing, run pnpm changeset add to track your changes and include them in the next release CHANGELOG.

Caution

DO NOT create changesets for features which you do not wish to be included in the public changelog of the next CLI release.

@gonzaloriestra gonzaloriestra changed the title Add failsafe and improve loging on unexepcete select app error Add failsafe and improve logging on unexpected select app error Feb 4, 2026
@alfonso-noriega alfonso-noriega force-pushed the 02-03-add_failsafe_and_improve_loging_on_unexepcete_select_app_error branch 2 times, most recently from 1d3d3b1 to 75f75ba Compare February 4, 2026 14:02
@alfonso-noriega alfonso-noriega force-pushed the 02-03-add_failsafe_and_improve_loging_on_unexepcete_select_app_error branch from 75f75ba to e86c51c Compare February 4, 2026 14:04
'Try running the command again. If the issue persists:',
' • Check system resources and stability',
' • Try running outside of containers/WSL if applicable',
' • Report this issue with the error detailsmad a verbose log',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
' • Report this issue with the error detailsmad a verbose log',
' • Report this issue with the error details and a verbose log',

`Available apps: ${apps.length}`,
].join('\n')

const tryMessage = [
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you extract this to avoid repetition?

} else {
const tryMessage = [
'This may happen if:',
' • The process received a signal (SIGINT, SIGTERM) or was terminated',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you press CTRL-C, the command should stop immediately. We shouldn't retry anything in that case.

But I'm not able to reproduce that behavior, is that happening?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants