diff --git a/client/shared/event/index.ts b/client/shared/event/index.ts index 16afa4e3..6702f5a5 100644 --- a/client/shared/event/index.ts +++ b/client/shared/event/index.ts @@ -13,6 +13,11 @@ export interface SharedEventMap { */ loginSuccess: (userInfo: UserBaseInfo) => void; + /** + * app加载成功 + */ + appLoaded: () => void; + /** * 修改配色方案 */ diff --git a/client/web/plugins/com.msgbyte.posthog/src/index.tsx b/client/web/plugins/com.msgbyte.posthog/src/index.tsx index 8aac1a9a..d8437254 100644 --- a/client/web/plugins/com.msgbyte.posthog/src/index.tsx +++ b/client/web/plugins/com.msgbyte.posthog/src/index.tsx @@ -50,6 +50,13 @@ try { temporary: userInfo.temporary, }); }); + + sharedEvent.on('appLoaded', () => { + // 上报加载耗时 + posthog.capture('App Loaded', { + usage: performance.now(), + }); + }); } catch (err) { console.error(err); } diff --git a/client/web/src/App.tsx b/client/web/src/App.tsx index 2463bccc..9033d83c 100644 --- a/client/web/src/App.tsx +++ b/client/web/src/App.tsx @@ -1,4 +1,4 @@ -import React, { PropsWithChildren, Suspense } from 'react'; +import React, { PropsWithChildren, Suspense, useEffect } from 'react'; import { BrowserRouter, HashRouter, @@ -6,7 +6,12 @@ import { Route, Routes, } from 'react-router-dom'; -import { TcProvider, useColorScheme, useLanguage } from 'tailchat-shared'; +import { + sharedEvent, + TcProvider, + useColorScheme, + useLanguage, +} from 'tailchat-shared'; import clsx from 'clsx'; import { Loadable } from './components/Loadable'; import { ConfigProvider as AntdProvider } from 'antd'; @@ -95,6 +100,10 @@ AppHeader.displayName = 'AppHeader'; export const App: React.FC = React.memo(() => { useRecordMeasure('appRenderStart'); + useEffect(() => { + sharedEvent.emit('appLoaded'); + }, []); + return (