Skip to content

feat(dev): frontend browser metrics report#17630

Draft
syuilo wants to merge 45 commits into
developfrom
frontend-browser-metrics-workflow-2
Draft

feat(dev): frontend browser metrics report#17630
syuilo wants to merge 45 commits into
developfrom
frontend-browser-metrics-workflow-2

Conversation

@syuilo

@syuilo syuilo commented Jun 27, 2026

Copy link
Copy Markdown
Member

What

GitHub Actions上でブラウザを立ち上げてアカウント作成→投稿までを行い、実際の通信量などの統計を確認できるようにする

Why

既にバンドル情報をレポートするワークフローはあるが、それよりも実際の環境に近い値を確認できる

Additional info (optional)

Checklist

  • Read the contribution guide
  • Test working in a local environment
  • (If needed) Add story of storybook
  • (If needed) Update CHANGELOG.md
  • (If possible) Add tests

Sample:

🖥 Frontend Browser Metrics

Only metrics showing significant changes are displayed.

Metric Base Head Δ median Δ MAD Δ min Δ max
Tab memory 9.3 MB 9.3 MB $\color{orange}{\text{+60 KB}}$ 44 KB $\color{green}{\text{-10 KB}}$ $\color{orange}{\text{+534 KB}}$

View details

Requests by resource type
Type Requests Encoded bytes
Base Head Δ Base Head Δ
Document 2 2 0 33 KB 33 KB 0 B
Script 146 146 0 2.3 MB 2.3 MB 0 B
Stylesheet 60 60 0 302 KB 302 KB 0 B
Fetch 22 22 0 73 KB 73 KB 0 B
Image 11 11 0 254 KB 254 KB 0 B
Font 2 2 0 118 KB 118 KB 0 B
Other 9 9 0 421 KB 421 KB $\color{orange}{\text{+12 B}}$
V8 heap snapshot statistics
Metric Base Head Δ median Δ MAD Δ min Δ max
$\color{gray}{\rule{8pt}{8pt}}$ Total 12 MB
± 10 KB
12 MB
± 36 KB
$\text{-6 KB}$
$\text{-0.1\%}$
8.1 KB $\text{-14 KB}$ $\text{+83 KB}$
$\color{orange}{\rule{8pt}{8pt}}$ Code25.1% → 25.1%
2.9 MB 2.9 MB $\text{+15 KB}$ 21 KB $\text{-18 KB}$ $\text{+42 KB}$
$\color{red}{\rule{8pt}{8pt}}$ Strings10.6% → 10.6%
1.2 MB 1.2 MB $\text{+256 B}$ 88 B $\text{+28 B}$ $\text{+348 B}$
$\color{cyan}{\rule{8pt}{8pt}}$ JS arrays1.1% → 1.1%
126 KB 126 KB 0 B 16 B $\text{-16 B}$ $\text{+16 B}$
$\color{green}{\rule{8pt}{8pt}}$ Typed arrays0% → 0%
0 B 0 B 0 B 0 B 0 B 0 B
$\color{yellow}{\rule{8pt}{8pt}}$ System objects0% → 0%
0 B 0 B 0 B 0 B 0 B 0 B
$\color{violet}{\rule{8pt}{8pt}}$ Other JS objs18.4% → 18.3%
2.1 MB 2.1 MB $\text{-144 B}$ 336 B $\text{-480 B}$ $\text{+2 KB}$
$\color{pink}{\rule{8pt}{8pt}}$ Other non-JS objs44.8% → 44.8%
5.2 MB 5.2 MB $\text{+6.6 KB}$ 15 KB $\text{-50 KB}$ $\text{+65 KB}$
Head heap snapshot composition
%%{init: {"sankey":{"showValues":false,"linkColor":"target","labelStyle":"outlined","nodeAlignment":"center","nodePadding":10,"nodeColors":{"Head":"#888888","code":"#f28e2c","system / InstructionStream":"#f28e2c","Other":"#888888","strings":"#e15759","string":"#e15759","jsArrays":"#76b7b2","otherJsObjects":"#af7aa1","object shape":"#af7aa1","otherNonJsObjects":"#ff9da7","Extra native bytes":"#ff9da7","system / ExternalStringData":"#ff9da7"}}}}%%
sankey-beta
"Head","Code",25.1
"Code","system / InstructionStream",13.53
"Code","Other",11.57
"Head","Strings",10.61
"Strings","string",10.34
"Strings","Other",0.26
"Head","JS arrays",1.08
"Head","Other JS objs",18.33
"Other JS objs","object shape",5.8
"Other JS objs","Other",12.52
"Head","Other non-JS objs",44.76
"Other non-JS objs","Extra native bytes",17.85
"Other non-JS objs","system / ExternalStringData",14.94
"Other non-JS objs","Other",11.97
Loading

