{"_id":"@github-ui/storybook-addon-performance-panel","_rev":"26-cac299b134ab3b6aae427a1fc5d3c0da","name":"@github-ui/storybook-addon-performance-panel","dist-tags":{"canary":"1.0.1-canary.d6c4f43","latest":"1.3.0"},"versions":{"0.1.0":{"name":"@github-ui/storybook-addon-performance-panel","version":"0.1.0","_id":"@github-ui/storybook-addon-performance-panel@0.1.0","maintainers":[{"name":"mattcosta7","email":"matt@mattc.io"},{"name":"jellobagel","email":"stephielhong@gmail.com"},{"name":"manuelpuyol","email":"manuelpuyol@github.com"},{"name":"strackoverflow","email":"davidstrack@gmail.com"},{"name":"dustin.savery","email":"dustin.savery@gmail.com"},{"name":"githubbot","email":"dgreif+githubbotnpm@github.com"},{"name":"dustin.greif","email":"dustin.greif@gmail.com"},{"name":"andrialexandrou","email":"andri.j.alexandrou@gmail.com"},{"name":"lukasoppermann","email":"oppermann.lukas@gmail.com"}],"homepage":"https://github.com/github/github-ui/blob/main/packages/storybook-addon-performance-panel/README.md","dist":{"shasum":"4ce8320badf6272c3f39dfdaa1c526a6103f0024","tarball":"https://registry.npmjs.org/@github-ui/storybook-addon-performance-panel/-/storybook-addon-performance-panel-0.1.0.tgz","fileCount":12,"integrity":"sha512-RiDTArUN2Z/HorB7d7dO+dNQNOQ3HZv7PRCES4ZVeozLfw+x1MuRSx0LFRdj6rdGcGPCyQJbHBqWnXRqrb/hvA==","signatures":[{"sig":"MEUCIQDHptngV2pgVp3CXypik9RWOvVeGSv+II2vXjSDlJfYsQIgBcBOVrEJzI6S1SE9GbLD8mYYRAgfQooBV7vNsXnCWCg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":174354},"type":"module","bundler":{"nodeEntries":["preset.ts"],"managerEntries":["manager.tsx"],"previewEntries":["preview.ts","index.ts"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./preset":{"types":"./dist/preset.d.ts","default":"./dist/preset.js"},"./manager":{"types":"./dist/manager.d.ts","default":"./dist/manager.js"},"./preview":{"types":"./dist/preview.d.ts","default":"./dist/preview.js"},"./package.json":"./package.json"},"gitHead":"470fb3a02efcab93ef3f19ba07a3333e02fa5930","scripts":{"tsc":"tsc","lint":"eslint . --cache","test":"ui-test","build":"tsup","stylelint":"stylelint --aei --rd \"**/*.css\"","build:watch":"tsup --watch","build:publish":"./publish.sh"},"_npmUser":{"name":"mattcosta7","email":"matt@mattc.io"},"storybook":{"icon":"","displayName":"Addon Performance Panel","supportedFrameworks":["react"]},"_npmVersion":"11.6.0","description":"a performance panel addon for storybook","directories":{},"_nodeVersion":"24.8.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.0","esbuild":"*","@github-ui/tests":"*","@github-ui/eslintrc":"*","@testing-library/react":"*"},"peerDependencies":{"react":"*","storybook":"*","@storybook/icons":"1.4.0","@storybook/react":"*"},"_npmOperationalInternal":{"tmp":"tmp/storybook-addon-performance-panel_0.1.0_1765845137228_0.8592704084605436","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@github-ui/storybook-addon-performance-panel","version":"0.1.1","_id":"@github-ui/storybook-addon-performance-panel@0.1.1","maintainers":[{"name":"mattcosta7","email":"matt@mattc.io"},{"name":"jellobagel","email":"stephielhong@gmail.com"},{"name":"manuelpuyol","email":"manuelpuyol@github.com"},{"name":"strackoverflow","email":"davidstrack@gmail.com"},{"name":"dustin.savery","email":"dustin.savery@gmail.com"},{"name":"githubbot","email":"dgreif+githubbotnpm@github.com"},{"name":"dustin.greif","email":"dustin.greif@gmail.com"},{"name":"andrialexandrou","email":"andri.j.alexandrou@gmail.com"},{"name":"lukasoppermann","email":"oppermann.lukas@gmail.com"}],"homepage":"https://github.com/github/github-ui/blob/main/packages/storybook-addon-performance-panel/README.md","dist":{"shasum":"c876e5885322c791e16c06582717d22cb7800a59","tarball":"https://registry.npmjs.org/@github-ui/storybook-addon-performance-panel/-/storybook-addon-performance-panel-0.1.1.tgz","fileCount":12,"integrity":"sha512-A4RO9bzdvMmYPBm9gcS5iW5knU0CysqcaUHo1zxx8mTeY2EIZZ+Gkzuz9PT/AY57hEve8ldYlYm6NX8NY9Ir1A==","signatures":[{"sig":"MEQCICVjLv4aynZ3RASGWZY12Zg9jcufwOxvPIVyc7Nivt5oAiBcfvG+HYGfbjuRiFtWIUPwo9rO8wGKQhYxJnPdiBnRyw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":174190},"type":"module","bundler":{"nodeEntries":["preset.ts"],"managerEntries":["manager.tsx"],"previewEntries":["preview.ts","index.ts"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./preset":{"types":"./dist/preset.d.ts","default":"./dist/preset.js"},"./manager":{"types":"./dist/manager.d.ts","default":"./dist/manager.js"},"./preview":{"types":"./dist/preview.d.ts","default":"./dist/preview.js"},"./package.json":"./package.json"},"gitHead":"470fb3a02efcab93ef3f19ba07a3333e02fa5930","scripts":{"tsc":"tsc","lint":"eslint . --cache","test":"ui-test","build":"tsup","stylelint":"stylelint --aei --rd \"**/*.css\"","build:watch":"tsup --watch","build:publish":"./publish.sh"},"_npmUser":{"name":"mattcosta7","email":"matt@mattc.io"},"storybook":{"icon":"","displayName":"Addon Performance Panel","supportedFrameworks":["react"]},"_npmVersion":"11.6.0","description":"a performance panel addon for storybook","directories":{},"_nodeVersion":"24.8.0","_hasShrinkwrap":false,"peerDependencies":{"react":"*","storybook":"*","@storybook/icons":"1.4.0","@storybook/react":"*"},"_npmOperationalInternal":{"tmp":"tmp/storybook-addon-performance-panel_0.1.1_1765845500548_0.878583265596431","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@github-ui/storybook-addon-performance-panel","version":"0.1.2","_id":"@github-ui/storybook-addon-performance-panel@0.1.2","maintainers":[{"name":"mattcosta7","email":"matt@mattc.io"},{"name":"jellobagel","email":"stephielhong@gmail.com"},{"name":"manuelpuyol","email":"manuelpuyol@github.com"},{"name":"strackoverflow","email":"davidstrack@gmail.com"},{"name":"dustin.savery","email":"dustin.savery@gmail.com"},{"name":"githubbot","email":"dgreif+githubbotnpm@github.com"},{"name":"dustin.greif","email":"dustin.greif@gmail.com"},{"name":"andrialexandrou","email":"andri.j.alexandrou@gmail.com"},{"name":"lukasoppermann","email":"oppermann.lukas@gmail.com"}],"homepage":"https://github.com/github/github-ui/blob/main/packages/storybook-addon-performance-panel/README.md","dist":{"shasum":"93c74f60427f3d050d72918b8c09eb91901d34b5","tarball":"https://registry.npmjs.org/@github-ui/storybook-addon-performance-panel/-/storybook-addon-performance-panel-0.1.2.tgz","fileCount":12,"integrity":"sha512-TCeJJlLtBpCgGXsVtI7UT+s/kGNM+z5CSJTrgCvLv/Qrz/JKJ/4kt01fqQBKz9ygZxJutnQm/hnckGYUv8b1Hw==","signatures":[{"sig":"MEYCIQC4b1+UcdAxhFFSQSG4DOMn0gmRmKeiD3VotfHw6FRM2gIhAPkl/KxCGa5Tze3YJYrj6GjFFhQL2yRL5DPbybBGMdSl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":174187},"type":"module","bundler":{"nodeEntries":["preset.ts"],"managerEntries":["manager.tsx"],"previewEntries":["preview.ts","index.ts"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./preset":{"types":"./dist/preset.d.ts","default":"./dist/preset.js"},"./manager":{"types":"./dist/manager.d.ts","default":"./dist/manager.js"},"./preview":{"types":"./dist/preview.d.ts","default":"./dist/preview.js"},"./package.json":"./package.json"},"gitHead":"32320b07abd167d2fbd94608f35cdfbe65a51d3a","scripts":{"tsc":"tsc","lint":"eslint . --cache","test":"ui-test","build":"tsup","stylelint":"stylelint --aei --rd \"**/*.css\"","build:watch":"tsup --watch","build:publish":"./publish.sh"},"_npmUser":{"name":"mattcosta7","email":"matt@mattc.io"},"storybook":{"icon":"","displayName":"Addon Performance Panel","supportedFrameworks":["react"]},"_npmVersion":"11.6.0","description":"a performance panel addon for storybook","directories":{},"_nodeVersion":"24.8.0","_hasShrinkwrap":false,"peerDependencies":{"react":"*","storybook":"*","@storybook/icons":"*","@storybook/react":"*"},"_npmOperationalInternal":{"tmp":"tmp/storybook-addon-performance-panel_0.1.2_1766185910092_0.9446938241770892","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@github-ui/storybook-addon-performance-panel","version":"1.0.0","keywords":["storybook","storybook-addon","performance","profiling","react","web-vitals","frame-timing","layout-shift"],"author":{"name":"GitHub, Inc."},"license":"MIT","_id":"@github-ui/storybook-addon-performance-panel@1.0.0","maintainers":[{"name":"mattcosta7","email":"matt@mattc.io"},{"name":"jellobagel","email":"stephielhong@gmail.com"},{"name":"manuelpuyol","email":"manuelpuyol@github.com"},{"name":"strackoverflow","email":"davidstrack@gmail.com"},{"name":"dustin.savery","email":"dustin.savery@gmail.com"},{"name":"githubbot","email":"dgreif+githubbotnpm@github.com"},{"name":"dustin.greif","email":"dustin.greif@gmail.com"},{"name":"andrialexandrou","email":"andri.j.alexandrou@gmail.com"},{"name":"lukasoppermann","email":"oppermann.lukas@gmail.com"}],"homepage":"https://github.com/github/storybook-addon-performance-panel#readme","bugs":{"url":"https://github.com/github/storybook-addon-performance-panel/issues"},"dist":{"shasum":"00d57e9799a26c0d758a1ab3cc696d5681edac23","tarball":"https://registry.npmjs.org/@github-ui/storybook-addon-performance-panel/-/storybook-addon-performance-panel-1.0.0.tgz","fileCount":13,"integrity":"sha512-+Xm/HId0gj71pj07/LPtZKKQJC1scRN3RdcrmdA2PmXv9KQXupGgUm4y8W5K9xpIKp6n6GIeFjHQRcUpSaoy9w==","signatures":[{"sig":"MEUCIQDbnnxG674BQ8kyHqEkVk5FxouB9erCNnbLGnAlwPVppgIgLkcwyYMgxEsiIJosZTRSjL2y/kUEWQQmIdxELl5fyck=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@github-ui%2fstorybook-addon-performance-panel@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":180734},"type":"module","bundler":{"nodeEntries":["preset.ts"],"managerEntries":["manager.tsx"],"previewEntries":["preview.ts","index.ts"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./preset":{"types":"./dist/preset.d.ts","default":"./dist/preset.js"},"./manager":{"types":"./dist/manager.d.ts","default":"./dist/manager.js"},"./preview":{"types":"./dist/preview.d.ts","default":"./dist/preview.js"},"./package.json":"./package.json"},"gitHead":"042bbb2073858cdbe6ea7763a033763e30e2f50f","scripts":{"test":"vitest run","build":"tsup","build:watch":"tsup --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1903ae3a-f48f-4b95-9aa0-ab54334a25b7"}},"storybook":{"icon":"https://github.githubassets.com/favicons/favicon.svg","displayName":"Addon Performance Panel","supportedFrameworks":["react"]},"repository":{"url":"git+https://github.com/github/storybook-addon-performance-panel.git","type":"git","directory":"packages/storybook-addon-performance-panel"},"_npmVersion":"11.6.2","description":"A Storybook addon that provides a real-time performance monitoring panel with frame timing, input latency, layout shift, and React render profiling.","directories":{},"_nodeVersion":"24.13.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","esbuild":"0.27.3","@types/node":"^25","@types/react":"^19.0.0","@vitejs/plugin-react":"^5.1.4","vitest-browser-react":"^2.0.5","@vitest/browser-playwright":"^4.0.18"},"peerDependencies":{"react":"^19","storybook":"^10","@storybook/icons":"^2.0.0","@storybook/react":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/storybook-addon-performance-panel_1.0.0_1771598179915_0.04746049917205308","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@github-ui/storybook-addon-performance-panel","version":"1.0.1","keywords":["storybook","storybook-addon","performance","profiling","react","web-vitals","frame-timing","layout-shift"],"author":{"name":"GitHub, Inc."},"license":"MIT","_id":"@github-ui/storybook-addon-performance-panel@1.0.1","maintainers":[{"name":"mattcosta7","email":"matt@mattc.io"},{"name":"jellobagel","email":"stephielhong@gmail.com"},{"name":"manuelpuyol","email":"manuelpuyol@github.com"},{"name":"strackoverflow","email":"davidstrack@gmail.com"},{"name":"dustin.savery","email":"dustin.savery@gmail.com"},{"name":"githubbot","email":"dgreif+githubbotnpm@github.com"},{"name":"dustin.greif","email":"dustin.greif@gmail.com"},{"name":"andrialexandrou","email":"andri.j.alexandrou@gmail.com"},{"name":"lukasoppermann","email":"oppermann.lukas@gmail.com"}],"homepage":"https://github.com/github/storybook-addon-performance-panel#readme","bugs":{"url":"https://github.com/github/storybook-addon-performance-panel/issues"},"dist":{"shasum":"d9bc8d4f2c009761fd036b3caa60cdaaf43ca003","tarball":"https://registry.npmjs.org/@github-ui/storybook-addon-performance-panel/-/storybook-addon-performance-panel-1.0.1.tgz","fileCount":13,"integrity":"sha512-OclnBfDbBfDnQIDVVlN6HtzvbI9AMU7orVVsw56MxGwWKJipB8gyWZE60yfwMBXqmYvADoxYD9mXZfsrikN0JQ==","signatures":[{"sig":"MEUCIFaBNNLw007J3/nvK088qkKSL1jWnpXzwwQNg29peD82AiEA9cDp3ngyqeMbe0H76H2zzOvHSb6YvMFBqwKUaLcfpTQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@github-ui%2fstorybook-addon-performance-panel@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":189552},"type":"module","bundler":{"nodeEntries":["preset.ts"],"managerEntries":["manager.tsx"],"previewEntries":["preview.ts","index.ts"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./preset":{"types":"./dist/preset.d.ts","default":"./dist/preset.js"},"./manager":{"types":"./dist/manager.d.ts","default":"./dist/manager.js"},"./preview":{"types":"./dist/preview.d.ts","default":"./dist/preview.js"},"./package.json":"./package.json"},"gitHead":"2bffabd21ef6059c197fa5baf72dbd163b363905","scripts":{"test":"vitest run","build":"tsdown","build:watch":"tsdown --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1903ae3a-f48f-4b95-9aa0-ab54334a25b7"}},"storybook":{"icon":"https://github.githubassets.com/favicons/favicon.svg","displayName":"Addon Performance Panel","supportedFrameworks":["react"]},"repository":{"url":"git+https://github.com/github/storybook-addon-performance-panel.git","type":"git","directory":"packages/storybook-addon-performance-panel"},"_npmVersion":"11.6.2","description":"A Storybook addon that provides a real-time performance monitoring panel with frame timing, input latency, layout shift, and React render profiling.","directories":{},"_nodeVersion":"24.13.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.20.3","vitest":"^4.0.18","esbuild":"0.27.3","publint":"^0.3.17","@types/node":"^25","@types/react":"^19.0.0","@vitejs/plugin-react":"^5.1.4","vitest-browser-react":"^2.0.5","@arethetypeswrong/core":"^0.18.2","@vitest/browser-playwright":"^4.0.18"},"peerDependencies":{"react":"^19","storybook":"^10","@storybook/icons":"^2.0.0","@storybook/react":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/storybook-addon-performance-panel_1.0.1_1771696117969_0.17589255007454896","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-canary.af37925":{"name":"@github-ui/storybook-addon-performance-panel","version":"1.0.1-canary.af37925","keywords":["storybook","storybook-addon","performance","profiling","react","web-vitals","frame-timing","layout-shift"],"author":{"name":"GitHub, Inc."},"license":"MIT","_id":"@github-ui/storybook-addon-performance-panel@1.0.1-canary.af37925","maintainers":[{"name":"mattcosta7","email":"matt@mattc.io"},{"name":"jellobagel","email":"stephielhong@gmail.com"},{"name":"manuelpuyol","email":"manuelpuyol@github.com"},{"name":"strackoverflow","email":"davidstrack@gmail.com"},{"name":"dustin.savery","email":"dustin.savery@gmail.com"},{"name":"githubbot","email":"dgreif+githubbotnpm@github.com"},{"name":"dustin.greif","email":"dustin.greif@gmail.com"},{"name":"andrialexandrou","email":"andri.j.alexandrou@gmail.com"},{"name":"lukasoppermann","email":"oppermann.lukas@gmail.com"}],"homepage":"https://github.com/github/storybook-addon-performance-panel#readme","bugs":{"url":"https://github.com/github/storybook-addon-performance-panel/issues"},"dist":{"shasum":"6c0a8bee5a9c7557ed6d10179f9a0d13f840218b","tarball":"https://registry.npmjs.org/@github-ui/storybook-addon-performance-panel/-/storybook-addon-performance-panel-1.0.1-canary.af37925.tgz","fileCount":13,"integrity":"sha512-qY/OSOnIj951k/evteySqQ1aCjiUd1F7QNuvA3YzeJvMKO8QL8WbFDTjNT0NKPc/rA7G40BtSebLhLnjDDD9iQ==","signatures":[{"sig":"MEYCIQCpFvv+RfAl1ZM7ri+uP6ZIqd3lXz/e5PFBpjda3UsgaQIhAOxqxXc26V+wsBRFzlEytLuSCxWMfXXbca698iHEz+uE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@github-ui%2fstorybook-addon-performance-panel@1.0.1-canary.af37925","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":153890},"type":"module","bundler":{"nodeEntries":["preset.ts"],"managerEntries":["manager.tsx"],"previewEntries":["preview.ts","index.ts"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./preset":{"types":"./dist/preset.d.ts","default":"./dist/preset.js"},"./manager":{"types":"./dist/manager.d.ts","default":"./dist/manager.js"},"./preview":{"types":"./dist/preview.d.ts","default":"./dist/preview.js"},"./package.json":"./package.json"},"gitHead":"ce35ed02ca61bbb2cf59ff7b0feed66923a1e6d5","scripts":{"test":"vitest run","build":"tsdown","build:watch":"tsdown --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1903ae3a-f48f-4b95-9aa0-ab54334a25b7"}},"storybook":{"icon":"https://github.githubassets.com/favicons/favicon.svg","displayName":"Addon Performance Panel","supportedFrameworks":["react"]},"repository":{"url":"git+https://github.com/github/storybook-addon-performance-panel.git","type":"git","directory":"packages/storybook-addon-performance-panel"},"_npmVersion":"11.6.2","description":"A Storybook addon that provides a real-time performance monitoring panel with frame timing, input latency, layout shift, and React render profiling.","directories":{},"_nodeVersion":"24.13.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsdown":"^0.20.3","vitest":"^4.0.18","esbuild":"0.27.3","publint":"^0.3.17","@types/node":"^25","@types/react":"^19.0.0","@vitejs/plugin-react":"^5.1.4","vitest-browser-react":"^2.0.5","@arethetypeswrong/core":"^0.18.2","@vitest/browser-playwright":"^4.0.18"},"peerDependencies":{"react":"^19","storybook":"^10","@storybook/icons":"^2.0.0","@storybook/react":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/storybook-addon-performance-panel_1.0.1-canary.af37925_1771861465646_0.23603791716806488","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-canary.e4e58ab":{"name":"@github-ui/storybook-addon-performance-panel","version":"1.0.1-canary.e4e58ab","keywords":["storybook","storybook-addon","performance","profiling","react","web-vitals","frame-timing","layout-shift"],"author":{"name":"GitHub, Inc."},"license":"MIT","_id":"@github-ui/storybook-addon-performance-panel@1.0.1-canary.e4e58ab","maintainers":[{"name":"mattcosta7","email":"matt@mattc.io"},{"name":"jellobagel","email":"stephielhong@gmail.com"},{"name":"manuelpuyol","email":"manuelpuyol@github.com"},{"name":"strackoverflow","email":"davidstrack@gmail.com"},{"name":"dustin.savery","email":"dustin.savery@gmail.com"},{"name":"githubbot","email":"dgreif+githubbotnpm@github.com"},{"name":"dustin.greif","email":"dustin.greif@gmail.com"},{"name":"andrialexandrou","email":"andri.j.alexandrou@gmail.com"},{"name":"lukasoppermann","email":"oppermann.lukas@gmail.com"}],"homepage":"https://github.com/github/storybook-addon-performance-panel#readme","bugs":{"url":"https://github.com/github/storybook-addon-performance-panel/issues"},"dist":{"shasum":"23067264c065413a99291f36fbd9fb6e75a68834","tarball":"https://registry.npmjs.org/@github-ui/storybook-addon-performance-panel/-/storybook-addon-performance-panel-1.0.1-canary.e4e58ab.tgz","fileCount":25,"integrity":"sha512-xzQ4AMh1bGNZPXBtjuI1pCd+NhpxDwe6G7UFsZFqmCjVI4cNBrlTRmBkFltmefDYoN7TEfOJ0JZJTPpxzxT9CA==","signatures":[{"sig":"MEUCIQC0XsFwZha9RSCNVpPImlNXcBYjlVD8172uSqAT2YjrowIgB8kKqmDxzGZHsxwPu5wGyxZ26qVsDEjmppqRNSB3VU8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@github-ui%2fstorybook-addon-performance-panel@1.0.1-canary.e4e58ab","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":209755},"type":"module","bundler":{"nodeEntries":["preset.ts","preset-universal.ts"],"managerEntries":["manager.tsx"],"previewEntries":["preview.ts","preview-universal.ts","index.ts","index-universal.ts","index-react.ts"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./preset":{"types":"./dist/preset.d.ts","default":"./dist/preset.js"},"./manager":{"types":"./dist/manager.d.ts","default":"./dist/manager.js"},"./preview":{"types":"./dist/preview.d.ts","default":"./dist/preview.js"},"./universal":{"types":"./dist/index-universal.d.ts","default":"./dist/index-universal.js"},"./components":{"types":"./dist/index-react.d.ts","default":"./dist/index-react.js"},"./package.json":"./package.json","./universal/preset":{"types":"./dist/preset-universal.d.ts","default":"./dist/preset-universal.js"},"./universal/preview":{"types":"./dist/preview-universal.d.ts","default":"./dist/preview-universal.js"}},"gitHead":"64bce0dfaf8763555e3e787741808c4ae0eea706","scripts":{"test":"vitest run","build":"tsdown","build:watch":"tsdown --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1903ae3a-f48f-4b95-9aa0-ab54334a25b7"}},"storybook":{"icon":"https://github.githubassets.com/favicons/favicon.svg","displayName":"Addon Performance Panel","supportedFrameworks":["react","web-components","html"]},"repository":{"url":"git+https://github.com/github/storybook-addon-performance-panel.git","type":"git","directory":"packages/storybook-addon-performance-panel"},"_npmVersion":"11.6.2","description":"A Storybook addon that provides a real-time performance monitoring panel with frame timing, input latency, layout shift, and React render profiling.","directories":{},"_nodeVersion":"24.13.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsdown":"^0.20.3","vitest":"^4.0.18","esbuild":"0.27.3","publint":"^0.3.17","@types/node":"^25","@types/react":"^19.0.0","@vitejs/plugin-react":"^5.1.4","vitest-browser-react":"^2.0.5","@arethetypeswrong/core":"^0.18.2","@vitest/browser-playwright":"^4.0.18"},"peerDependencies":{"react":"^19","storybook":"^10","@storybook/icons":"^2.0.0","@storybook/react":"^10.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@storybook/react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/storybook-addon-performance-panel_1.0.1-canary.e4e58ab_1771861810299_0.7993606670143729","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-canary.3e82ebb":{"name":"@github-ui/storybook-addon-performance-panel","version":"1.0.1-canary.3e82ebb","keywords":["storybook","storybook-addon","performance","profiling","react","web-vitals","frame-timing","layout-shift"],"author":{"name":"GitHub, Inc."},"license":"MIT","_id":"@github-ui/storybook-addon-performance-panel@1.0.1-canary.3e82ebb","maintainers":[{"name":"mattcosta7","email":"matt@mattc.io"},{"name":"jellobagel","email":"stephielhong@gmail.com"},{"name":"manuelpuyol","email":"manuelpuyol@github.com"},{"name":"strackoverflow","email":"davidstrack@gmail.com"},{"name":"dustin.savery","email":"dustin.savery@gmail.com"},{"name":"githubbot","email":"dgreif+githubbotnpm@github.com"},{"name":"dustin.greif","email":"dustin.greif@gmail.com"},{"name":"andrialexandrou","email":"andri.j.alexandrou@gmail.com"},{"name":"lukasoppermann","email":"oppermann.lukas@gmail.com"}],"homepage":"https://github.com/github/storybook-addon-performance-panel#readme","bugs":{"url":"https://github.com/github/storybook-addon-performance-panel/issues"},"dist":{"shasum":"e25aa6f3de6a180fb6a0ca4a54773648e8560565","tarball":"https://registry.npmjs.org/@github-ui/storybook-addon-performance-panel/-/storybook-addon-performance-panel-1.0.1-canary.3e82ebb.tgz","fileCount":25,"integrity":"sha512-sz0AtT5T5/EzfGMP5JEBF1P9++I+F6gTI7l2O+GyQCPw0ETS88X10NohV+jJfGmH8+O9xPqifwyhpS4yO20Cbw==","signatures":[{"sig":"MEUCIE9gBPv4fSDyPvt8wcDQkoaxOvOy/WvP7ftEa/CLOQayAiEA6x2fLyC6gOvfBuReYUikA1NqmA6JJ5pF+MLMW8FO1lY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@github-ui%2fstorybook-addon-performance-panel@1.0.1-canary.3e82ebb","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":209830},"type":"module","bundler":{"nodeEntries":["preset.ts","preset-universal.ts"],"managerEntries":["manager.tsx"],"previewEntries":["preview.ts","preview-universal.ts","index.ts","index-universal.ts","index-react.ts"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./preset":{"types":"./dist/preset.d.ts","default":"./dist/preset.js"},"./manager":{"types":"./dist/manager.d.ts","default":"./dist/manager.js"},"./preview":{"types":"./dist/preview.d.ts","default":"./dist/preview.js"},"./universal":{"types":"./dist/index-universal.d.ts","default":"./dist/index-universal.js"},"./components":{"types":"./dist/index-react.d.ts","default":"./dist/index-react.js"},"./package.json":"./package.json","./universal/preset":{"types":"./dist/preset-universal.d.ts","default":"./dist/preset-universal.js"},"./universal/preview":{"types":"./dist/preview-universal.d.ts","default":"./dist/preview-universal.js"}},"gitHead":"d90ec7439d61f8e02f201f8e853f2ccb2fbe297a","scripts":{"test":"vitest run","build":"tsdown","build:watch":"tsdown --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1903ae3a-f48f-4b95-9aa0-ab54334a25b7"}},"storybook":{"icon":"https://github.githubassets.com/favicons/favicon.svg","displayName":"Addon Performance Panel","supportedFrameworks":["react","vue","svelte","angular","lit","preact","web-components","html"]},"repository":{"url":"git+https://github.com/github/storybook-addon-performance-panel.git","type":"git","directory":"packages/storybook-addon-performance-panel"},"_npmVersion":"11.6.2","description":"A Storybook addon that provides a real-time performance monitoring panel with frame timing, input latency, layout shift, and React render profiling.","directories":{},"_nodeVersion":"24.13.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsdown":"^0.20.3","vitest":"^4.0.18","esbuild":"0.27.3","publint":"^0.3.17","@types/node":"^25","@types/react":"^19.0.0","@vitejs/plugin-react":"^5.1.4","vitest-browser-react":"^2.0.5","@arethetypeswrong/core":"^0.18.2","@vitest/browser-playwright":"^4.0.18"},"peerDependencies":{"react":"^19","storybook":"^10","@storybook/icons":"^2.0.0","@storybook/react":"^10.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@storybook/react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/storybook-addon-performance-panel_1.0.1-canary.3e82ebb_1771945855851_0.25783199253463907","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-canary.4be2daf":{"name":"@github-ui/storybook-addon-performance-panel","version":"1.0.1-canary.4be2daf","keywords":["storybook","storybook-addon","performance","profiling","react","web-vitals","frame-timing","layout-shift"],"author":{"name":"GitHub, Inc."},"license":"MIT","_id":"@github-ui/storybook-addon-performance-panel@1.0.1-canary.4be2daf","maintainers":[{"name":"mattcosta7","email":"matt@mattc.io"},{"name":"jellobagel","email":"stephielhong@gmail.com"},{"name":"manuelpuyol","email":"manuelpuyol@github.com"},{"name":"strackoverflow","email":"davidstrack@gmail.com"},{"name":"dustin.savery","email":"dustin.savery@gmail.com"},{"name":"githubbot","email":"dgreif+githubbotnpm@github.com"},{"name":"dustin.greif","email":"dustin.greif@gmail.com"},{"name":"andrialexandrou","email":"andri.j.alexandrou@gmail.com"},{"name":"lukasoppermann","email":"oppermann.lukas@gmail.com"}],"homepage":"https://github.com/github/storybook-addon-performance-panel#readme","bugs":{"url":"https://github.com/github/storybook-addon-performance-panel/issues"},"dist":{"shasum":"1fde9339b4199d6ae434ab576c20bde05328afb5","tarball":"https://registry.npmjs.org/@github-ui/storybook-addon-performance-panel/-/storybook-addon-performance-panel-1.0.1-canary.4be2daf.tgz","fileCount":25,"integrity":"sha512-Be73rKHDZMwyye0FQTSzlAosRAzscgs2csOYdgVvZ5jcWpc5PD7JqjrSHcRu/MM/VIsh+ER30XLUIAO3W6OY9w==","signatures":[{"sig":"MEQCIDED8lRmP5E8MUUgCZYo1T5KzrEl3Fs8E3Px0jEGqKfEAiByYt/+aB5hT/voZF+b22mCUYkUAgZS6tffsjmxAJKvOw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@github-ui%2fstorybook-addon-performance-panel@1.0.1-canary.4be2daf","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":209830},"type":"module","bundler":{"nodeEntries":["preset.ts","preset-universal.ts"],"managerEntries":["manager.tsx"],"previewEntries":["preview.ts","preview-universal.ts","index.ts","index-universal.ts","index-react.ts"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./preset":{"types":"./dist/preset.d.ts","default":"./dist/preset.js"},"./manager":{"types":"./dist/manager.d.ts","default":"./dist/manager.js"},"./preview":{"types":"./dist/preview.d.ts","default":"./dist/preview.js"},"./universal":{"types":"./dist/index-universal.d.ts","default":"./dist/index-universal.js"},"./components":{"types":"./dist/index-react.d.ts","default":"./dist/index-react.js"},"./package.json":"./package.json","./universal/preset":{"types":"./dist/preset-universal.d.ts","default":"./dist/preset-universal.js"},"./universal/preview":{"types":"./dist/preview-universal.d.ts","default":"./dist/preview-universal.js"}},"gitHead":"436f642a0e86c8c49c5251aee0dc3ec7161c7ec1","scripts":{"test":"vitest run","build":"tsdown","build:watch":"tsdown --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1903ae3a-f48f-4b95-9aa0-ab54334a25b7"}},"storybook":{"icon":"https://github.githubassets.com/favicons/favicon.svg","displayName":"Addon Performance Panel","supportedFrameworks":["react","vue","svelte","angular","lit","preact","web-components","html"]},"repository":{"url":"git+https://github.com/github/storybook-addon-performance-panel.git","type":"git","directory":"packages/storybook-addon-performance-panel"},"_npmVersion":"11.6.2","description":"A Storybook addon that provides a real-time performance monitoring panel with frame timing, input latency, layout shift, and React render profiling.","directories":{},"_nodeVersion":"24.13.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsdown":"^0.20.3","vitest":"^4.0.18","esbuild":"0.27.3","publint":"^0.3.17","@types/node":"^25","@types/react":"^19.0.0","@vitejs/plugin-react":"^5.1.4","vitest-browser-react":"^2.0.5","@arethetypeswrong/core":"^0.18.2","@vitest/browser-playwright":"^4.0.18"},"peerDependencies":{"react":"^19","storybook":"^10","@storybook/icons":"^2.0.0","@storybook/react":"^10.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@storybook/react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/storybook-addon-performance-panel_1.0.1-canary.4be2daf_1771945924114_0.13042219222376872","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-canary.d6c4f43":{"name":"@github-ui/storybook-addon-performance-panel","version":"1.0.1-canary.d6c4f43","keywords":["storybook","storybook-addon","performance","profiling","react","web-vitals","frame-timing","layout-shift"],"author":{"name":"GitHub, Inc."},"license":"MIT","_id":"@github-ui/storybook-addon-performance-panel@1.0.1-canary.d6c4f43","maintainers":[{"name":"mattcosta7","email":"matt@mattc.io"},{"name":"jellobagel","email":"stephielhong@gmail.com"},{"name":"manuelpuyol","email":"manuelpuyol@github.com"},{"name":"strackoverflow","email":"davidstrack@gmail.com"},{"name":"dustin.savery","email":"dustin.savery@gmail.com"},{"name":"githubbot","email":"dgreif+githubbotnpm@github.com"},{"name":"dustin.greif","email":"dustin.greif@gmail.com"},{"name":"andrialexandrou","email":"andri.j.alexandrou@gmail.com"},{"name":"lukasoppermann","email":"oppermann.lukas@gmail.com"}],"homepage":"https://github.com/github/storybook-addon-performance-panel#readme","bugs":{"url":"https://github.com/github/storybook-addon-performance-panel/issues"},"dist":{"shasum":"a1eb3e540fdf8985ac3d06aef79fb89f33b00018","tarball":"https://registry.npmjs.org/@github-ui/storybook-addon-performance-panel/-/storybook-addon-performance-panel-1.0.1-canary.d6c4f43.tgz","fileCount":25,"integrity":"sha512-5vLlg1+C837CbWpoUF/4A173u8rds/o/2pQNhuC34fcOsmXJf+816+IYiAfqD6CmCSZwHjNHX7JEmrDvqkjTBg==","signatures":[{"sig":"MEQCIGYXjcFrdRryFSa0EYoWSYEbg5P24WEW1NXus2yoMjExAiBIenX+O9UIoHeIdjHD9I5uB/Zyt0Yr+ThLzELMhxFEXw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@github-ui%2fstorybook-addon-performance-panel@1.0.1-canary.d6c4f43","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":209869},"type":"module","bundler":{"nodeEntries":["preset.ts","preset-universal.ts"],"managerEntries":["manager.tsx"],"previewEntries":["preview.ts","preview-universal.ts","index.ts","index-universal.ts","index-react.ts"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./preset":{"types":"./dist/preset.d.ts","default":"./dist/preset.js"},"./manager":{"types":"./dist/manager.d.ts","default":"./dist/manager.js"},"./preview":{"types":"./dist/preview.d.ts","default":"./dist/preview.js"},"./universal":{"types":"./dist/index-universal.d.ts","default":"./dist/index-universal.js"},"./components":{"types":"./dist/index-react.d.ts","default":"./dist/index-react.js"},"./package.json":"./package.json","./universal/preset":{"types":"./dist/preset-universal.d.ts","default":"./dist/preset-universal.js"},"./universal/preview":{"types":"./dist/preview-universal.d.ts","default":"./dist/preview-universal.js"}},"gitHead":"9f574eb49d6397543b3893c278f113dcbc88bd71","scripts":{"test":"vitest run","build":"tsdown","build:watch":"tsdown --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1903ae3a-f48f-4b95-9aa0-ab54334a25b7"}},"storybook":{"icon":"https://github.githubassets.com/favicons/favicon.svg","displayName":"Addon Performance Panel","supportedFrameworks":["react","vue","svelte","angular","lit","preact","web-components","html"]},"repository":{"url":"git+https://github.com/github/storybook-addon-performance-panel.git","type":"git","directory":"packages/storybook-addon-performance-panel"},"_npmVersion":"11.6.2","description":"A Storybook addon that provides a real-time performance monitoring panel with frame timing, input latency, layout shift, and React render profiling.","directories":{},"_nodeVersion":"24.13.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsdown":"^0.20.3","vitest":"^4.0.18","esbuild":"0.27.3","publint":"^0.3.17","@types/node":"^25","@types/react":"^19.0.0","@vitejs/plugin-react":"^5.1.4","vitest-browser-react":"^2.0.5","@arethetypeswrong/core":"^0.18.2","@vitest/browser-playwright":"^4.0.18"},"peerDependencies":{"react":"^19","storybook":"^10","@storybook/icons":"^2.0.0","@storybook/react":"^10.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@storybook/react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/storybook-addon-performance-panel_1.0.1-canary.d6c4f43_1771949039020_0.9651414450357296","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@github-ui/storybook-addon-performance-panel","version":"1.1.0","keywords":["storybook","storybook-addon","performance","profiling","react","web-vitals","frame-timing","layout-shift"],"author":{"name":"GitHub, Inc."},"license":"MIT","_id":"@github-ui/storybook-addon-performance-panel@1.1.0","maintainers":[{"name":"mattcosta7","email":"matt@mattc.io"},{"name":"jellobagel","email":"stephielhong@gmail.com"},{"name":"manuelpuyol","email":"manuelpuyol@github.com"},{"name":"strackoverflow","email":"davidstrack@gmail.com"},{"name":"dustin.savery","email":"dustin.savery@gmail.com"},{"name":"githubbot","email":"dgreif+githubbotnpm@github.com"},{"name":"dustin.greif","email":"dustin.greif@gmail.com"},{"name":"andrialexandrou","email":"andri.j.alexandrou@gmail.com"},{"name":"lukasoppermann","email":"oppermann.lukas@gmail.com"}],"homepage":"https://github.com/github/storybook-addon-performance-panel#readme","bugs":{"url":"https://github.com/github/storybook-addon-performance-panel/issues"},"dist":{"shasum":"442bcd98aca48a61b669caff3f8328a64b06e8bc","tarball":"https://registry.npmjs.org/@github-ui/storybook-addon-performance-panel/-/storybook-addon-performance-panel-1.1.0.tgz","fileCount":25,"integrity":"sha512-tYJ4ojLIDbGovsUl0E8oXwcuRgePB82uKz+oDvzZYo6pEN9LhKA8ki4jSoI3yQUFxMRqOC55K/ycX5Z+L6VCpQ==","signatures":[{"sig":"MEQCICBKjMVkrk3g9GcPx43edLShPi5iGbytUnmPpEGczQhsAiA7MbD7ibwGkkKl6BCfyMhQ+Cej3MkIJCWp+XMaCATEmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@github-ui%2fstorybook-addon-performance-panel@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":211455},"type":"module","bundler":{"nodeEntries":["preset.ts","preset-universal.ts"],"managerEntries":["manager.tsx"],"previewEntries":["preview.ts","preview-universal.ts","index.ts","index-universal.ts","index-react.ts"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./preset":{"types":"./dist/preset.d.ts","default":"./dist/preset.js"},"./manager":{"types":"./dist/manager.d.ts","default":"./dist/manager.js"},"./preview":{"types":"./dist/preview.d.ts","default":"./dist/preview.js"},"./universal":{"types":"./dist/index-universal.d.ts","default":"./dist/index-universal.js"},"./components":{"types":"./dist/index-react.d.ts","default":"./dist/index-react.js"},"./package.json":"./package.json","./universal/preset":{"types":"./dist/preset-universal.d.ts","default":"./dist/preset-universal.js"},"./universal/preview":{"types":"./dist/preview-universal.d.ts","default":"./dist/preview-universal.js"}},"gitHead":"419e77b7b4b7ab20eb79d04888278a339766dcfb","scripts":{"test":"vitest run","build":"tsdown","build:watch":"tsdown --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1903ae3a-f48f-4b95-9aa0-ab54334a25b7"}},"storybook":{"icon":"https://github.githubassets.com/favicons/favicon.svg","displayName":"Addon Performance Panel","supportedFrameworks":["react","vue","svelte","angular","lit","preact","web-components","html"]},"repository":{"url":"git+https://github.com/github/storybook-addon-performance-panel.git","type":"git","directory":"packages/storybook-addon-performance-panel"},"_npmVersion":"11.6.2","description":"A Storybook addon that provides a real-time performance monitoring panel with frame timing, input latency, layout shift, and React render profiling.","directories":{},"_nodeVersion":"24.13.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.20.3","vitest":"^4.0.18","esbuild":"0.27.3","publint":"^0.3.17","@types/node":"^25","@types/react":"^19.0.0","@vitejs/plugin-react":"^5.1.4","vitest-browser-react":"^2.0.5","@arethetypeswrong/core":"^0.18.2","@vitest/browser-playwright":"^4.0.18"},"peerDependencies":{"react":"^19","storybook":"^10","@storybook/icons":"^2.0.0","@storybook/react":"^10.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@storybook/react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/storybook-addon-performance-panel_1.1.0_1771954509315_0.3753119915231027","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@github-ui/storybook-addon-performance-panel","version":"1.1.1","keywords":["storybook-addons","performance","storybook","storybook-addon","profiling","react","web-vitals","frame-timing","layout-shift"],"author":{"name":"GitHub, Inc."},"license":"MIT","_id":"@github-ui/storybook-addon-performance-panel@1.1.1","maintainers":[{"name":"mattcosta7","email":"matt@mattc.io"},{"name":"jellobagel","email":"stephielhong@gmail.com"},{"name":"manuelpuyol","email":"manuelpuyol@github.com"},{"name":"strackoverflow","email":"davidstrack@gmail.com"},{"name":"dustin.savery","email":"dustin.savery@gmail.com"},{"name":"githubbot","email":"dgreif+githubbotnpm@github.com"},{"name":"dustin.greif","email":"dustin.greif@gmail.com"},{"name":"andrialexandrou","email":"andri.j.alexandrou@gmail.com"},{"name":"lukasoppermann","email":"oppermann.lukas@gmail.com"}],"homepage":"https://github.com/github/storybook-addon-performance-panel#readme","bugs":{"url":"https://github.com/github/storybook-addon-performance-panel/issues"},"dist":{"shasum":"a6da41832c7fd8a3814760348f24d619d689ef14","tarball":"https://registry.npmjs.org/@github-ui/storybook-addon-performance-panel/-/storybook-addon-performance-panel-1.1.1.tgz","fileCount":25,"integrity":"sha512-OfDPdv2G+xINsKpqkAb9CqVTbIeFtUhQjs4zeR3Vgc+VtjLjcrTToKDwVJPjB/Jv4XFH9u8OakzYIT3ZwwzkkQ==","signatures":[{"sig":"MEUCIGa462uw8rJqbLXqcxyOnkQAhmawtb2wlKKNrwaddWgAAiEAqelCMYv+IyG2lYGt4Y1bsSheTp1fu3Ag8+R+CjNorNk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@github-ui%2fstorybook-addon-performance-panel@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":211916},"type":"module","bundler":{"nodeEntries":["preset.ts","preset-universal.ts"],"managerEntries":["manager.tsx"],"previewEntries":["preview.ts","preview-universal.ts","index.ts","index-universal.ts","index-react.ts"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./preset":{"types":"./dist/preset.d.ts","default":"./dist/preset.js"},"./manager":{"types":"./dist/manager.d.ts","default":"./dist/manager.js"},"./preview":{"types":"./dist/preview.d.ts","default":"./dist/preview.js"},"./universal":{"types":"./dist/index-universal.d.ts","default":"./dist/index-universal.js"},"./components":{"types":"./dist/index-react.d.ts","default":"./dist/index-react.js"},"./package.json":"./package.json","./universal/preset":{"types":"./dist/preset-universal.d.ts","default":"./dist/preset-universal.js"},"./universal/preview":{"types":"./dist/preview-universal.d.ts","default":"./dist/preview-universal.js"}},"gitHead":"9af9abf5d44f05ed95573982be2ad731e8130db9","scripts":{"test":"vitest run","build":"tsdown","build:watch":"tsdown --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1903ae3a-f48f-4b95-9aa0-ab54334a25b7"}},"storybook":{"icon":"https://github.githubassets.com/favicons/favicon.svg","displayName":"Addon Performance Panel","supportedFrameworks":["react","vue","svelte","angular","lit","preact","web-components","html"]},"repository":{"url":"git+https://github.com/github/storybook-addon-performance-panel.git","type":"git","directory":"packages/storybook-addon-performance-panel"},"_npmVersion":"11.6.2","description":"A Storybook addon that provides a real-time performance monitoring panel with frame timing, input latency, layout shift, and React render profiling.","directories":{},"_nodeVersion":"24.13.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.20.3","vitest":"^4.0.18","esbuild":"0.27.3","publint":"^0.3.17","@types/node":"^25","@types/react":"^19.0.0","@vitejs/plugin-react":"^5.1.4","vitest-browser-react":"^2.0.5","@arethetypeswrong/core":"^0.18.2","@vitest/browser-playwright":"^4.0.18"},"peerDependencies":{"react":"^19","storybook":"^10","@storybook/icons":"^2.0.0","@storybook/react":"^10.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@storybook/react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/storybook-addon-performance-panel_1.1.1_1771976038830_0.31728023022604757","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@github-ui/storybook-addon-performance-panel","version":"1.1.2","keywords":["storybook-addon","performance","profiling","web-vitals","frame-timing","layout-shift","react"],"author":{"name":"GitHub, Inc."},"license":"MIT","_id":"@github-ui/storybook-addon-performance-panel@1.1.2","maintainers":[{"name":"mattcosta7","email":"matt@mattc.io"},{"name":"jellobagel","email":"stephielhong@gmail.com"},{"name":"manuelpuyol","email":"manuelpuyol@github.com"},{"name":"strackoverflow","email":"davidstrack@gmail.com"},{"name":"dustin.savery","email":"dustin.savery@gmail.com"},{"name":"githubbot","email":"dgreif+githubbotnpm@github.com"},{"name":"dustin.greif","email":"dustin.greif@gmail.com"},{"name":"andrialexandrou","email":"andri.j.alexandrou@gmail.com"},{"name":"lukasoppermann","email":"oppermann.lukas@gmail.com"}],"homepage":"https://github.com/github/storybook-addon-performance-panel#readme","bugs":{"url":"https://github.com/github/storybook-addon-performance-panel/issues"},"dist":{"shasum":"a1ed2f61b2ac985f0d2cad93cb530e75295ea8de","tarball":"https://registry.npmjs.org/@github-ui/storybook-addon-performance-panel/-/storybook-addon-performance-panel-1.1.2.tgz","fileCount":25,"integrity":"sha512-36YGCFW2v+bS1NQRyNzURQJCmchRD6GXalHH8UqXwAR/EgXRfcBlNgeVhUjdX32QmMl0cqLu6vbA/A/9YTOt/w==","signatures":[{"sig":"MEUCIDSGwk5vp8gFTBLQ/cY9j0O8PJn9pY9pUZMHCS4ZfTB+AiEAz2lyU9GFNsAKSbK9vlPL50tLCv82+avgU572smN9xsU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@github-ui%2fstorybook-addon-performance-panel@1.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":212237},"type":"module","bundler":{"nodeEntries":["preset.ts","preset-universal.ts"],"managerEntries":["manager.tsx"],"previewEntries":["preview.ts","preview-universal.ts","index.ts","index-universal.ts","index-react.ts"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./preset":{"types":"./dist/preset.d.ts","default":"./dist/preset.js"},"./manager":{"types":"./dist/manager.d.ts","default":"./dist/manager.js"},"./preview":{"types":"./dist/preview.d.ts","default":"./dist/preview.js"},"./universal":{"types":"./dist/index-universal.d.ts","default":"./dist/index-universal.js"},"./components":{"types":"./dist/index-react.d.ts","default":"./dist/index-react.js"},"./package.json":"./package.json","./universal/preset":{"types":"./dist/preset-universal.d.ts","default":"./dist/preset-universal.js"},"./universal/preview":{"types":"./dist/preview-universal.d.ts","default":"./dist/preview-universal.js"}},"gitHead":"c07fc1fc340deab1af5e8904599b049950582f39","scripts":{"test":"vitest run","build":"tsdown","build:watch":"tsdown --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1903ae3a-f48f-4b95-9aa0-ab54334a25b7"}},"storybook":{"icon":"https://github.githubassets.com/favicons/favicon.svg","displayName":"Addon Performance Panel","supportedFrameworks":["react","vue","svelte","angular","lit","preact","web-components","html"]},"repository":{"url":"git+https://github.com/github/storybook-addon-performance-panel.git","type":"git","directory":"packages/storybook-addon-performance-panel"},"_npmVersion":"11.6.2","description":"A Storybook addon that provides a real-time performance monitoring panel with frame timing, input latency, layout shift, and React render profiling.","directories":{},"_nodeVersion":"24.13.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.20.3","vitest":"^4.0.18","esbuild":"0.27.3","publint":"^0.3.17","@types/node":"^25","@types/react":"^19.0.0","@vitejs/plugin-react":"^5.1.4","vitest-browser-react":"^2.0.5","@arethetypeswrong/core":"^0.18.2","@vitest/browser-playwright":"^4.0.18"},"peerDependencies":{"react":"^19","storybook":"^10","@storybook/icons":"^2.0.0","@storybook/react":"^10.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@storybook/react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/storybook-addon-performance-panel_1.1.2_1771978577867_0.6136545288168758","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@github-ui/storybook-addon-performance-panel","version":"1.1.3","keywords":["storybook-addon","performance","profiling","web-vitals","frame-timing","layout-shift","react"],"author":{"name":"GitHub, Inc."},"license":"MIT","_id":"@github-ui/storybook-addon-performance-panel@1.1.3","maintainers":[{"name":"mattcosta7","email":"matt@mattc.io"},{"name":"jellobagel","email":"stephielhong@gmail.com"},{"name":"manuelpuyol","email":"manuelpuyol@github.com"},{"name":"strackoverflow","email":"davidstrack@gmail.com"},{"name":"dustin.savery","email":"dustin.savery@gmail.com"},{"name":"githubbot","email":"dgreif+githubbotnpm@github.com"},{"name":"dustin.greif","email":"dustin.greif@gmail.com"},{"name":"andrialexandrou","email":"andri.j.alexandrou@gmail.com"},{"name":"lukasoppermann","email":"oppermann.lukas@gmail.com"}],"homepage":"https://github.com/github/storybook-addon-performance-panel#readme","bugs":{"url":"https://github.com/github/storybook-addon-performance-panel/issues"},"dist":{"shasum":"cefc52bd2160968bc91814f017d8f86ddbb3b45b","tarball":"https://registry.npmjs.org/@github-ui/storybook-addon-performance-panel/-/storybook-addon-performance-panel-1.1.3.tgz","fileCount":25,"integrity":"sha512-h9Hoz1EXA0SquW7OoqT9ZIl2oFzDkg3+cGA4RZ5JqbBIO+5eGdXDTWH9TqGfkntO//OsYtevPlz1gBaXBY5scw==","signatures":[{"sig":"MEUCIQDjTzC4N3oYLeWuHG+HSQ4WBgdFA3e4ALc2qqmroi1vsQIgPvDVEblj99ejfUDdLA8Q5D1to1/YZOmo7YcFuO63Fx0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@github-ui%2fstorybook-addon-performance-panel@1.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":212755},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","bundler":{"nodeEntries":["preset.ts","preset-universal.ts"],"managerEntries":["manager.tsx"],"previewEntries":["preview.ts","preview-universal.ts","index.ts","index-universal.ts","index-react.ts"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./preset":{"types":"./dist/preset.d.ts","default":"./dist/preset.js"},"./manager":{"types":"./dist/manager.d.ts","default":"./dist/manager.js"},"./preview":{"types":"./dist/preview.d.ts","default":"./dist/preview.js"},"./universal":{"types":"./dist/index-universal.d.ts","default":"./dist/index-universal.js"},"./components":{"types":"./dist/index-react.d.ts","default":"./dist/index-react.js"},"./package.json":"./package.json","./universal/preset":{"types":"./dist/preset-universal.d.ts","default":"./dist/preset-universal.js"},"./universal/preview":{"types":"./dist/preview-universal.d.ts","default":"./dist/preview-universal.js"}},"gitHead":"c6cbd961457d23a087a73a90f78e7d0e0cb3100a","scripts":{"test":"vitest run","build":"tsdown","build:watch":"tsdown --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1903ae3a-f48f-4b95-9aa0-ab54334a25b7"}},"storybook":{"icon":"https://github.githubassets.com/favicons/favicon.png","displayName":"Addon Performance Panel","supportedFrameworks":["react","vue","svelte","angular","preact","web-components","html"]},"repository":{"url":"git+https://github.com/github/storybook-addon-performance-panel.git","type":"git","directory":"packages/storybook-addon-performance-panel"},"_npmVersion":"11.8.0","description":"A Storybook addon that provides a real-time performance monitoring panel with frame timing, input latency, layout shift, and React render profiling.","directories":{},"_nodeVersion":"24.13.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.20.3","vitest":"^4.0.18","esbuild":"0.27.3","publint":"^0.3.17","@types/node":"^25","@types/react":"^19.0.0","@vitejs/plugin-react":"^5.1.4","vitest-browser-react":"^2.0.5","@arethetypeswrong/core":"^0.18.2","@vitest/browser-playwright":"^4.0.18"},"peerDependencies":{"react":"^19","storybook":"^10","@storybook/icons":"^2.0.0","@storybook/react":"^10.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@storybook/react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/storybook-addon-performance-panel_1.1.3_1772118878643_0.9174214574130604","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@github-ui/storybook-addon-performance-panel","version":"1.1.4","keywords":["storybook-addon","performance","profiling","web-vitals","frame-timing","layout-shift","react"],"author":{"name":"GitHub, Inc."},"license":"MIT","_id":"@github-ui/storybook-addon-performance-panel@1.1.4","maintainers":[{"name":"mattcosta7","email":"matt@mattc.io"},{"name":"jellobagel","email":"stephielhong@gmail.com"},{"name":"manuelpuyol","email":"manuelpuyol@github.com"},{"name":"strackoverflow","email":"davidstrack@gmail.com"},{"name":"dustin.savery","email":"dustin.savery@gmail.com"},{"name":"githubbot","email":"dgreif+githubbotnpm@github.com"},{"name":"dustin.greif","email":"dustin.greif@gmail.com"},{"name":"andrialexandrou","email":"andri.j.alexandrou@gmail.com"},{"name":"lukasoppermann","email":"oppermann.lukas@gmail.com"}],"homepage":"https://github.com/github/storybook-addon-performance-panel#readme","bugs":{"url":"https://github.com/github/storybook-addon-performance-panel/issues"},"dist":{"shasum":"a2e0c043e0e973111a1b7335b31d2cbf5c72850e","tarball":"https://registry.npmjs.org/@github-ui/storybook-addon-performance-panel/-/storybook-addon-performance-panel-1.1.4.tgz","fileCount":26,"integrity":"sha512-clVeSoS1BM2z+nHffOXpnA1J034XALEDfJez6yg7TS7Clfn8eBjgw5FwLjfMvM+kWeG2nwfP6LujRMvJDqj+yg==","signatures":[{"sig":"MEYCIQD8AIGRdeRtsTnM29iJGSpJpbsjFJEd7OXrzg1Grk5GAwIhAMPeHDl2PZEPxHjpHLEMcR8f/gsV5oNYy8WiQv4NHka0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@github-ui%2fstorybook-addon-performance-panel@1.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":213187},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","bundler":{"nodeEntries":["preset.ts","preset-universal.ts"],"managerEntries":["manager.tsx"],"previewEntries":["preview.ts","preview-universal.ts","index.ts","index-universal.ts","index-react.ts"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./preset":{"types":"./dist/preset.d.ts","default":"./dist/preset.js"},"./manager":{"types":"./dist/manager.d.ts","default":"./dist/manager.js"},"./preview":{"types":"./dist/preview.d.ts","default":"./dist/preview.js"},"./universal":{"types":"./dist/index-universal.d.ts","default":"./dist/index-universal.js"},"./components":{"types":"./dist/index-react.d.ts","default":"./dist/index-react.js"},"./package.json":"./package.json","./universal/preset":{"types":"./dist/preset-universal.d.ts","default":"./dist/preset-universal.js"},"./universal/preview":{"types":"./dist/preview-universal.d.ts","default":"./dist/preview-universal.js"}},"gitHead":"4de2dba47cf674a14cc21941bf0749e42d790a9a","scripts":{"test":"vitest run","build":"tsdown","build:watch":"tsdown --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1903ae3a-f48f-4b95-9aa0-ab54334a25b7"}},"storybook":{"icon":"https://github.githubassets.com/favicons/favicon.png","displayName":"Addon Performance Panel","supportedFrameworks":["react","vue","svelte","angular","preact","web-components","html"]},"repository":{"url":"git+https://github.com/github/storybook-addon-performance-panel.git","type":"git","directory":"packages/storybook-addon-performance-panel"},"_npmVersion":"11.8.0","description":"A Storybook addon that provides a real-time performance monitoring panel with frame timing, input latency, layout shift, and React render profiling.","directories":{},"_nodeVersion":"24.13.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.20.3","vitest":"^4.0.18","esbuild":"0.27.3","publint":"^0.3.17","@types/node":"^25","@types/react":"^19.0.0","@vitejs/plugin-react":"^5.1.4","vitest-browser-react":"^2.0.5","@arethetypeswrong/core":"^0.18.2","@vitest/browser-playwright":"^4.0.18"},"peerDependencies":{"react":"^19","storybook":"^10","@storybook/icons":"^2.0.0","@storybook/react":"^10.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@storybook/react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/storybook-addon-performance-panel_1.1.4_1772138431246_0.0337001159435506","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@github-ui/storybook-addon-performance-panel","version":"1.2.0","keywords":["storybook-addon","performance","profiling","web-vitals","frame-timing","layout-shift","react"],"author":{"name":"GitHub, Inc."},"license":"MIT","_id":"@github-ui/storybook-addon-performance-panel@1.2.0","maintainers":[{"name":"alaingoga","email":"alaingoga@gmail.com"},{"name":"dustin.savery","email":"dustin.savery@gmail.com"},{"name":"manuelpuyol","email":"manuelpuyol@github.com"},{"name":"githubbot","email":"dgreif+githubbotnpm@github.com"}],"homepage":"https://github.com/github/storybook-addon-performance-panel#readme","bugs":{"url":"https://github.com/github/storybook-addon-performance-panel/issues"},"dist":{"shasum":"a4e132438aa2aa09d9f0f0a775f5b169ef778be5","tarball":"https://registry.npmjs.org/@github-ui/storybook-addon-performance-panel/-/storybook-addon-performance-panel-1.2.0.tgz","fileCount":25,"integrity":"sha512-j+mx+JVhR5muxo15zNfg4r/WStbMLoGwIKtGlWrx2Fd99xbngFfd0Rzki6uozNduzUl3ZFOP2OZ4SF0W8GLAtw==","signatures":[{"sig":"MEYCIQDLwSoT1D2M61Fb083LUsCHPkJY73Jget6V4xW4HOJIigIhALL/RaG6FFdmrAGWbkrdqPCc1nhUpUmnD6qEopAY7/JA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@github-ui%2fstorybook-addon-performance-panel@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":223741},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","bundler":{"nodeEntries":["preset.ts","preset-universal.ts"],"managerEntries":["manager.tsx"],"previewEntries":["preview.ts","preview-universal.ts","index.ts","index-universal.ts","index-react.ts"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./preset":{"types":"./dist/preset.d.ts","default":"./dist/preset.js"},"./manager":{"types":"./dist/manager.d.ts","default":"./dist/manager.js"},"./preview":{"types":"./dist/preview.d.ts","default":"./dist/preview.js"},"./universal":{"types":"./dist/index-universal.d.ts","default":"./dist/index-universal.js"},"./components":{"types":"./dist/index-react.d.ts","default":"./dist/index-react.js"},"./package.json":"./package.json","./universal/preset":{"types":"./dist/preset-universal.d.ts","default":"./dist/preset-universal.js"},"./universal/preview":{"types":"./dist/preview-universal.d.ts","default":"./dist/preview-universal.js"}},"gitHead":"077dde03eec41f7e63ba36241a3260b2279eaabd","scripts":{"test":"vitest run","build":"tsdown","benchmark":"vitest bench --config vitest.benchmark.config.ts --outputJson benchmark-results.json","build:watch":"tsdown --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1903ae3a-f48f-4b95-9aa0-ab54334a25b7"}},"storybook":{"icon":"https://github.githubassets.com/favicons/favicon.png","displayName":"Addon Performance Panel","supportedFrameworks":["react","vue","svelte","angular","preact","web-components","html"]},"repository":{"url":"git+https://github.com/github/storybook-addon-performance-panel.git","type":"git","directory":"packages/storybook-addon-performance-panel"},"_npmVersion":"11.19.0","description":"A Storybook addon that provides a real-time performance monitoring panel with frame timing, input latency, layout shift, and React render profiling.","directories":{},"_nodeVersion":"26.7.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.22.14","vitest":"4.1.10","esbuild":"0.28.2","publint":"^0.3.23","@types/node":"^26.2.0","@types/react":"^19.2.17","@vitejs/plugin-react":"^6.0.4","vitest-browser-react":"^2.2.0","@arethetypeswrong/core":"^0.18.5","@vitest/browser-playwright":"4.1.10"},"peerDependencies":{"react":"^19","storybook":"^10.0.0","@storybook/icons":"^2.0.0","@storybook/react":"^10.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@storybook/react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/storybook-addon-performance-panel_1.2.0_1787631914401_0.9417586803827491","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"_id":"@github-ui/storybook-addon-performance-panel@1.3.0","bugs":{"url":"https://github.com/github/storybook-addon-performance-panel/issues"},"dist":{"shasum":"8d5a8e3cf4d987495d29ccb8f7493f295b6e0722","tarball":"https://registry.npmjs.org/@github-ui/storybook-addon-performance-panel/-/storybook-addon-performance-panel-1.3.0.tgz","fileCount":25,"integrity":"sha512-fg17g+tMIxf43yswT87r0nFnnEqG6xxX+Y4hsBgMiZbYPnGC9Xkiv6zLq3jzTsLYZK02Cb96gOZZqb6NWc4WsA==","signatures":[{"sig":"MEUCIA5qoMiPxzDHktL+WySGbaiYKTFR78P9N2CEQR66ApB8AiEA9XXuiRGSywafNjYKoNUyDJVxEaSOBipWydFR+lGHXsA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDWqCuoNOXyIUPJn46iYPHQojR2BzvrqM26aAtKgYVyxAiAl1IAgYsYjU4yrpkZdU0b5OeryjJNS3BN1ZRp/cQ0ekg=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@github-ui%2fstorybook-addon-performance-panel@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":280559},"main":"./dist/index.js","name":"@github-ui/storybook-addon-performance-panel","type":"module","types":"./dist/index.d.ts","author":{"name":"GitHub, Inc."},"bundler":{"nodeEntries":["preset.ts","preset-universal.ts"],"managerEntries":["manager.tsx"],"previewEntries":["preview.ts","preview-universal.ts","index.ts","index-universal.ts","index-react.ts"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./preset":{"types":"./dist/preset.d.ts","default":"./dist/preset.js"},"./manager":{"types":"./dist/manager.d.ts","default":"./dist/manager.js"},"./preview":{"types":"./dist/preview.d.ts","default":"./dist/preview.js"},"./universal":{"types":"./dist/index-universal.d.ts","default":"./dist/index-universal.js"},"./components":{"types":"./dist/index-react.d.ts","default":"./dist/index-react.js"},"./package.json":"./package.json","./universal/preset":{"types":"./dist/preset-universal.d.ts","default":"./dist/preset-universal.js"},"./universal/preview":{"types":"./dist/preview-universal.d.ts","default":"./dist/preview-universal.js"}},"gitHead":"11285c181b0cb791cd58244b48df407e7910f48d","license":"MIT","scripts":{"test":"vitest run","build":"tsdown","benchmark":"vitest bench --config vitest.benchmark.config.ts --reporter=default --reporter=json --outputFile.json=benchmark-results.json","build:watch":"tsdown --watch","benchmark:compare":"node __benchmarks__/compare-results.ts benchmark-results.json"},"version":"1.3.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1903ae3a-f48f-4b95-9aa0-ab54334a25b7"}},"homepage":"https://github.com/github/storybook-addon-performance-panel#readme","keywords":["storybook-addon","performance","profiling","web-vitals","frame-timing","layout-shift","react"],"storybook":{"icon":"https://github.githubassets.com/favicons/favicon.png","displayName":"Addon Performance Panel","supportedFrameworks":["react","vue","svelte","angular","preact","web-components","html"]},"repository":{"url":"git+https://github.com/github/storybook-addon-performance-panel.git","type":"git","directory":"packages/storybook-addon-performance-panel"},"_npmVersion":"11.19.1","description":"A Storybook addon that provides a real-time performance monitoring panel with frame timing, input latency, layout shift, and React render profiling.","directories":{},"maintainers":[{"name":"alaingoga","email":"alaingoga@gmail.com"},{"name":"dustin.savery","email":"dustin.savery@gmail.com"},{"name":"manuelpuyol","email":"manuelpuyol@github.com"},{"name":"githubbot","email":"dgreif+githubbotnpm@github.com"}],"_nodeVersion":"26.8.2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.23.0","vitest":"5.0.0","esbuild":"0.28.2","publint":"^0.3.24","@types/node":"^26.4.0","@types/react":"^19.3.0","@vitejs/plugin-react":"^6.1.1","vitest-browser-react":"^2.3.0","@arethetypeswrong/core":"^0.18.5","@vitest/browser-playwright":"5.0.0"},"peerDependencies":{"react":"^19","storybook":"^10.0.0 || >=11.0.0-0 <12.0.0-0","@storybook/icons":"^2.0.0","@storybook/react":"^10.0.0 || >=11.0.0-0 <12.0.0-0"},"peerDependenciesMeta":{"react":{"optional":true},"@storybook/react":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/storybook-addon-performance-panel_1.3.0_1789404335981_0.44030386885715456"}}},"time":{"created":"2025-12-16T00:32:17.228Z","modified":"2026-09-14T16:45:36.437Z","0.1.0":"2025-12-16T00:32:17.408Z","0.1.1":"2025-12-16T00:38:20.701Z","0.1.2":"2025-12-19T23:11:50.248Z","1.0.0":"2026-02-20T14:36:20.056Z","1.0.1":"2026-02-21T17:48:38.134Z","1.0.1-canary.af37925":"2026-02-23T15:44:25.777Z","1.0.1-canary.e4e58ab":"2026-02-23T15:50:10.450Z","1.0.1-canary.3e82ebb":"2026-02-24T15:10:55.999Z","1.0.1-canary.4be2daf":"2026-02-24T15:12:04.284Z","1.0.1-canary.d6c4f43":"2026-02-24T16:03:59.180Z","1.1.0":"2026-02-24T17:35:09.490Z","1.1.1":"2026-02-24T23:33:58.995Z","1.1.2":"2026-02-25T00:16:18.061Z","1.1.3":"2026-02-26T15:14:38.811Z","1.1.4":"2026-02-26T20:40:31.389Z","1.2.0":"2026-08-25T04:25:14.536Z","1.3.0":"2026-09-14T16:45:36.083Z"},"bugs":{"url":"https://github.com/github/storybook-addon-performance-panel/issues"},"author":{"name":"GitHub, Inc."},"license":"MIT","homepage":"https://github.com/github/storybook-addon-performance-panel#readme","keywords":["storybook-addon","performance","profiling","web-vitals","frame-timing","layout-shift","react"],"repository":{"url":"git+https://github.com/github/storybook-addon-performance-panel.git","type":"git","directory":"packages/storybook-addon-performance-panel"},"description":"A Storybook addon that provides a real-time performance monitoring panel with frame timing, input latency, layout shift, and React render profiling.","maintainers":[{"name":"alaingoga","email":"alaingoga@gmail.com"},{"name":"dustin.savery","email":"dustin.savery@gmail.com"},{"name":"manuelpuyol","email":"manuelpuyol@github.com"},{"name":"githubbot","email":"dgreif+githubbotnpm@github.com"}],"readme":"# @github-ui/storybook-addon-performance-panel\n\nA Storybook addon that provides real-time performance monitoring for stories. It displays comprehensive metrics including frame timing, input responsiveness, memory usage, React profiling, and more.\n\n## Installation\n\n### React projects\n\nAdd the addon preset to `.storybook/main.ts`:\n\n```ts\n// .storybook/main.ts\nconst config = {\n  addons: ['@github-ui/storybook-addon-performance-panel'],\n}\n```\n\nRegister its preview annotations for CSF Next type safety:\n\n```ts\n// .storybook/preview.ts\nimport addonPerformancePanel from '@github-ui/storybook-addon-performance-panel'\nimport {definePreview} from '@storybook/react-vite'\n\nexport default definePreview({\n  addons: [addonPerformancePanel()],\n})\n```\n\n### Non-React projects\n\nUse the `./universal` subpath for HTML, Vue, Svelte, Web Components, and other frameworks:\n\n```ts\n// .storybook/main.ts\nconst config = {\n  addons: ['@github-ui/storybook-addon-performance-panel/universal'],\n}\n```\n\nThe preset registers the panel and applies the performance monitoring decorator globally. The universal entry omits React Profiler metrics.\n\n## Usage\n\nThe performance monitor decorator is applied globally when the addon is added to `.storybook/main.ts`, so all stories automatically have performance monitoring enabled. The metrics panel appears as a \"⚡ Performance\" tab at the bottom of Storybook.\n\n### View Mode Behavior\n\nThe performance panel automatically detects the Storybook view mode:\n\n- **Story/Canvas view**: Full performance metrics are collected and displayed\n- **Docs view**: A message is shown indicating that metrics are optimized for Canvas view, since docs mode renders stories in iframes which affects timing accuracy\n\n## Architecture\n\nThe addon consists of two main parts:\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│ Preview Iframe (Decorator)                                      │\n│  ┌─────────────────────┐    ┌─────────────────────────────┐    │\n│  │ PerformanceProvider │───▶│ Metrics Collection          │    │\n│  │   └─ProfiledComponent│   │  • RAF loop (frame timing)  │    │\n│  │       └─Story       │   │  • PerformanceObservers     │    │\n│  └─────────────────────┘   │  • MutationObservers        │    │\n│                             │  • Event listeners          │    │\n│                             │  • React Profiler API       │    │\n│                             └──────────────┬──────────────┘    │\n│                                            │                    │\n│                              channel.emit(METRICS_UPDATE)       │\n└──────────────────────────────────────────────┼──────────────────┘\n                                               │\n                                               ▼\n┌─────────────────────────────────────────────────────────────────┐\n│ Manager (Panel)                                                 │\n│  ┌─────────────────────┐                                        │\n│  │ PerformancePanel    │◀── useChannel(METRICS_UPDATE)          │\n│  │   └─MetricsSections │                                        │\n│  └─────────────────────┘                                        │\n└─────────────────────────────────────────────────────────────────┘\n```\n\n## Metrics Collected\n\n### Frame Timing\n- **FPS**: Frames per second (target: 60fps)\n- **Frame Time**: Average observed RAF interval with a refresh-rate-aware frame budget\n- **Inferred Drops**: Missed refresh opportunities inferred from the calibrated budget; inactive iframe gaps are excluded\n- **Refresh Estimate**: Display refresh rate estimated from stable RAF intervals\n- **Frame Jitter**: Sudden spikes in frame time vs baseline\n- **Frame Stability**: Percentage indicating frame time consistency\n\n### Input Responsiveness\n- **Input Latency**: Time from pointer event to next animation frame\n- **Pointer Frame Interval**: Time between the first and second animation frames scheduled after a pointer move (double-RAF heuristic, not paint duration)\n- **INP**: Interaction to Next Paint via [Event Timing API](https://w3c.github.io/event-timing/) (Core Web Vital)\n  - Uses `PerformanceObserver` with `event` entry type for accurate measurement\n  - Calculated as p98 of worst interactions per Web Vitals spec\n  - Includes breakdown: input delay, processing time, presentation delay\n- **FID**: First Input Delay - latency of the very first interaction\n- **Last Interaction**: Real-time details of most recent interaction (with Inspect button)\n- **Slowest Interaction**: Details of worst interaction for debugging (with Inspect button)\n  - Shows timing breakdown: `[wait Xms] → [js Xms] → [paint Xms]`\n  - Click \"Inspect\" to highlight and scroll to the target element\n\n### Main Thread Health\n- **Long Tasks**: Tasks blocking main thread >50ms (via PerformanceObserver)\n- **Total Blocking Time (TBT)**: Sum of (duration - 50ms) for all long tasks\n- **Thrashing**: Style writes followed by long frames (forced sync layout)\n- **DOM Churn**: Average DOM mutations normalized to a per-second rate\n\n### Long Animation Frames (Chrome 123+)\n- **LoAF Count**: Number of animation frames exceeding 50ms\n- **Blocking Duration**: Total and longest blocking time from LoAFs\n- **P95 Duration**: 95th percentile LoAF duration\n- **Script Attribution**: Which scripts contributed to long frames\n  - Source URL, function name, invoker type (event-listener, user-callback, etc.)\n  - Forced style and layout duration for the frame and top script\n  - Helps identify exactly which code caused slow frames\n\n### Element Timing\n- **Element Count**: Number of elements with `elementtiming` attribute tracked\n- **Largest Render Time**: Slowest element to render (similar to LCP concept)\n- **Individual Elements**: Render time for each tracked element\n  - Preserves relative story timing, raw Performance Timeline timestamps, selectors, and resource URLs\n  - Add `elementtiming=\"identifier\"` attribute to elements you want to track\n  - Useful for measuring when hero images, key content, or specific UI elements render\n  - Only *timing‑eligible* elements produce entries. The browser will ignore arbitrary custom elements or nodes inside shadow DOM. Valid targets include images (`<img>`), SVG `<image>`s, videos with poster frames, elements with contentful `background-image`s, and text nodes. See the [Element Timing spec](https://w3c.github.io/paint-timing/#timing-eligible) for details.\n\n### Layout Stability\n- **CLS**: Cumulative Layout Shift score (Core Web Vital)\n- **Shift Sources**: Bounded selectors and geometry for recent native layout-shift attribution\n- **Forced Layout LoAFs**: Long animation frames with native forced style/layout attribution (Chrome/Edge)\n- **Style Writes**: Inline style mutations observed via MutationObserver\n\n### React Performance\n- **Mount Count/Duration**: Initial render metrics from React Profiler\n- **Slow Updates**: React updates exceeding 16ms frame budget\n- **P95 Duration**: 95th percentile React update time\n- **Render Cascades**: Nested updates during commit phase (setState in useLayoutEffect)\n\n### Memory & Resources (Chrome only)\n- **Heap Usage**: Current JS heap size\n- **Memory Delta**: Change from baseline since last reset\n- **GC Pressure**: Memory allocation rate (MB/s)\n- **Document Paint Milestones**: Native first-paint and first-contentful-paint entries available from the current document's Performance Timeline (not component paint timings)\n- **Script Resource Load Time**: Cumulative loading duration derived from script Resource Timing entries\n- **Script Resource Attribution**: Bounded slowest-resource URLs, initiator types, relative start times, and durations\n- **Layer-Promotion Candidates**: Elements matching CSS layer-promotion heuristics (not the browser's compositor layer count)\n\n## Metric Thresholds\n\nMetrics are color-coded based on Web Vitals standards:\n\n| Status | Meaning |\n|--------|---------|\n| 🟢 Green | Good performance (meets targets) |\n| 🟡 Yellow | Needs improvement (may cause issues) |\n| 🔴 Red | Poor performance (likely causing issues) |\n\n### Key Thresholds\n\n| Metric | Good | Needs Work | Poor |\n|--------|------|------------|------|\n| FPS | ≥55 | 30-55 | <30 |\n| Frame Time | ≤16.67ms | 16.67-32ms | >32ms |\n| Input Latency | ≤16ms | 16-50ms | >50ms |\n| INP | ≤200ms | 200-500ms | >500ms |\n| CLS | <0.1 | 0.1-0.25 | >0.25 |\n| TBT | <200ms | 200-600ms | >600ms |\n\n## Package Exports\n\nThe addon follows [Storybook addon best practices](https://storybook.js.org/docs/addons/writing-presets) with the following entry points:\n\n### React projects (default)\n\n```typescript\n// CSF factory entry — used in preview.ts with definePreview()\nimport addonPerformancePanel from '@github-ui/storybook-addon-performance-panel'\n\n// Preset — registers the manager panel (used in main.ts addons array)\nimport '@github-ui/storybook-addon-performance-panel/preset'\n\n// Preview annotations — used internally by the preset\nimport '@github-ui/storybook-addon-performance-panel/preview'\n\n// Manager — registers the panel UI in Storybook's manager\nimport '@github-ui/storybook-addon-performance-panel/manager'\n```\n\n### Non-React projects (HTML, Vue, Svelte, Web Components, etc.)\n\nUse the `./universal` subpath — no React dependency:\n\n```typescript\n// CSF factory entry — used in preview.ts with definePreview()\nimport addonPerformancePanel from '@github-ui/storybook-addon-performance-panel/universal'\n\n// Preset — registers the manager panel (used in main.ts addons array)\n// Uses the same preset and manager as the React entry\nimport '@github-ui/storybook-addon-performance-panel/preset'\n```\n\nThe universal entry collects all browser-level metrics (frame timing, CLS, INP, etc.) but omits React Profiler metrics. The React Performance section is automatically hidden in the panel.\n\n### Metric contract metadata\n\nEvery public metric has static metadata describing its source, confidence, and unit:\n\n```typescript\nimport {PERFORMANCE_METRIC_METADATA} from '@github-ui/storybook-addon-performance-panel'\n\nconst {provenance, quality, unit} = PERFORMANCE_METRIC_METADATA.pointerFrameInterval\n// {provenance: 'heuristic', quality: 'low', unit: 'milliseconds'}\n```\n\nQuality is `high` for direct or deterministic signals, `medium` for sampled or browser-limited values, `low` for heuristic proxies, and `unavailable` for unsupported compatibility placeholders. This metadata is invariant and is not repeated in live channel payloads.\n\n## Collection Lifecycle\n\nBrowser performance collection runs automatically while the Performance panel is selected. Closing the panel disconnects browser collectors, DOM observers, and live-update timers to minimize background overhead. Reopening the panel resumes collection without clearing the metrics already gathered for the current story. React Profiler callbacks remain attached so mount and render history is not lost before the panel opens.\n\nDOM mutation observation and layer-promotion scans are scoped to the active story root. Layer checks are split into bounded idle-callback chunks, pointer samples share one cancellable RAF pipeline, and collection does not patch DOM or CSS prototypes.\n\nUse the reset button to clear accumulated metrics, or set `parameters.performancePanel.disable` to `true` to disable the addon for a story.\n\n## Collectors\n\nThe addon uses modular collector classes for metrics gathering. Each collector uses the most accurate available API for its metrics.\n\n**See [collectors/README.md](./collectors/README.md) for detailed documentation on:**\n- Collection methods (optimal vs heuristic)\n- Browser APIs used\n- Accuracy and limitations\n- Browser compatibility\n\n| Collector | Method | Type |\n|-----------|--------|------|\n| `FrameTimingCollector` | `requestAnimationFrame` loop | Heuristic |\n| `InputCollector` | Event Timing API (`PerformanceObserver`) | **Optimal** |\n| `MainThreadCollector` | Long Tasks API (`PerformanceObserver`) | **Optimal** |\n| `LongAnimationFrameCollector` | LoAF API (`PerformanceObserver`) | **Optimal** |\n| `LayoutShiftCollector` | Layout Instability API (`PerformanceObserver`) | **Optimal** |\n| `MemoryCollector` | `performance.memory` | **Optimal** |\n| `PaintCollector` | Paint + Resource Timing APIs, CSS heuristic | Mixed |\n| `StyleMutationCollector` | `MutationObserver` | Heuristic |\n| `ReactProfilerCollector` | React Profiler API | **Optimal** |\n\n## Browser Compatibility\n\n- **Chrome/Edge**: Full support including memory metrics and LoAF (123+)\n- **Firefox/Safari**: Most metrics supported, memory API and LoAF unavailable\n- **Memory API**: Requires `performance.memory` (Chrome-only)\n- **Long Animation Frames**: Requires Chrome 123+ or Edge 123+\n- **Layer-Promotion Candidates**: CSS heuristic available in all supported browsers; not a compositor-layer measurement\n\n## Development\n\n```bash\n# Run tests\nnpm test -w @github-ui/storybook-addon-performance-panel\n\n# Type check\nnpm run tsc -w @github-ui/storybook-addon-performance-panel\n\n# Lint\nnpm run lint -w @github-ui/storybook-addon-performance-panel\n\n# Write a candidate benchmark without replacing the saved local baseline\ncd packages/storybook-addon-performance-panel\n../../node_modules/.bin/vitest bench --config vitest.benchmark.config.ts --reporter=default --reporter=json --outputFile.json=.overhead-current.json\nnpm run benchmark:compare -- .overhead-current.json\nrm .overhead-current.json\n```\n\nThe benchmark also measures a fully populated bounded-attribution payload and prints `OVERHEAD_TELEMETRY_SNAPSHOT` and `MAX_ATTRIBUTION_PAYLOAD_TELEMETRY` after timed samples complete. They report collector callback timing, `computeMetrics()` timing, serialization duration and bytes, scan counts, and current/peak pending work. This telemetry is opt-in benchmark instrumentation and is not part of `PerformanceMetrics` or live addon payloads.\n\n## Related Files\n\n- [performance-decorator.tsx](./performance-decorator.tsx) - Metrics collection in preview iframe\n- [performance-panel.tsx](./performance-panel.tsx) - UI panel in manager\n- [performance-types.ts](./performance-types.ts) - Shared types and constants\n- [collectors/](./collectors/) - Modular metric collector classes\n\n---\n\n## Interpreting Metrics & Troubleshooting\n\nThis section provides guidance on how to analyze performance issues using the metrics panel.\n\n### Quick Health Check\n\nStart by scanning these key indicators:\n\n| Check | What to Look For |\n|-------|------------------|\n| **FPS** | Should be 55-60. Sustained drops indicate rendering issues |\n| **INP** | Should be <200ms. High values mean slow user interactions |\n| **Long Tasks** | Should be 0-1. More than 5 indicates main thread blocking |\n| **CLS** | Should be 0. Any value suggests layout instability |\n| **Slow Updates** | Should be 0. Non-zero means React renders exceeding frame budget |\n\n### Common Performance Patterns\n\n#### 🐌 Slow Initial Load / Mount\n\n**Symptoms:**\n- High `Mount Duration` (>100ms)\n- Long Tasks spike on story change\n- High TBT during load\n\n**Where to Look:**\n1. Check `Mount Duration` in React section\n2. Look at `Long Tasks` count and `Longest Task` duration\n3. Review script requests in the Network panel and the derived `scriptResourceLoadTime` metric\n\n**Common Causes:**\n- Heavy component initialization\n- Synchronous data fetching\n- Large bundle imports\n- Complex initial render tree\n\n**Fixes:**\n- Lazy load heavy dependencies\n- Use `React.lazy()` for code splitting\n- Defer non-critical initialization\n- Memoize expensive computations\n\n---\n\n#### 🎢 Janky Scrolling / Animations\n\n**Symptoms:**\n- FPS drops below 55\n- High `Frame Time` (>16.7ms)\n- `Dropped Frames` increasing\n- `Frame Jitter` spikes\n\n**Where to Look:**\n1. Watch FPS sparkline during interaction\n2. Check `Frame Stability` percentage\n3. Look for `Thrashing` score increases\n\n**Common Causes:**\n- Layout thrashing (read/write cycles)\n- Expensive scroll handlers\n- Non-composited animations\n- Large DOM mutations during scroll\n\n**Fixes:**\n- Use `transform` and `opacity` for animations (GPU-accelerated)\n- Debounce/throttle scroll handlers\n- Use `will-change` sparingly for animation targets\n- Batch DOM reads before writes\n\n---\n\n#### ⏳ Slow Click/Keyboard Response\n\n**Symptoms:**\n- High `INP` (>200ms)\n- `Input Latency` spikes\n- `Last Interaction` shows high duration\n- Event timing breakdown shows delays\n\n**Where to Look:**\n1. Click the \"Inspect\" button on slowest interaction\n2. Review timing breakdown: `[wait Xms] → [js Xms] → [paint Xms]`\n3. Check `Input Jitter` for inconsistency\n\n**Interpreting Timing Breakdown:**\n- **Wait (input delay)**: Time before JS starts processing. High values indicate blocked main thread.\n- **JS (processing time)**: Time in event handlers. High values indicate expensive handlers.\n- **Paint (presentation delay)**: Time from handler end to visual update. High values indicate expensive rendering.\n\n**Common Causes by Phase:**\n| Phase | If High... | Common Causes |\n|-------|------------|---------------|\n| Wait | Main thread blocked | Long tasks, heavy computation before click |\n| JS | Expensive handler | Complex state updates, sync operations |\n| Paint | Expensive render | Large DOM changes, layout recalculation |\n\n**Fixes:**\n- Break up long tasks with `scheduler.yield()` or `setTimeout`\n- Move expensive work to Web Workers\n- Virtualize long lists\n- Optimize React render paths (memoization, selective updates)\n\n---\n\n#### 📦 Layout Shifts (CLS)\n\n**Symptoms:**\n- `CLS` score >0\n- `Layout Shift Count` increasing\n- Visual elements jumping around\n\n**Where to Look:**\n1. Watch CLS during interactions\n2. Note the shift count to identify frequency\n3. Check if shifts correlate with data loading\n\n**Common Causes:**\n- Images without explicit dimensions\n- Dynamically injected content\n- Font loading (FOUT/FOIT)\n- Ads or embeds loading\n- Skeleton placeholders with wrong sizes\n\n**Fixes:**\n- Always set `width`/`height` or `aspect-ratio` on images/videos\n- Reserve space for dynamic content with min-height\n- Use `font-display: optional` or preload fonts\n- Prefer transforms over layout-affecting properties for animations\n\n---\n\n#### 🔄 React Re-render Issues\n\n**Symptoms:**\n- High `Slow Updates` count\n- `P95 Duration` exceeding 16ms\n- `Render Cascades` > 0\n- High `Post-Mount Update Count`\n\n**Where to Look:**\n1. Check `Slow Updates` and `P95 Duration`\n2. Look for `Render Cascades` (indicates useLayoutEffect issues)\n3. Compare `Mount Count` vs `Post-Mount Update Count`\n\n**Interpreting React Metrics:**\n- **Slow Updates**: Updates taking >16ms. Even 1 is problematic.\n- **P95 Duration**: 95th percentile. Shows worst-case user experience.\n- **Render Cascades**: setState during commit phase. Very expensive!\n\n**Common Causes:**\n- Missing `useMemo`/`useCallback` on expensive values\n- Prop drilling causing subtree re-renders\n- `useLayoutEffect` triggering synchronous re-renders\n- Context providers with unstable values\n- Effect dependencies causing infinite loops\n\n**Fixes:**\n- Use React DevTools Profiler to identify slow components\n- Add `React.memo()` to pure components\n- Memoize context values and callbacks\n- Split contexts to reduce subscriber scope\n- Move state closer to where it's used\n\n---\n\n#### 🔥 Forced Style & Layout (Layout Thrashing)\n\n**Symptoms:**\n- `Forced Layout LoAFs` count >0\n- `Forced Style / Layout` duration appears on the worst LoAF\n- `Thrashing` score increasing\n- FPS drops during interactions\n\n**Where to Look:**\n1. Check `Forced Layout LoAFs` and the worst LoAF attribution\n2. Look for `Thrashing` correlation with long frames\n3. Review `Style Writes` frequency\n\n**What Causes Forced Reflow:**\nReading layout properties after writing styles forces synchronous layout calculation:\n\n```javascript\n// ❌ BAD: Causes forced reflow\nelement.style.width = '100px'\nconst height = element.offsetHeight  // Forces layout!\nelement.style.height = height + 'px'\n\n// ✅ GOOD: Batch reads, then writes\nconst height = element.offsetHeight  // Read first\nelement.style.width = '100px'        // Write after\nelement.style.height = height + 'px'\n```\n\n**Layout-triggering Properties:**\n- `offsetTop/Left/Width/Height`\n- `scrollTop/Left/Width/Height`\n- `clientTop/Left/Width/Height`\n- `getComputedStyle()`\n- `getBoundingClientRect()`\n\n**Fixes:**\n- Batch all DOM reads before any writes\n- Use `requestAnimationFrame` to defer layout-affecting work\n- Cache layout values when possible\n- Use CSS transforms instead of top/left\n\n---\n\n#### 💾 Memory Issues\n\n**Symptoms:**\n- `Memory Delta` growing steadily\n- `GC Pressure` >1 MB/s\n- `Peak Memory` keeps increasing after reset\n\n**Where to Look:**\n1. Watch `Memory Delta` trend over time\n2. Check `GC Pressure` for allocation rate\n3. Compare `Heap Usage` before/after interactions\n\n**Common Causes:**\n- Event listeners not cleaned up\n- Closures holding references\n- Growing arrays/caches without limits\n- Detached DOM nodes\n- Unsubscribed observables/subscriptions\n\n**Fixes:**\n- Use React's cleanup functions in useEffect\n- Implement LRU caches with size limits\n- Use WeakMap/WeakSet for object references\n- Profile with Chrome DevTools Memory tab\n\n---\n\n### Debugging Workflow\n\n#### Step 1: Baseline\n1. Open story in isolation\n2. Click Reset (🔄) to clear metrics\n3. Wait 2-3 seconds for metrics to stabilize\n4. Note baseline FPS, memory, and any initial issues\n\n#### Step 2: Interact\n1. Perform the problematic interaction slowly\n2. Watch metrics change in real-time\n3. Note which metrics spike or degrade\n\n#### Step 3: Identify\n1. Check the \"worst\" metric indicator\n2. Use the timing breakdown for input issues\n3. Click \"Inspect\" to highlight slow interaction targets\n4. Cross-reference with React DevTools if needed\n\n#### Step 4: Fix & Verify\n1. Make changes to address the identified issue\n2. Reset metrics again\n3. Repeat the interaction\n4. Confirm metrics improved\n\n### Metric Correlations\n\nUse these correlations to triangulate issues:\n\n| If you see... | Also check... | Likely cause |\n|---------------|---------------|--------------|\n| Low FPS + High Long Tasks | TBT, Longest Task | Heavy JS execution |\n| Low FPS + High Style Writes | Thrashing, Forced Layout LoAFs | Layout thrashing |\n| High INP + High Wait phase | Long Tasks | Blocked main thread |\n| High INP + High JS phase | Slow Updates, P95 | Expensive handlers |\n| High INP + High Paint phase | CLS, DOM Churn | Expensive rendering |\n| High CLS + DOM Churn | Style Writes | Dynamic content |\n| Rising Memory + High DOM Elements | DOM Churn | DOM leak |\n| Render Cascades > 0 | Slow Updates | useLayoutEffect issues |\n\n### Browser-Specific Notes\n\n**Chrome/Edge (recommended for debugging):**\n- Full metric support including memory\n- INP via Event Timing API\n- Best for initial investigation\n\n**Firefox/Safari:**\n- No memory metrics\n- No Event Timing API (INP shows \"N/A\")\n- Use for cross-browser validation after Chrome debugging\n","readmeFilename":"README.md"}