Skip to content
DocsChartsThreshold what-ifLast updated Nov 2, 2026

Threshold what-if

What a new alert threshold would have done. Sample data: hourly success rate, Oct 10 to today, 14 alerts at 96%, 3 at a proposed 95%.

Alerts now and with the proposed thresholdHourly run success over 168 hours, between 94.6% and 97.77%: the current 96% threshold raised 14 alerts, the proposed 95% threshold would have raised 3.NOW 14PROPOSED 394%95%96%97%NOWPROPOSEDOCT 10OCT 12OCT 14TODAYHOURLY SUCCESSNOW · 96%PROPOSED · 95%
Alerts now and with the proposed threshold
HourSuccess
Oct 10 00:0097.1%
Oct 10 01:0097.38%
Oct 10 02:0097.54%
Oct 10 03:0097.62%
Oct 10 04:0097.4%
Oct 10 05:0097.5%
Oct 10 06:0097.5%
Oct 10 07:0096.4%
Oct 10 08:0095.6%
Oct 10 09:0096.5%
Oct 10 10:0097.62%
Oct 10 11:0097.61%
Oct 10 12:0097.42%
Oct 10 13:0097.57%
Oct 10 14:0097.54%
Oct 10 15:0097.43%
Oct 10 16:0097.25%
Oct 10 17:0097.31%
Oct 10 18:0097.14%
Oct 10 19:0097.03%
Oct 10 20:0096.95%
Oct 10 21:0096.4%
Oct 10 22:0095.6%
Oct 10 23:0096.5%
Oct 11 00:0097.07%
Oct 11 01:0096.94%
Oct 11 02:0096.86%
Oct 11 03:0097.03%
Oct 11 04:0096.94%
Oct 11 05:0096.4%
Oct 11 06:0095.6%
Oct 11 07:0096.5%
Oct 11 08:0097.19%
Oct 11 09:0097.3%
Oct 11 10:0097.52%
Oct 11 11:0097.48%
Oct 11 12:0097.46%
Oct 11 13:0097.75%
Oct 11 14:0097.44%
Oct 11 15:0097.64%
Oct 11 16:0097.59%
Oct 11 17:0097.45%
Oct 11 18:0097.47%
Oct 11 19:0097.57%
Oct 11 20:0096.4%
Oct 11 21:0095.6%
Oct 11 22:0096.5%
Oct 11 23:0097.18%
Oct 12 00:0097.13%
Oct 12 01:0097.13%
Oct 12 02:0096.94%
Oct 12 03:0096.4%
Oct 12 04:0094.6%
Oct 12 05:0096.5%
Oct 12 06:0097.06%
Oct 12 07:0096.92%
Oct 12 08:0096.76%
Oct 12 09:0097%
Oct 12 10:0097.13%
Oct 12 11:0096.4%
Oct 12 12:0095.6%
Oct 12 13:0096.5%
Oct 12 14:0097.15%
Oct 12 15:0097.26%
Oct 12 16:0097.36%
Oct 12 17:0097.54%
Oct 12 18:0097.5%
Oct 12 19:0097.38%
Oct 12 20:0097.47%
Oct 12 21:0096.4%
Oct 12 22:0095.6%
Oct 12 23:0096.5%
Oct 13 00:0097.7%
Oct 13 01:0097.56%
Oct 13 02:0096.4%
Oct 13 03:0095.6%
Oct 13 04:0096.5%
Oct 13 05:0097.4%
Oct 13 06:0097.32%
Oct 13 07:0097.24%
Oct 13 08:0097.31%
Oct 13 09:0097.26%
Oct 13 10:0097.14%
Oct 13 11:0096.97%
Oct 13 12:0096.92%
Oct 13 13:0097.07%
Oct 13 14:0097%
Oct 13 15:0096.4%
Oct 13 16:0095.6%
Oct 13 17:0096.5%
Oct 13 18:0097.15%
Oct 13 19:0096.4%
Oct 13 20:0094.6%
Oct 13 21:0096.5%
Oct 13 22:0097.3%
Oct 13 23:0097.47%
Oct 14 00:0097.48%
Oct 14 01:0097.43%
Oct 14 02:0097.65%
Oct 14 03:0097.42%
Oct 14 04:0097.64%
Oct 14 05:0097.77%
Oct 14 06:0097.76%
Oct 14 07:0096.4%
Oct 14 08:0095.6%
Oct 14 09:0096.5%
Oct 14 10:0097.37%
Oct 14 11:0097.53%
Oct 14 12:0097.35%
Oct 14 13:0097.28%
Oct 14 14:0097.11%
Oct 14 15:0097.05%
Oct 14 16:0097.16%
Oct 14 17:0097.2%
Oct 14 18:0096.97%
Oct 14 19:0096.97%
Oct 14 20:0097.03%
Oct 14 21:0096.4%
Oct 14 22:0095.6%
Oct 14 23:0096.5%
Oct 15 00:0096.82%
Oct 15 01:0096.99%
Oct 15 02:0096.98%
Oct 15 03:0097.27%
Oct 15 04:0097.33%
Oct 15 05:0096.4%
Oct 15 06:0095.6%
Oct 15 07:0096.5%
Oct 15 08:0097.29%
Oct 15 09:0097.4%
Oct 15 10:0097.53%
Oct 15 11:0097.54%
Oct 15 12:0097.67%
Oct 15 13:0097.67%
Oct 15 14:0097.74%
Oct 15 15:0097.45%
Oct 15 16:0097.57%
Oct 15 17:0097.5%
Oct 15 18:0097.38%
Oct 15 19:0097.56%
Oct 15 20:0097.37%
Oct 15 21:0097.14%
Oct 15 22:0097.31%
Oct 15 23:0097.14%
Oct 16 00:0096.98%
Oct 16 01:0097%
Oct 16 02:0097.08%
Oct 16 03:0097.03%
Oct 16 04:0097.11%
Oct 16 05:0096.83%
Oct 16 06:0096.93%
Oct 16 07:0096.4%
Oct 16 08:0094.6%
Oct 16 09:0096.3%
Oct 16 10:0096.53%
Oct 16 11:0096.54%
Oct 16 12:0096.38%
Oct 16 13:0096.34%
Oct 16 14:0096.2%
Oct 16 15:0096.73%
Oct 16 16:0096.53%
Oct 16 17:0096.25%
Oct 16 18:0096.8%
Oct 16 19:0096.76%
Oct 16 20:0096.52%
Oct 16 21:0096.68%
Oct 16 22:0096.32%
Oct 16 23:0096.68%
Alerts now and with the proposed thresholdHourly run success over 168 hours, between 94.6% and 97.77%: the current 96% threshold raised 14 alerts, the proposed 95% threshold would have raised 3.NOW 14PROPOSED 394%95%96%97%NOWPROPOSEDOCT 10OCT 13TODAYHOURLY SUCCESSNOW · 96%PROPOSED · 95%
Alerts now and with the proposed threshold
HourSuccess
Oct 10 00:0097.1%
Oct 10 01:0097.38%
Oct 10 02:0097.54%
Oct 10 03:0097.62%
Oct 10 04:0097.4%
Oct 10 05:0097.5%
Oct 10 06:0097.5%
Oct 10 07:0096.4%
Oct 10 08:0095.6%
Oct 10 09:0096.5%
Oct 10 10:0097.62%
Oct 10 11:0097.61%
Oct 10 12:0097.42%
Oct 10 13:0097.57%
Oct 10 14:0097.54%
Oct 10 15:0097.43%
Oct 10 16:0097.25%
Oct 10 17:0097.31%
Oct 10 18:0097.14%
Oct 10 19:0097.03%
Oct 10 20:0096.95%
Oct 10 21:0096.4%
Oct 10 22:0095.6%
Oct 10 23:0096.5%
Oct 11 00:0097.07%
Oct 11 01:0096.94%
Oct 11 02:0096.86%
Oct 11 03:0097.03%
Oct 11 04:0096.94%
Oct 11 05:0096.4%
Oct 11 06:0095.6%
Oct 11 07:0096.5%
Oct 11 08:0097.19%
Oct 11 09:0097.3%
Oct 11 10:0097.52%
Oct 11 11:0097.48%
Oct 11 12:0097.46%
Oct 11 13:0097.75%
Oct 11 14:0097.44%
Oct 11 15:0097.64%
Oct 11 16:0097.59%
Oct 11 17:0097.45%
Oct 11 18:0097.47%
Oct 11 19:0097.57%
Oct 11 20:0096.4%
Oct 11 21:0095.6%
Oct 11 22:0096.5%
Oct 11 23:0097.18%
Oct 12 00:0097.13%
Oct 12 01:0097.13%
Oct 12 02:0096.94%
Oct 12 03:0096.4%
Oct 12 04:0094.6%
Oct 12 05:0096.5%
Oct 12 06:0097.06%
Oct 12 07:0096.92%
Oct 12 08:0096.76%
Oct 12 09:0097%
Oct 12 10:0097.13%
Oct 12 11:0096.4%
Oct 12 12:0095.6%
Oct 12 13:0096.5%
Oct 12 14:0097.15%
Oct 12 15:0097.26%
Oct 12 16:0097.36%
Oct 12 17:0097.54%
Oct 12 18:0097.5%
Oct 12 19:0097.38%
Oct 12 20:0097.47%
Oct 12 21:0096.4%
Oct 12 22:0095.6%
Oct 12 23:0096.5%
Oct 13 00:0097.7%
Oct 13 01:0097.56%
Oct 13 02:0096.4%
Oct 13 03:0095.6%
Oct 13 04:0096.5%
Oct 13 05:0097.4%
Oct 13 06:0097.32%
Oct 13 07:0097.24%
Oct 13 08:0097.31%
Oct 13 09:0097.26%
Oct 13 10:0097.14%
Oct 13 11:0096.97%
Oct 13 12:0096.92%
Oct 13 13:0097.07%
Oct 13 14:0097%
Oct 13 15:0096.4%
Oct 13 16:0095.6%
Oct 13 17:0096.5%
Oct 13 18:0097.15%
Oct 13 19:0096.4%
Oct 13 20:0094.6%
Oct 13 21:0096.5%
Oct 13 22:0097.3%
Oct 13 23:0097.47%
Oct 14 00:0097.48%
Oct 14 01:0097.43%
Oct 14 02:0097.65%
Oct 14 03:0097.42%
Oct 14 04:0097.64%
Oct 14 05:0097.77%
Oct 14 06:0097.76%
Oct 14 07:0096.4%
Oct 14 08:0095.6%
Oct 14 09:0096.5%
Oct 14 10:0097.37%
Oct 14 11:0097.53%
Oct 14 12:0097.35%
Oct 14 13:0097.28%
Oct 14 14:0097.11%
Oct 14 15:0097.05%
Oct 14 16:0097.16%
Oct 14 17:0097.2%
Oct 14 18:0096.97%
Oct 14 19:0096.97%
Oct 14 20:0097.03%
Oct 14 21:0096.4%
Oct 14 22:0095.6%
Oct 14 23:0096.5%
Oct 15 00:0096.82%
Oct 15 01:0096.99%
Oct 15 02:0096.98%
Oct 15 03:0097.27%
Oct 15 04:0097.33%
Oct 15 05:0096.4%
Oct 15 06:0095.6%
Oct 15 07:0096.5%
Oct 15 08:0097.29%
Oct 15 09:0097.4%
Oct 15 10:0097.53%
Oct 15 11:0097.54%
Oct 15 12:0097.67%
Oct 15 13:0097.67%
Oct 15 14:0097.74%
Oct 15 15:0097.45%
Oct 15 16:0097.57%
Oct 15 17:0097.5%
Oct 15 18:0097.38%
Oct 15 19:0097.56%
Oct 15 20:0097.37%
Oct 15 21:0097.14%
Oct 15 22:0097.31%
Oct 15 23:0097.14%
Oct 16 00:0096.98%
Oct 16 01:0097%
Oct 16 02:0097.08%
Oct 16 03:0097.03%
Oct 16 04:0097.11%
Oct 16 05:0096.83%
Oct 16 06:0096.93%
Oct 16 07:0096.4%
Oct 16 08:0094.6%
Oct 16 09:0096.3%
Oct 16 10:0096.53%
Oct 16 11:0096.54%
Oct 16 12:0096.38%
Oct 16 13:0096.34%
Oct 16 14:0096.2%
Oct 16 15:0096.73%
Oct 16 16:0096.53%
Oct 16 17:0096.25%
Oct 16 18:0096.8%
Oct 16 19:0096.76%
Oct 16 20:0096.52%
Oct 16 21:0096.68%
Oct 16 22:0096.32%
Oct 16 23:0096.68%