Download representative head heap snapshot

@syuilo syuilo changed the title wip feat(dev): frontend browser metrics report Jun 27, 2026
@kakkokari-gtyih

Copy link
Copy Markdown
Member

github actions上でやるべきなのか、e2e(Cypress)の再整備をしつつそちらのメモリ使用量を取ってくるようにするべきなのかは検討の余地がありそう

@samunohito

Copy link
Copy Markdown
Member

github actions上でやるべきなのか、e2e(Cypress)の再整備をしつつそちらのメモリ使用量を取ってくるようにするべきなのか

測定用途なら、Playwrightを使って測定するのが良いかと思います(それをGitHubActionsの上でやるイメージ)。
Cypressはテスト対象をiframeの中に埋め込んで動かす形なので、Cypressそのものの影響が混ざりやすそうです。
一方で、Playwrightはテスト対象をそのまま開いて外部から操作する形なので、この用途に合うと思います

@kakkokari-gtyih

Copy link
Copy Markdown
Member

(Cypressによるfrontend e2eを、Playwright + Vitest Browser Modeに置き換えるという手もある)

@samunohito

Copy link
Copy Markdown
Member

(たぶんCypressをメンテするよりそっちの方が良い)

@github-actions github-actions Bot added the packages/backend Server side specific issue/PR label Jun 28, 2026
@codecov

codecov Bot commented Jun 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 24.60%. Comparing base (059fbaa) to head (2573643).

Additional details and impacted files
@@             Coverage Diff             @@
##           develop   #17630      +/-   ##
===========================================
+ Coverage    24.58%   24.60%   +0.02%     
===========================================
  Files         1164     1162       -2     
  Lines        39555    39521      -34     
  Branches     10940    10932       -8     
===========================================
  Hits          9724     9724              
+ Misses       23897    23866      -31     
+ Partials      5934     5931       -3     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

github-actions Bot commented Jun 28, 2026

Copy link
Copy Markdown
Contributor

このPRによるapi.jsonの差分
差分はありません。
Get diff files from Workflow Page

@github-actions

github-actions Bot commented Jun 28, 2026

Copy link
Copy Markdown
Contributor

📦 Frontend Bundle Report

Chunk size diff (0 updated, 0 added, 0 removed)

No data

