@capgo/capacitor-webview-crash

中文文档
8.1.13发布于 2026/10/15MPL-2.0TypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 7.3万

用于在本地检测WebView崩溃恢复并重启长期运行的Web Victor插件.

中文使用文档
文档目录20 节
  1. *免费开始*
  2. 主要特点
  3. 它会做什么
  4. 它不会做什么
  5. 兼容性
  6. 安装
  7. 使用量
  8. 本地自动重新启动
  9. 配置类型
  10. 平台说明
  11. 文档
  12. API 密码
  13. 获取PingingCrashInfo ()
  14. 清除PendingCrashInfo( )
  15. 模拟崩溃恢复( )
  16. 重新启动 WebView ()
  17. 添加 listener ("webView Rested After Crash" +"webView Rested …
  18. 删除所有收听器( )
  19. 接口
  20. 类型异名

@ capgo/ 电容- webview- crash

在 WebView 崩溃时保持您的 Capacitor app 活性: 检测已恢复的崩溃, 在本地重启已死亡的 Web Victor , 并回收长期运行的 Web Victor 在内存耗尽之前 .

Capgo - Build Capacitor apps with AI, ship updates instantly

队长:在几分钟内向您的Capacitor用户推进修正,在没有Mac的情况下构建签名的iOS和Android应用程序,以及 卷回一击.

*免费开始*

14天无限自由审判. 不需要信用卡

🤖 建筑与AI编码代理? 安装 Capgo 技能 所以克劳德代码,代码,光标,副驾驶,或双子座CLI知道如何安装和使用 @capgo/capacitor-webview-crash 在您的电容应用程序中: npx skills add Cap-go/capgo-skills。然后问你的经纪人: 加上@capgo/capor-webview-crash到我的Capacitor应用上并把它接上" 代理设置指南 • 妇女 主机磁共振

@capgo/capacitor-webview-crash for Capacitor apps

主要特点

  • 崩溃恢复数字 : restartOnCrash 当 WebView 的渲染器进程终止时重新启动它.
  • 回收信息数字 : getPendingCrashInfo() 财务报告和审定财务报表 clearPendingCrashInfo(),加上 webViewRestoredAfterCrash 活动.
  • 计划再循环数字 : restartIntervalMs 或者说 restartCron 替换长期运行的 Web 视图.
  • 手动重新启动数字 : restartWebView() 创建新的 Webview .
  • 测试数字 : simulateCrashRecovery() 练习恢复流程.
  • 平台: iOS和Android. 互联网档案馆的存檔,存档日期2013-12-21. Web 只支持测试帮助者.

它会做什么

  • Android 报告时存储本地崩溃标记 onRenderProcessGone。 。 。 .
  • Hooks the iOS WebView 终止回调,并坚持等效崩溃元数据.
  • 崩溃后恢复了WebView的本地状态,所以恢复不依赖于仍在运行的JavaScript运行时间.
  • 可以重启WebView在固定的本地间隔上为站台,POS,指示器,遥测等总是运行的应用程序.
  • 让 JavaScript 请求本地的 WebVew 重新启动 restartWebView() 当应用程序想要主动回收记忆时.
  • 通过一个事件,一个投票方法,和一个测试恢复流量的模拟帮助器来展示标记.
  • 以本地存储模拟相同回收流量的网络实施.

它不会做什么

  • 防止潜在的WebView崩溃发生.
  • 自动恢复丢失的 CavaScript 状态 .
  • 替换应用程序级状态持久性 。 在启动预定重启之前, 坚持临界状态 .

兼容性

插件版本电容兼容性维护
联合国联合国✅
页:1页:1应要求
页:1页:1应要求

政策:

  • 新的插件从版本开始 8.0.0 (8号电站基线).
  • 对更古老的Capacitor主机的后向相容性按需支持.

安装

您可以使用我们的 AI 辅助设置安装插件 。 使用以下命令将 Capgo 技能添加到您的 AI 工具 :

npx skills add https://github.com/cap-go/capacitor-skills --skill capacitor-plugins

然后使用下列提示:

Use the `capacitor-plugins` skill from `cap-go/capacitor-skills` to install the `@capgo/capacitor-webview-crash` plugin in my project.

如果您更喜欢手动设置,请通过运行以下命令来安装插件,并遵循下面的平台特定指令:

npm install @capgo/capacitor-webview-crash
npx cap sync

使用量

import { WebViewCrash } from '@capgo/capacitor-webview-crash';

await WebViewCrash.addListener('webViewRestoredAfterCrash', async (info) => {
  console.log('Recovered after a WebView crash', info);
  await WebViewCrash.clearPendingCrashInfo();
});

await WebViewCrash.addListener('webViewRestoredAfterRestart', async (info) => {
  console.log('Recovered after a native WebView restart', info);
  await WebViewCrash.clearPendingCrashInfo();
});

const pending = await WebViewCrash.getPendingCrashInfo();
if (pending.value) {
  console.log('Pending crash or restart marker', pending.value);
}

使用 simulateCrashRecovery() 在开发或自动测试中进行你的恢复UI,而不会强迫真正的本地WebView崩溃.

打电话 restartWebView() 当当前 JavaScript 运行时间决定本地 WebView 应替换时 :

await WebViewCrash.restartWebView();

呼叫中写着一个待定的标记 reason: 'manualRestart',然后本地代码重新启动 WebView。 Android 重现主机活动. iOS 重建 Capacitor 桥视图, 这样新建 WKWebView 创建,而不是重新装入当前页面.

本地自动重新启动

配置插件在 capacitor.config.ts 因此,即使JavaScript运行时间不可用,也会在本地代码中重新启动决定:

import type { CapacitorConfig } from '@capacitor/cli';
import type { WebViewCrashPluginConfig } from '@capgo/capacitor-webview-crash';

const webViewCrash: WebViewCrashPluginConfig = {
  // Keep native crash recovery enabled. This is the default.
  restartOnCrash: true,

  // Use a 5-field cron schedule in the device local timezone.
  // Do not combine restartCron with an active restartIntervalMs.
  restartCron: '0 3 * * *',

  // Optional delay before restarting after a crash.
  restartAfterCrashDelayMs: 0,
};

const config: CapacitorConfig = {
  plugins: {
    WebViewCrash: webViewCrash,
  },
};

export default config;

对持续开放数天的应用程序使用预定重启:站台屏幕,控制室仪表板,售出点终端,仓库扫描仪,车辆平板电脑,或者任何无法依赖用户强制关闭的Capacitor应用程序. 重启是本地的, 写一个待定的标记 reason: 'periodicRestart',然后创建新的 Webview.

设定 restartIntervalMs 您的产品可以容忍或设定的维护窗口 restartCron 诸如: 0 3 * * * 每天3: 00重启. restartCron 在设备本地时区中使用 5- 字段语法并支持 *、列表、范围和步骤。 请不要同时配置两个调度: 本地初始化在 restartCron 设置和 restartIntervalMs 大于 0。用户将获得一个新的 JavaScript 运行时间, 因此在启用短间隔或 cron 调度之前, 持续未保存的形式状态、 已排队的事件和进行中的工作 .

配置类型

export interface WebViewCrashPluginConfig {
  restartOnCrash?: boolean;
  restartIntervalMs?: number;
  restartCron?: string;
  restartAfterCrashDelayMs?: number;
}

平台说明

  • iOS: (英语) 对电容器的用法 WebViewDelegationHandler 在 Capacitor 重新装入 WebView 之前坚持崩溃元数据。 手动重启和计划重新启动重建 Capacitor 桥视图, 从而新建 WKWebView 创建实例。 不需要额外的权限 .
  • 机器人: 注册 a 管理员 WebViewListener 并持续从 onRenderProcessGone. crash并计划重启重设桥接并再创建主机活动,给应用程序一个新鲜的Webview. 不需要额外的权限 .
  • 网络 : 没有真正的浏览器崩溃检测 。 网络执行仅以本地存储来模拟恢复流量.

文档

API 密码

恢复的WebView崩溃和重启检测的API控制器 .

获取PingingCrashInfo ()

getPendingCrashInfo() => Promise<PendingCrashInfoResult>

如果存在的话, 返回待定的本地崩溃或重新启动标记 .

回返情况: Promise<PendingCrashInfoResult>


清除PendingCrashInfo( )

clearPendingCrashInfo() => Promise<void>

在应用程序处理回收后清除存储的标记 .


模拟崩溃恢复( )

simulateCrashRecovery() => Promise<PendingCrashInfoResult>

创建一个假崩溃标记, 以便本地测试恢复流量 .

回返情况: Promise<PendingCrashInfoResult>


重新启动 WebView ()

restartWebView() => Promise<PendingCrashInfoResult>

存储手动重启标记并请求本地代码创建新鲜的WebView.

在Android上,这个重现了主机活动. 在iOS上,它重建 Capacitor 桥面,这样一个新的 WKWebView 实例创建,而不是重新装入当前页面.

回返情况: Promise<PendingCrashInfoResult>


添加 listener ("webView Rested After Crash" +"webView Rested After Restart", ...) 的监听器

addListener(eventName: 'webViewRestoredAfterCrash' | 'webViewRestoredAfterRestart', listenerFunc: (info: WebViewCrashInfo) => void) => Promise<PluginListenerHandle>

在新的 JavaScript 运行时间附加一个收听器后起火,一个匹配的标记仍然待定.

参数类型
eventName'webViewRestoredAfterCrash' | 'webViewRestoredAfterRestart'
listenerFunc(info: WebViewCrashInfo) => void

回返情况: Promise<PluginListenerHandle>


删除所有收听器( )

removeAllListeners() => Promise<void>

删除所有插件听众.


接口

待处理的崩溃信息

等待崩溃或重启标记返回 JavaScript .

Prop类型说明
valueWebViewCrashInfo | null存储崩溃或重启元数据,或 null 当没有标记待决时.

网络视频崩溃信息

上一个 WebView 进程死后或重新启动后, 本地捕获的元数据 .

Prop类型说明
platformWebViewCrashPlatform检测并存储标记的平台.
timestampnumber当标记被写入时, 用毫秒表示 .
timestampISOstringISO-8601 版本,内容为 timestamp。 。 。 .
reasonWebViewCrashReason平台特定原因为崩溃或重启标记.
urlstring标记被写入时最后已知的 WebView URL .
didCrashboolean仅来自 Android 的提示 RenderProcessGoneDetail.didCrash()。 。 。 .
rendererPriorityAtExitnumber退出时只报告Android渲染器优先级.
appStateWebViewCrashAppState标记被写入时捕获到的只有iOS应用程序状态.

插件听筒

Prop类型
remove() => Promise<void>

类型异名

WebView CrashPlat窗体

生产被存储标记的平台.

'android' | 'ios' | 'web'

WebView CrashReason (英语)

上一个 WebView 失败或重新启动的原生原因报告 .

'renderProcessGone' | 'webContentProcessDidTerminate' | 'periodicRestart' | 'manualRestart' | 'simulated'

WebView CrashApp 状态

WebView进程死后,在iOS上捕获了最佳应用状态.

'active' | 'inactive' | 'background' | 'unknown'

版本与发布记录

@capgo/capacitor-webview-crash 共发布 18 个版本,首次发布于 2026/04/29;过去 12 个月发布了 18 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
8.1.13latest2026/10/1525 天前
8.1.122026/10/1327 天前
8.1.112026/10/081 个月前
8.1.102026/09/161 个月前
8.1.92026/09/042 个月前
8.1.82026/09/032 个月前

其他发布通道:lts-v7 → 7.1.0。

关于 @capgo/capacitor-webview-crash 的常见问题

@capgo/capacitor-webview-crash 是什么?

用于在本地检测WebView崩溃恢复并重启长期运行的Web Victor插件.

如何安装 @capgo/capacitor-webview-crash?

在项目目录运行 npm install @capgo/capacitor-webview-crash,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@capacitor/core(>=8.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@capgo/capacitor-webview-crash 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@capgo/capacitor-webview-crash 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@capgo/capacitor-webview-crash 可以商用吗?

@capgo/capacitor-webview-crash 使用 MPL-2.0 许可。弱 Copyleft:可以商用,也可以和闭源代码一起使用;但如果分发时修改了 MPL 授权的文件,这些文件的修改需以 MPL 开源。以上为概括,不构成法律意见,请以许可原文为准。

@capgo/capacitor-webview-crash 的下载量有多少?

根据 npm 官方下载统计,@capgo/capacitor-webview-crash 在 2026/10/09 – 2026/11/07 这 30 天内被下载 72,537 次,日均约 2,418 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@capgo/capacitor-webview-crash 还在维护吗?

最新版本 8.1.13 发布于 2026/10/15(25 天前);至今共发布 18 个版本,其中过去 12 个月发布了 18 个;首次发布于 2026/04/29。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。