ionic-team / ionic-team/ionic-framework

Ionic Framework Lifecycle should wrap with vue ErrorHandler

Open
#30,374 0 comments 0 reactions 0 assignees View on GitHub
triage
Dominant language
TypeScript
Stars
52.7k
Forks
13.3k
Avg merge
1d 15h
Merged PRs (30d)
51

Description

## lifecycle should handle error

I diff the lifecycle hooks code between ionic and vue,
it is better to wrap hooks with `callWithAsyncErrorHandling` as vue do.

## no error handle

vue `onMounted` will hook `onErrorCaptured`, but `onIonViewWillEnter` not

```diff
- onIonViewWillEnter(async () => {
onMounted(async () => {
await init();
});
```

```log
common-class.ts:60 Uncaught (in promise) ApiResultError: Order has expired
at UseApiRouteFetcher.ts:107:15
at callHooks (ofetch.03887fc3.mjs:131:15)
at async $fetchRaw2 (ofetch.03887fc3.mjs:299:7)
at async $fetch2 (ofetch.03887fc3.mjs:316:15)
at async fetchTypedResult (typed-fetcher.ts:78:21)
at async ionicFetchResult (ionic-fetcher.ts:45:12)
at async init (prepay.vue?t=1745726446418:133:32)
at async prepay.vue?t=1745726446418:143:7
```

## ionic lifecycle.ts

https://github.com/ionic-team/ionic-framework/blob/c5c4d1d98973b5114f1e559526d54f5125aeafad/packages/vue/src/hooks/lifecycle.ts#L26-L31

## vue apiLifecycle.ts

https://github.com/vuejs/core/blob/6eb29d345aa73746207f80c89ee8b37ff7b949c9/packages/runtime-core/src/apiLifecycle.ts#L31-L45

```ts
const res = callWithAsyncErrorHandling(hook, target, type, args)
// ....
return res
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.