Startup chunk size (0 updated, 0 added, 0 removed)
Chunk Before After Δ Δ (%)
(total) 1.1 MB 1.1 MB 0 B 0%
os ja-JP/aEA5QfpmU-CuIcGZ4Q.js
467 KB 467 KB 0 B 0%
i18n ja-JP/aEA5QfpmU-Dv4DIZFA.js
216 KB 216 KB 0 B 0%
photoswipe ja-JP/aEA5QfpmU-46O-_VUQ.js
73 KB 73 KB 0 B 0%
src/_boot_.ts ja-JP/aEA5QfpmU-BFNvaRjl.js
64 KB 64 KB 0 B 0%
runtime-core.esm-bundler ja-JP/aEA5QfpmU-CyPDfpcP.js
50 KB 50 KB 0 B 0%
MkNotification ja-JP/aEA5QfpmU-BeGmVKK72.js
23 KB 23 KB 0 B 0%
built ja-JP/aEA5QfpmU-7DT8rof3.js
21 KB 21 KB 0 B 0%
reactivity.esm-bundler ja-JP/aEA5QfpmU-BJR4BmL-.js
21 KB 21 KB 0 B 0%
store ja-JP/aEA5QfpmU-Dj9g_U1g.js
18 KB 18 KB 0 B 0%
runtime-dom.esm-bundler ja-JP/aEA5QfpmU-DyWpCC4b.js
17 KB 17 KB 0 B 0%
tinycolor ja-JP/aEA5QfpmU-PEGdpOg42.js
15 KB 15 KB 0 B 0%
common ja-JP/aEA5QfpmU-BTDyd5TO2.js
15 KB 15 KB 0 B 0%
achievements ja-JP/aEA5QfpmU-Gj3uXX79.js
10 KB 10 KB 0 B 0%
widgets ja-JP/aEA5QfpmU-oZoFLwID.js
9.7 KB 9.7 KB 0 B 0%
theme ja-JP/aEA5QfpmU-Dadd1WAo2.js
8.3 KB 8.3 KB 0 B 0%
MkCustomEmoji ja-JP/aEA5QfpmU-NGBxxnLc2.js
6.5 KB 6.5 KB 0 B 0%
MkAnimBg ja-JP/aEA5QfpmU-CB3yHUb32.js
4.8 KB 4.8 KB 0 B 0%
MkSwiper ja-JP/aEA5QfpmU-_oI63Dyv2.js
3 KB 3 KB 0 B 0%
navbar ja-JP/aEA5QfpmU-Dr0-pAKb.js
2.9 KB 2.9 KB 0 B 0%
MkUrl ja-JP/aEA5QfpmU-CYk09rsX2.js
2.9 KB 2.9 KB 0 B 0%
MkTabs ja-JP/aEA5QfpmU-o-_ymxpV2.js
2.8 KB 2.8 KB 0 B 0%
MkCode ja-JP/aEA5QfpmU-MNo6u4TR2.js
2.7 KB 2.7 KB 0 B 0%
lookup ja-JP/aEA5QfpmU-Q5IltrT02.js
2.3 KB 2.3 KB 0 B 0%
MkSparkle ja-JP/aEA5QfpmU-DqteAj5t2.js
2.2 KB 2.2 KB 0 B 0%
dist ja-JP/aEA5QfpmU-DH0lBfzW.js
1.8 KB 1.8 KB 0 B 0%
_dark ja-JP/aEA5QfpmU-DfGzfoC32.js
1.8 KB 1.8 KB 0 B 0%
media-proxy ja-JP/aEA5QfpmU-D1Esi0VM.js
1.7 KB 1.7 KB 0 B 0%
_light ja-JP/aEA5QfpmU-D67CB4xl.js
1.7 KB 1.7 KB 0 B 0%
hotkey ja-JP/aEA5QfpmU-BANPEcdb.js
1.6 KB 1.6 KB 0 B 0%
is-birthday ja-JP/aEA5QfpmU-Co5lS-EB2.js
1.5 KB 1.5 KB 0 B 0%
MkStickyContainer ja-JP/aEA5QfpmU-BmzaPEiW2.js
1.4 KB 1.4 KB 0 B 0%
config ja-JP/aEA5QfpmU-DGOcRaCi.js
1.3 KB 1.3 KB 0 B 0%
preload-helper ja-JP/aEA5QfpmU-DyAp3Zfi.js
1.3 KB 1.3 KB 0 B 0%
MkLoading ja-JP/aEA5QfpmU-B5oKftjY2.js
1.1 KB 1.1 KB 0 B 0%
MkInfo ja-JP/aEA5QfpmU-CExFr2U9.js
1 KB 1 KB 0 B 0%
webgl ja-JP/aEA5QfpmU-wb3e_Vqx2.js
1 KB 1 KB 0 B 0%
use-scroll-position-keeper ja-JP/aEA5QfpmU-D3DG5prY2.js
990 B 990 B 0 B 0%
misskey-api ja-JP/aEA5QfpmU-DyMaik4b.js
986 B 986 B 0 B 0%
instance ja-JP/aEA5QfpmU-BxWdoXDL.js
918 B 918 B 0 B 0%
get-note-summary ja-JP/aEA5QfpmU-De5IKbAQ.js
704 B 704 B 0 B 0%
rolldown-runtime ja-JP/aEA5QfpmU-QTnfLwEv.js
694 B 694 B 0 B 0%
page ja-JP/aEA5QfpmU-BDSYajSq.js
688 B 688 B 0 B 0%
i ja-JP/aEA5QfpmU-D1y_EGFD.js
631 B 631 B 0 B 0%
clear-cache ja-JP/aEA5QfpmU-aZ67jd452.js
472 B 472 B 0 B 0%
emoji-base ja-JP/aEA5QfpmU-BVbfT0gI2.js
413 B 413 B 0 B 0%
d-green-lime ja-JP/aEA5QfpmU-DEHvjKGz.js
391 B 391 B 0 B 0%
use-interval ja-JP/aEA5QfpmU-nsCIt9Jr.js
384 B 384 B 0 B 0%
l-light ja-JP/aEA5QfpmU-B8GJAiDX.js
351 B 351 B 0 B 0%
user ja-JP/aEA5QfpmU-SLQFmrJv.js
205 B 205 B 0 B 0%
get-bg-color ja-JP/aEA5QfpmU-B6J3wW2j2.js
190 B 190 B 0 B 0%
isChromatic ja-JP/aEA5QfpmU-Dd9satMa2.js
172 B 172 B 0 B 0%
is-device-darkmode ja-JP/aEA5QfpmU-CHGi6RJT2.js
93 B 93 B 0 B 0%
_plugin-vue_export-helper ja-JP/aEA5QfpmU-BDNMzG2s.js
84 B 84 B 0 B 0%