Installation

  1. 1

    Set up the registry once

    Your token in .env and @chartory in components.json. Skip this when another chart is already installed.

    Installation guide
  2. 2

    Add the chart

    One command adds the Threshold what-if component to your project.

    npx shadcn add @chartory/threshold-what-if
  3. 3

    Use it

    Pass your rows. The props are the Figma properties.

    usage.tsx
    import { ThresholdWhatIf }  from "@/components/chartory/threshold-what-if"<ThresholdWhatIf  data={hourlySuccess}  size="m"  legend/>

Props

<ThresholdWhatIf>

Every prop but data is a Figma property with the same name and values.

PropTypeDefault
data: The chart's data. The tables below list every field.ThresholdWhatIfDataRequired
size: The size class. Each one is laid out again from the data."xs" | "s" | "m" | "l""m"
legend: Shows the legend row under the plot.booleantrue

ThresholdWhatIfData

The data prop: one object for the whole chart.

PropTypeDefault
vals: The values, in order.number[]Required
min: The bottom of the value scale.numberRequired
max: The top of the value scale.numberRequired
now: Now: where it is and its label.ThresholdWhatIfNowRequired
prop: The proposed value and its label.ThresholdWhatIfPropRequired
ticks: The axis ticks: [value, label] pairs.[number, string][]Required
xl: The x axis labels: [position, label] pairs.[number, string][]Required

