Skip to content
cccskills
FreePublished on GitHubEnglish overview

storybook-startup-benchmark

Measure Storybook startup from launching the process to displaying the first story. Separate server readiness from browser rendering, summarize repeated runs, and compare versions or feature flags to investigate slower startup.

OriginalShow the original description

Measure Storybook startup time from spawning `storybook dev` until the first story renders in the browser. Use when the user asks about Storybook boot time, server-ready timing, first story render timing, startup regressions, benchmarking with repeat runs, or comparing Storybook versions or feature flags.

Run score Not tested

See how to install

Good for

  • Measure startup through the first story render
  • Compare Storybook versions or feature flags
  • Summarize repeated startup measurements
  • Investigate server or browser startup slowdowns

Overview

What it does

Measure the time from starting Storybook to displaying the first story using a repeatable procedure. Results separate server, from process launch to server response; browser, from response to rendering; and total, covering the whole interval. Repeated runs report the average, minimum, maximum, and p95, helping you see typical waits and the pattern of slower runs.

When it helps

Use it to compare startup times before and after a Storybook version update or a feature flag change. The separate measurements also provide clues about whether extra time comes from the server side or the browser side.

Example requests

  • “Measure from launching storybook dev until the first story appears.”
  • “Run 20 measurements with the feature flag enabled and 20 without it, then compare the average and p95.”

Notes

The workflow assumes Storybook, a Node script, and a browser it can control. It opens the normal / page and ends measurement after the first mount plus one requestAnimationFrame(). Check for leftover servers and occupied ports. Repeated measurements in a warm state must not be treated as cold-start data.

This overview was written by AI (OpenAI Codex) from the public SKILL.md. Check the original below for the exact behavior.

Document check

AI checked the SKILL.md for operations that need care and for setup requirements. The score comes only from actually running the skill (hands-on test).

SafetyAre sending data, deleting files, and running commands disclosed?
AGoodIt explicitly requires stopping on an occupied port and cleaning up the full process group spawned by the benchmark.
Easy setupDoes it need few tools or API keys, and are they documented?
BPartly lackingNode and browser control are required, but instructions for setting up the browser control environment are absent.

Not counted in the score. Rated by AI (OpenAI Codex) as of Oct 21, 2026. Treat it as a guide and read the original before installing.

Disagree? Request a re-evaluation

Tell us which point is wrong and why. No login needed. We will check it against the SKILL.md, redo the evaluation, and show the result here.

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

Files included (1)

  • SKILL.md5.0 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Storybook Startup Benchmark

Purpose

Use this skill to build or explain a repeatable benchmark for Storybook startup:

  • server: process spawn -> Storybook server responds
  • browser: server responds -> first story rendered
  • total: process spawn -> first story rendered

Quick Start

When asked to benchmark Storybook startup:

  1. Confirm the boundary:
    • Start timing immediately before spawning storybook dev
    • Open Storybook at /, not iframe.html
    • Stop timing on first story mount plus one requestAnimationFrame()
  2. Check whether the repo already has a benchmark script. Reuse it if possible.
  3. If not, create a Node script that:
    • starts Storybook without opening a browser
    • waits for the server to respond
    • launches a browser it controls
    • waits for a preview-side render signal
    • prints JSON results
  4. Add --repeat <count> support with grouped summary stats.

Measurement Rules

Use these defaults unless the user asks otherwise:

  • Start URL: /
  • Browser path: normal manager page, let Storybook load the preview iframe itself
  • Render signal: first preview story mount + one requestAnimationFrame()
  • Browser launch: external harness launches the browser, not Storybook
  • Auto-open: keep Storybook from opening a browser. Storybook 11 opens one only with --open; Storybook 10 and older need --no-open

Do not measure only CLI output. Server listening is not the same as first story rendered.

Recommended Implementation

1. Preview-side signal

Add a small global preview decorator or component that runs once on the first story mount:

  • wait one requestAnimationFrame()
  • set a global value like window.__sbStartupBenchmark
  • also mirror that value to window.top when same-origin
  • optionally call performance.mark('sb:first-story-rendered')

Preferred payload:

{
  firstStoryRenderedAt: performance.now(),
  storyId: id
}

2. Harness behavior

The benchmark script should:

  1. Fail fast if the target Storybook port is already in use
  2. Spawn Storybook without opening a browser
  3. Start timing immediately before spawn
  4. Wait for HTTP readiness on the Storybook URL
  5. Launch a controlled browser to /
  6. Wait for the preview-side signal
  7. Print JSON results
  8. Kill the full spawned process group during cleanup