Startup chunks are the Vite entry for src/_boot_.ts and its static imports.

Bundle Stats

Bundles Modules Entries Imports Size
Static Dynamic Rendered Gzip Brotli
Before 466 2,853 21 8,580 323 10 MB 2.8 MB 2.4 MB
After 466 2,853 21 8,580 323 10 MB 2.8 MB 2.4 MB
Δ 0 0 0 0 0 $\text{-101 B}$ $\text{-77 B}$ $\text{+33 B}$
Δ (%) 0% 0% 0% 0% 0% $\text{-0\%}$ $\text{-0\%}$ $\text{+0\%}$

Open treemap HTML

@github-actions

github-actions Bot commented Jun 28, 2026

Copy link
Copy Markdown
Contributor

⚙️ Backend Memory Usage Report

After GC

Metric Base Head Δ median Δ MAD Δ min Δ max
HeapUsed 72.6 MB
± 0 MB
72.6 MB
± 0 MB
$\text{+0 MB}$
$\text{+0\%}$
0 MB $\text{-0 MB}$ $\text{+0.1 MB}$
Pss 277.5 MB
± 1.3 MB
279.3 MB
± 0.7 MB
$\color{orange}{\text{+0.9 MB}}$
$\color{orange}{\text{+0.3\%}}$
2.6 MB $\color{green}{\text{-1.8 MB}}$ $\color{orange}{\text{+5.9 MB}}$
Private_Dirty 233.7 MB
± 0.8 MB
235.7 MB
± 0.9 MB
$\color{orange}{\text{+0.7 MB}}$
$\color{orange}{\text{+0.3\%}}$
2.5 MB $\color{green}{\text{-2.1 MB}}$ $\color{orange}{\text{+5.7 MB}}$
VmRSS 315.2 MB
± 1 MB
316.9 MB
± 0.7 MB
$\color{orange}{\text{+1 MB}}$
$\color{orange}{\text{+0.3\%}}$
2.9 MB $\color{green}{\text{-2.2 MB}}$ $\color{orange}{\text{+5.7 MB}}$
External 8.7 MB
± 0 MB
8.7 MB
± 0 MB
0 MB
0%
0 MB 0 MB 0 MB

