<p>And suddenly you're somewhere else entirely. You're reading JavaScript docs, wiring up a CDN script, serializing PHP arrays into <code>data-*</code> attributes, writing an Alpine <code>x-init</code> to boot a chart library, and adding an event listener so the thing redraws when your Livewire state changes. Your nice warm Laravel app now has a cold corner where the JavaScript lives.</p><p><strong>WireCharts exists to get rid of that cold corner.</strong></p><h2>Why we built it</h2><p>We're Wirelabs, and we ship production Laravel apps for a living. Over the years we kept rebuilding the same chart plumbing in project after project — the same glue code, the same "why won't it update?" debugging, the same awkward handoff between PHP and JavaScript.</p><p>The realization was simple: charts should feel like the rest of the TALL stack. You shouldn't have to leave Blade. You shouldn't have to think about a bridge. You should pass data from PHP and trust that the chart shows up — and stays correct when your data changes.</p><p>That's the whole philosophy. WireCharts is 30+ reactive chart types that you drop in with a single tag. No build-step gymnastics, no manual re-rendering, no JavaScript to babysit. Dark mode and Tailwind theming come along for free, because of course they should.</p><h2>How it works</h2><p>Here's the part we're quietly proud of: there's almost nothing to show, because there's almost nothing to do.</p><p>A chart is a component. You give it data. That's it.</p><pre><code class="language-blade">&lt;livewire:charts.line :series="$revenue" /&gt;
</code></pre><p>The data lives in your Livewire component, in plain PHP:</p><pre><code class="language-php">public array $revenue = [
    ['month' =&gt; 'Jan', 'value' =&gt; 1_200],
    ['month' =&gt; 'Feb', 'value' =&gt; 1_800],
    ['month' =&gt; 'Mar', 'value' =&gt; 2_400],
];
</code></pre><p>Render the view, and there's your line chart. No script tags, no <code>x-init</code>, no serialization dance.</p><h3>Reactivity that just happens</h3><p>This is where it stops feeling like a chart library and starts feeling like Livewire. Change the data, and the chart follows:</p><pre><code class="language-php">public function refresh(): void
{
    $this-&gt;revenue = Order::monthlyRevenue()-&gt;toArray();
}
</code></pre><pre><code class="language-blade">&lt;flux:button wire:click="refresh"&gt;Refresh&lt;/flux:button&gt;

&lt;livewire:charts.bars :series="$revenue" /&gt;
</code></pre><p>Click the button. The chart animates to the new numbers. You didn't write a single line of JavaScript to make that happen — WireCharts listens for the Livewire update and redraws only what changed.</p><h3>Theming you don't have to think about</h3><p>Your app already has a look. WireCharts respects it. Colors map onto your Tailwind palette, and dark mode is automatic:</p><pre><code class="language-blade">&lt;livewire:charts.area
    :series="$signups"
    color="orange"
    :height="280"
/&gt;
</code></pre><p>Toggle your app's dark mode and the chart toggles with it — grid lines, labels, fills, all of it. No second theme to maintain.</p><h3>One API, many shapes</h3><p>Need a different chart? Same data, same conventions, different component:</p><pre><code class="language-blade">{{-- Donuts for proportions --}}
&lt;livewire:charts.donut :series="$trafficSources" /&gt;

{{-- Sankey for flows --}}
&lt;livewire:charts.sankey :links="$userJourney" /&gt;

{{-- Heatmaps for density --}}
&lt;livewire:charts.heatmap :matrix="$activityByHour" /&gt;
</code></pre><p>Line, bar, area, pie, donut, radar, gauge, sankey, heatmap, and more — 30+ in total — all sharing one consistent, Livewire-native API. Learn one, and you've basically learned them all.</p><h2>The quiet payoff</h2><p>The nicest thing about WireCharts isn't any single feature. It's what <em>doesn't</em> happen anymore. No context-switching into JavaScript land. No "the chart is stale" bug reports. No glue code rotting quietly in a corner of your repo.</p><p>You stay in Blade. You stay in PHP. You stay warm.</p><p>Add a chart in the time it takes to write one tag — and get back to building the thing you actually set out to build.</p><blockquote><p><strong>Ready to try it?</strong> Browse the <a target="_blank" rel="noopener noreferrer nofollow" href="https://wirecharts.io/demos">live demos</a>, skim the <a target="_blank" rel="noopener noreferrer nofollow" href="https://wirecharts.io/docs">docs</a>, or grab a license and ship your first chart this afternoon. We think you'll like how at-home it feels.</p></blockquote>