3. Repeated runs

For --repeat N, print:

  • per-run results
  • summary stats grouped by server, browser, and total
  • human-readable durations like 5.2s or 2m15s, not raw millisecond field names

Recommended summary fields:

{
  "server": {
    "average": "5.2s",
    "min": "4.8s",
    "max": "6.1s",
    "p95": "6.0s"
  },
  "browser": {
    "average": "1.9s",
    "min": "1.6s",
    "max": "2.4s",
    "p95": "2.3s"
  },
  "total": {
    "average": "7.1s",
    "min": "6.6s",
    "max": "8.2s",
    "p95": "8.1s"
  }
}

Interpretation Guidance

Use these heuristics when explaining results:

  • If server grows, the regression is likely on the server/build side.
  • If browser grows, the regression is likely in manager boot, preview boot, or first-story render.
  • If averages are close but p95 grows a lot, the feature likely increases variability or tail latency.
  • If newer Storybook without a feature is much faster than older Storybook, but enabling the feature returns timings to older levels, the feature likely erases the newer startup gains.

Common Pitfalls

  • Existing Storybook already running on the benchmark port
  • Storybook auto-opening a separate browser window
  • Measuring direct iframe.html loads instead of normal /
  • Leaving child Storybook processes alive between runs
  • Treating warm repeated runs as cold-start data

If a repeated benchmark reports unrealistically low server.average, first check for a stale Storybook server on the same port.

Tooling Notes

  • Prefer a plain Node script for portability.
  • For Chrome-family browsers, remote debugging is a practical control path.
  • If Storybook CLI flags or behavior are in question, fetch current Storybook docs first.

Output Style

When reporting results:

  • clearly separate server, browser, and total
  • call out averages and p95 first, with min/max as supporting bounds
  • highlight whether the regression affects common-case latency, tail latency, or both
  • avoid claiming root cause unless the benchmark isolates server vs render behavior

Example Triggers

Use this skill when the user says things like:

  • "How can I test Storybook startup time?"
  • "Measure from storybook dev to first story render"
  • "Compare Storybook startup with and without this feature flag"
  • "Run 20 startup measurements and summarize averages"
  • "Is this startup regression server-side or render-side?"

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

canary

FreeSummary

Find a trial Storybook package for a specific branch, or trigger its publication when needed. Check release progress and obtain the package reference or commands for creating or upgrading a project with that build.

  • Find a trial package for a Storybook branch
  • Publish a trial build for a fork pull request
  • Check publication progress and installation commands
storybookjs/storybook91.4KUpdated Oct 23, 2026

component-docs

FreeSummary

Look up a project's existing UI components in Storybook, including their props, or configuration inputs, and usage examples. Use the findings to answer questions and identify components to reuse before building duplicates.

  • Find existing UI components
  • Check component props and usage examples
  • Answer questions about component usage
storybookjs/storybook91.4KUpdated Oct 23, 2026

docs-review

FreeSummary

Review, improve, rewrite, or draft Storybook documentation in /docs. Assess each page’s purpose, audience, structure, and examples, then make suitable edits or provide a content plan, with formatting checks after changes.

  • Improve the structure and examples of a documentation page
  • Draft documentation for a new feature
  • Plan page types and outlines
storybookjs/storybook91.4KUpdated Oct 23, 2026

Check out a GitHub pull request, fix linting and TypeScript errors, and commit and push the changes. The workflow supports forked pull requests and repeats type checks to verify fixes while keeping changes focused on these errors.

  • Fix linting errors in a pull request
  • Resolve TypeScript errors in a pull request
  • Apply fixes to a pull request from a fork
storybookjs/storybook91.4KUpdated Oct 23, 2026

github-qa-labels

FreeSummary

Organize GitHub issues and pull requests found during quality assurance testing. Apply release tracking labels, classify bugs by four severity levels, and label multiple findings while keeping documentation issues and feature requests outside the severity scheme.

  • Group QA findings by release
  • Classify bugs by severity
  • Apply labels to multiple issues and pull requests
storybookjs/storybook91.4KUpdated Oct 23, 2026

Work through unresolved GitHub pull request reviews one at a time. The skill explains each comment, proposes a fix, asks how to proceed, and handles chosen edits, replies, commits, and thread resolution.

  • Addressing unresolved pull request review comments
  • Choosing between a code fix, a reply, or skipping a comment
  • Handling duplicate review comments together
storybookjs/storybook91.4KUpdated Oct 23, 2026

See all skills by storybookjs

Report a problem with this skill