V8 Heap Snapshot Statistics

Metric Base Head Δ median Δ MAD Δ min Δ max
$\color{gray}{\rule{8pt}{8pt}}$ Total 86 MB
± 45 KB
86 MB
± 4.2 KB
$\text{+11 KB}$
$\text{+0\%}$
22 KB $\text{-11 KB}$ $\text{+98 KB}$
$\color{orange}{\rule{8pt}{8pt}}$ Code28.8% → 28.8%
25 MB 25 MB $\text{+2.7 KB}$ 3.8 KB $\text{-11 KB}$ $\text{+11 KB}$
$\color{red}{\rule{8pt}{8pt}}$ Strings34.8% → 34.7%
30 MB 30 MB $\text{+416 B}$ 416 B 0 B $\text{+4 KB}$
$\color{cyan}{\rule{8pt}{8pt}}$ JS arrays4.8% → 4.8%
4.1 MB 4.1 MB 0 B 0 B 0 B 0 B
$\color{green}{\rule{8pt}{8pt}}$ Typed arrays0.6% → 0.6%
533 KB 533 KB 0 B 0 B 0 B 0 B
$\color{yellow}{\rule{8pt}{8pt}}$ System objects2.6% → 2.6%
2.2 MB 2.2 MB $\text{+24 B}$ 928 B $\text{-904 B}$ $\text{+2.6 KB}$
$\color{violet}{\rule{8pt}{8pt}}$ Other JS objs28.4% → 28.4%
24 MB 24 MB $\text{+72 B}$ 72 B 0 B $\text{+85 KB}$
$\color{pink}{\rule{8pt}{8pt}}$ Other non-JS objs0% → 0%
38 KB 38 KB 0 B 0 B 0 B 0 B
Head heap snapshot composition
%%{init: {"sankey":{"showValues":false,"linkColor":"target","labelStyle":"outlined","nodeAlignment":"center","nodePadding":10,"nodeColors":{"Head":"#888888","code":"#f28e2c","bytecode":"#f28e2c","Other":"#888888","strings":"#e15759","string":"#e15759","jsArrays":"#76b7b2","typedArrays":"#59a14f","systemObjects":"#edc949","otherJsObjects":"#af7aa1","otherNonJsObjects":"#ff9da7"}}}}%%
sankey-beta
"Head","Code",28.82
"Code","bytecode",9.57
"Code","Other",19.25
"Head","Strings",34.75
"Strings","string",34.05
"Strings","Other",0.7
"Head","JS arrays",4.81
"Head","Typed arrays",0.62
"Head","System objects",2.58
"Head","Other JS objs",28.37
"Head","Other non-JS objs",0.04
Loading

Download representative V8 heap snapshot (head)

Runtime Loaded JS Footprint

Click to show
Metric Base Head Δ Δ (%)
Loaded JS modules 185 185 0 0%
Loaded JS source 11 MB 11 MB 0 B 0%
External packages loaded 30 30 0 0%
Native addon packages 2 2 0 0%

@github-actions github-actions Bot added packages/frontend Client side specific issue/PR packages/frontend:test labels Jul 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

packages/backend Server side specific issue/PR packages/frontend:test packages/frontend Client side specific issue/PR

Projects

Development

Successfully merging this pull request may close these issues.

3 participants