Skip to content

Fix/ios 16 build#650

Merged
joemarct merged 10 commits intomasterfrom
fix/ios-16-build
Mar 30, 2026
Merged

Fix/ios 16 build#650
joemarct merged 10 commits intomasterfrom
fix/ios-16-build

Conversation

@khirvy019
Copy link
Copy Markdown
Collaborator

@khirvy019 khirvy019 commented Mar 26, 2026

Description

  • Fix white screen issue observed in iOS 16.4 below caused by importing wizard connect library on app launch. Library uses ES2022 features (iOS 16.4+).
    • Lazy import wizard connect manager in init function.
    • Explicitly put wizard connect library in separate chunk in webpack.
    • Added message when opening wizard connect for unsupported iOS devices.
  • Minor ui adjustment on paste url dialog in wizard connect.
  • UI adjustment to wizard connect request dialog

Note:

  • Wizard Connect will not be available on iOS versions below 16.4 due to unsupported ES2022 features.
  • Must raise the minimum iOS deployment target from 13.0 to 16.4 after the next release only.

Screenshots (if applicable):

Screenshot 2026-03-26 at 9 08 27 AM

Type of Change

  • UI improvements with no business logic changes
  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update

Test Notes

Tested on dev & build in ios simulator, using iOS 26.3 and iOS 16.2.

  • Both versions should be able to launch app without white screen.
  • Opening wizard connect in iOS 16.2 shouldn't proceed due to unsupported features in dependencies

@mentions

Mention the person or team responsible for reviewing the proposed changes.

- Skip initializing and just reset in switchWallet vuex action, let init run in boot during page refresh
- Re add initialization of wizard connect in boot file
- Reset wallet hash in wizard connect reset function
@khirvy019 khirvy019 requested a review from joemarct March 26, 2026 07:53
@opencode-agent
Copy link
Copy Markdown

PR Review Summary

Approved with Minor Suggestions

This PR effectively fixes the iOS 16.4 white screen issue through proper code splitting and lazy loading of the ES2022-dependent @wizardconnect library.


Key Changes (Correctly Implemented)

  1. Webpack Code Splitting (quasar.config.cjs:222-232)

    • Isolates @wizardconnect into separate chunk - prevents ES2022 code from blocking main bundle
  2. Lazy Loading (src/wallet/wizardconnect/service.js:105-118)

    • Dynamic import await import('@wizardconnect/wallet') only loads when needed
    • Prevents startup crash on older iOS versions
  3. Deferred Initialization (src/store/global/actions.js:454-457)

    • Skips automatic wizardconnect init during wallet switch
    • Prevents eager loading that would crash the app
  4. User-Friendly Error Handling (src/pages/apps/index.vue:570-601)

    • Shows clear error messages when wizardconnect fails
    • iOS-specific guidance for unsupported versions

Issues Found (Minor)

Issue 1: Unreachable Error Handling (src/pages/apps/index.vue:579)

if (!manager || true)  // Always true - likely debugging artifact

This condition should be if (!manager) only.

Issue 2: Redundant iOS Check (src/pages/apps/index.vue:587)

if (Platform.is.ios || true)  // Always shows iOS message on all platforms

Should be if (Platform.is.ios) to only suggest iOS updates for iOS users.


Translations

✅ All 21 i18n files properly updated with 4 new keys:

  • InitializingWizardConnect
  • NoWizardConnectServiceFound
  • WizardConnectFailedToLoad
  • ConsiderUpdatingIOSVersion

Testing Notes

Per PR description, tested on:

  • iOS 26.3 ✅ (app launches, wizardconnect works)
  • iOS 16.2 ✅ (app launches, wizardconnect shows error)

Recommendation

Merge after fixing the two || true conditions that appear to be debugging artifacts left in the code.

New%20session%20-%202026-03-26T07%3A54%3A21.516Z
opencode session  |  github run

@opencode-agent
Copy link
Copy Markdown

Found the issue! In src/pages/apps/index.vue:579, the code checks if (!webSocketManager) instead of if (!manager). The manager parameter is what the promise returns, but it's checking the wrong imported variable (the exchange websocket manager).

PR Review Summary:

Approve with Required Fix

Critical Bug:

  • src/pages/apps/index.vue:579 - Checks webSocketManager instead of manager. This is a copy-paste error that will cause the error message to never trigger correctly.

Correct implementation:

