设置 EAS Observe
编辑页面
了解如何安装 EAS Observe,并开始从你的生产应用中收集性能指标。
For the complete documentation index, see llms.txt. Use this file to discover all available pages.
EAS Observe 会在生产环境中跟踪你应用的启动性能。本指南将带你完成库的安装、应用设置,以及查看你的第一组指标。
前提条件
3 requirements
3 requirements
1.
任何拥有 Expo 账号的人都可以使用 EAS Observe。你可以在 expo.dev/signup 注册。
2.
EAS Observe 需要 SDK 55 或更高版本。运行 npx expo-doctor 检查你的 SDK 版本,并运行 npx expo install --fix 更新依赖。
3.
你的应用必须已关联到一个 EAS 项目。请确保应用配置中的 extra.eas.projectId
包含项目 ID,或者通过运行 eas init 创建一个。
1
2
包裹你的根布局
使用 AppMetricsRoot(SDK 55)或 ObserveRoot(SDK 56 及更高版本)包裹你的根布局。这个高阶组件(HOC)会自动为你测量 首次渲染时间(TTR)。
import { Stack } from 'expo-router'; import { ObserveRoot } from 'expo-observe'; function RootLayout() { return <Stack />; } export default ObserveRoot.wrap(RootLayout);
import { Stack } from 'expo-router'; import { AppMetricsRoot } from 'expo-observe'; function RootLayout() { return <Stack />; } export default AppMetricsRoot.wrap(RootLayout);
3
标记为可交互
当你的应用完全准备好接受用户交互时,调用 markInteractive()。这应该在闪屏之后的初始化工作全部完成后调用,例如:
- 检查更新
- 用户认证
- 获取初始数据
- 播放闪屏动画
import { Stack } from 'expo-router'; import * as SplashScreen from 'expo-splash-screen'; import { ObserveRoot, useObserve } from 'expo-observe'; import { useEffect, useState } from 'react'; // 在获取资源期间保持闪屏可见 SplashScreen.preventAutoHideAsync(); function RootLayout() { const [isReady, setIsReady] = useState(false); const { markInteractive } = useObserve(); useEffect(() => { async function prepare() { try { await authenticateUser(); await fetchInitialData(); } catch (e) { console.warn(e); } finally { setIsReady(true); } } prepare(); }, []); useEffect(() => { if (isReady) { SplashScreen.hide(); markInteractive(); } }, [isReady, markInteractive]); if (!isReady) { return null; } return <Stack />; } export default ObserveRoot.wrap(RootLayout);
import { Stack } from 'expo-router'; import * as SplashScreen from 'expo-splash-screen'; import { AppMetrics, AppMetricsRoot } from 'expo-observe'; import { useEffect, useState } from 'react'; // 在获取资源期间保持闪屏可见 SplashScreen.preventAutoHideAsync(); function RootLayout() { const [isReady, setIsReady] = useState(false); useEffect(() => { async function prepare() { try { await authenticateUser(); await fetchInitialData(); } catch (e) { console.warn(e); } finally { setIsReady(true); } } prepare(); }, []); useEffect(() => { if (isReady) { SplashScreen.hide(); AppMetrics.markInteractive(); } }, [isReady]); if (!isReady) { return null; } return <Stack />; } export default AppMetricsRoot.wrap(RootLayout);
markInteractive()可以在每个会话中安全地调用多次,但只有第一次调用会记录该指标。如果你的应用有多个入口屏幕(例如引导流程、登录流程或深度链接目标),请在这些屏幕中的每一个上调用markInteractive。如果你只在其中一个屏幕上调用,当应用通过深度链接打开到另一个屏幕时,可交互时间(TTI) 将不会被记录。
4
创建新构建
在安装 expo-observe 并添加埋点后,请为你的应用创建一个新构建:
- eas build默认情况下,从调试构建收集的指标不会被发送。若要在调试构建中测试集成,请参阅在开发环境中启用指标。
5
查看你的指标
打开你的项目,并打开 EAS 控制台中的 Observe 选项卡 来查看来自你的应用的指标。
有关筛选、版本比较和会话调查的详细信息,请参阅 Dashboard 指南。
你也可以使用 EAS CLI 通过终端查询指标:
eas observe:versions:列出应用版本及其构建 ID、更新组 ID 和发布日期。适用于查找筛选其他命令所需的版本标识符。eas observe:metrics-summary:按应用版本分组显示汇总的性能指标统计信息(例如中位数、p75 和 p95 值)。可用于比较不同发布版本之间的整体启动性能。eas observe:metrics:按数值排序显示单个性能指标事件,包括会话和设备元数据。可用于调查特定的缓慢会话或异常值。eas observe:events:显示应用通过Observe.logEvent发送的单个事件。详情请参阅用户定义事件。
使用 --help 运行上述任意命令,以查看可用的标志和参数。