ThresholdWhatIfNow

The now object.

PropTypeDefault
v: The value.numberRequired
text: The label as shown.stringRequired
lane: The lane it sits in.stringRequired

ThresholdWhatIfProp

The prop object.

PropTypeDefault
v: The value.numberRequired
text: The label as shown.stringRequired
lane: The lane it sits in.stringRequired

The data as a JSON Schema: schemas/threshold-what-if.json

Threshold what-if chart: a React and Figma chart in four sizes

What does a threshold what-if chart show?

A threshold what-if chart replays a measure against the current alert threshold and a proposed one, and counts the alerts each would have fired. You see the trade-off before you change the rule. Use it for alert tuning and SLO reviews.

Chartory ships it as a Figma component and a React component with the same name. The code installs from the shadcn registry with one command and lands in your project as a file you own.

What is the Threshold what-if component?

It is one <ThresholdWhatIf> component. Its props are the Figma properties with the same names and values, and the props table above lists them. The data is a measure over time, two thresholds.

Sizes XS, S, M and L re-lay the chart out from the data instead of scaling it, so labels stay readable at every size.

When should I use it?

  • Are two thresholds compared? Yes means the threshold what-if fits.
  • Is the alert count the point? Yes means the threshold what-if fits.
  • Is it over time? Yes means the threshold what-if fits.

When does another type fit better?

  • One target to hold. Use Target trend instead.
  • The full range of thresholds. Use Threshold sweep instead.
  • One value per item. Use Horizontal bars instead.

Threshold what-if questions

Installing, data, Figma and plans.

  • Yes. It installs through the shadcn registry with the shadcn CLI, and the file lands in your project.

Stay in the loop

New charts, by email.

Get an email when new chart types and releases ship.

Unsubscribe any time.