.then((manager) => {
  if (!manager) {  // Should be manager, not webSocketManager
    const errorMessage = this.$t('NoWizardConnectServiceFound', {}, 'No wizard connect service found');
    throw new Error(errorMessage);
  }

Other Changes (Correctly Implemented):

  1. ✅ Webpack code splitting isolates @wizardconnect into separate chunk
  2. ✅ Lazy loading via dynamic import in service.js
  3. ✅ Skipped automatic wizardconnect init during wallet switch
  4. ✅ iOS version check in error handling (line 587 is correct - no || true)
  5. ✅ All 21 i18n translations properly updated

Testing:

  • Confirmed fix addresses iOS 16.4 ES2022 compatibility issue
  • Proper separation of concerns between app startup and wizardconnect initialization

Recommendation: Fix the variable name bug at line 579 before merging.

New%20session%20-%202026-03-26T09%3A05%3A50.095Z
opencode session  |  github run

@opencode-agent
Copy link
Copy Markdown

PR Review: Fix/iOS 16 Build

Approved

This PR effectively resolves the iOS 16.4 white screen issue by isolating ES2022-dependent code through proper code splitting and lazy loading.


Key Implementation Details

1. Webpack Code Splitting (quasar.config.cjs:222-232)

  • Successfully isolates @wizardconnect library into separate chunk
  • Prevents ES2022 code from blocking main bundle execution on older iOS versions

2. Lazy Loading (src/wallet/wizardconnect/service.js:105-118)

  • Dynamic import await import('@wizardconnect/wallet') only loads when explicitly called
  • WalletConnectionManager is now lazily initialized, preventing startup crashes

3. Deferred Initialization (src/store/global/actions.js:454-457)

  • Skips automatic wizardconnect init during wallet switch (commented out with clear explanation)
  • Prevents eager loading that would cause crashes on unsupported iOS versions

4. User-Friendly Error Handling (src/pages/apps/index.vue:570-601)

  • Shows loading state during initialization
  • Displays clear error messages with iOS-specific guidance when wizardconnect fails
  • Proper error propagation and cleanup in .catch() and .finally() blocks

i18n Coverage

✅ All 21 language files properly updated with 4 new translation keys:

  • InitializingWizardConnect
  • NoWizardConnectServiceFound
  • WizardConnectFailedToLoad
  • ConsiderUpdatingIOSVersion

Testing Validation

Per PR description:

  • iOS 26.3: App launches, wizardconnect works ✅
  • iOS 16.2: App launches, wizardconnect shows graceful error ✅

Conclusion

The implementation correctly addresses the root cause while maintaining backward compatibility. The code is clean, well-commented, and includes appropriate error handling for unsupported devices.

Recommendation: Merge ✅

New%20session%20-%202026-03-26T09%3A34%3A34.229Z
opencode session  |  github run

@opencode-agent
Copy link
Copy Markdown

PR Review Summary

Approved

This PR effectively resolves the iOS 16.4 white screen issue by isolating ES2022-dependent code through proper code splitting and lazy loading.


Key Implementation Details

1. Webpack Code Splitting (quasar.config.cjs:222-232)

  • Successfully isolates @wizardconnect library into separate chunk
  • Prevents ES2022 code from blocking main bundle execution on older iOS versions

2. Lazy Loading (src/wallet/wizardconnect/service.js:105-118)

  • Dynamic import await import('@wizardconnect/wallet') only loads when explicitly called
  • WalletConnectionManager is now lazily initialized, preventing startup crashes

3. Deferred Initialization (src/store/global/actions.js:454-457)

  • Skips automatic wizardconnect init during wallet switch (commented out with clear explanation)
  • Prevents eager loading that would cause crashes on unsupported iOS versions

4. User-Friendly Error Handling (src/pages/apps/index.vue:570-601)

  • Shows loading state during initialization
  • Displays clear error messages with iOS-specific guidance when wizardconnect fails
  • Proper error propagation and cleanup in .catch() and .finally() blocks

5. UI Improvements (src/pages/apps/wizard-connect.vue)

  • Simplified paste URL dialog with better styling and user experience

i18n Coverage

✅ All 21 language files properly updated with 4 new translation keys:

  • InitializingWizardConnect
  • NoWizardConnectServiceFound
  • WizardConnectFailedToLoad
  • ConsiderUpdatingIOSVersion

Testing Validation

Per PR description:

  • iOS 26.3: App launches, wizardconnect works ✅
  • iOS 16.2: App launches, wizardconnect shows graceful error ✅

Conclusion

The implementation correctly addresses the root cause while maintaining backward compatibility. The code is clean, well-commented, and includes appropriate error handling for unsupported devices.

Recommendation: Merge ✅

New%20session%20-%202026-03-30T05%3A38%3A51.324Z
opencode session  |  github run

…ialog

improved layout, make the transaction details section height use available space instead of fixed calculated height
@opencode-agent
Copy link
Copy Markdown

PR Review Summary

Approved

This PR correctly fixes the iOS 16.4 white screen issue through proper code splitting and lazy loading of the ES2022-dependent @wizardconnect library.


Key Implementation Details (Verified)

1. Webpack Code Splitting (quasar.config.cjs:222-232) ✅

  • Isolates @wizardconnect into separate chunk with splitChunks
  • Prevents ES2022 code from blocking main bundle on older iOS

2. Lazy Loading (src/wallet/wizardconnect/service.js:105-118) ✅

  • Dynamic import await import('@wizardconnect/wallet') loads only when needed
  • WalletConnectionManager lazily initialized with clear comment explaining iOS 16.3 compatibility

3. Deferred Initialization (src/store/global/actions.js:454-457) ✅

  • Skips automatic wizardconnect init during wallet switch
  • Properly commented to explain the deferral

4. Error Handling (src/pages/apps/index.vue:570-601) ✅

  • Loading state during initialization
  • Correct variable check: if (!manager) at line 579
  • Proper iOS check: if (Platform.is.ios) at line 587
  • User-friendly error messages with iOS-specific guidance

5. UI Improvements (src/pages/apps/wizard-connect.vue:128-151) ✅

  • Simplified paste URL dialog with card layout
  • Proper dark mode support via getDarkModeClass

6. i18n Coverage

  • All 21 language files updated with 4 new keys

Testing Notes

Per PR description:

  • iOS 26.3: App launches, wizardconnect works ✅
  • iOS 16.2: App launches, wizardconnect shows graceful error ✅

Recommendation: Merge ✅

New%20session%20-%202026-03-30T06%3A05%3A05.294Z
opencode session  |  github run

@joemarct joemarct merged commit 86b311e into master Mar 30, 2026
1 check passed
@joemarct joemarct deleted the fix/ios-16-build branch March 30, 2026 06:10
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