My employer is moving off Tableau due to a licensing change they are either being forced into or just letting themselves be pushed into, which raises costs significantly. The conversation came up about migrating our internal dashboards to a Next.js app, so I did a deep dive into existing charting frameworks. Everything missed the mark. Highcharts had the charts we needed (or we could make them work) but lackluster grid options. AG Grid had the grid we needed, but was missing specific chart types.
To get closest to what I wanted, I’d have to buy two different expensive enterprise frameworks, mix their ecosystems, carry the overhead of both, and hack in customizations just to hit a moving target. It felt wrong. I suggested we just build one in-house to avoid vendor lock-in, dodge the unintended consequences of upstream changes, and maintain control over what features get added. They kept kicking the can down the road, and eventually I was told no—they wanted something "out of the box."
I’ve grown tired of watching companies (including my employer) pay massive amounts of money for software that sounds good during a sales pitch or on paper, but has serious deficiencies, bugs, or performance issues that vendors seem reluctant to fix. Vendors with a good product charge a massive premium, and employers not willing to pay that premium end up buying trash that’s still expensive. In the end, it falls on the devs to put lipstick on a pig and act like they are happy about it.
So I bootstrapped it myself.
Today I’m releasing the MIT core versions of Radiant Charts and Radiant Grid.
🛠️ Under the hood:
- Pure React, zero dependencies: I didn’t want to wrap D3 or build on top of Chart.js/Recharts and hack in non-native features. I built a custom Canvas-based scene graph entirely from scratch. Zero third-party dependencies means no unmaintained NPM packages blowing up your build down the road.
- Performance: The canvas engine handles 100k rows without freezing the browser (though obviously, end-user speed depends on client resources and data latency).
-
Bundle Size: I purposely kept the MIT core packages incredibly lightweight.
radiant-grid-coreis ~14.5kB (Bundlephobia breakdown here) andradiant-charts-coreis ~83.8kB (Bundlephobia breakdown here). The upcoming Pro versions are obviously larger because of the sheer amount of enterprise features and the massive custom engine packed into them compared to the competition. However, I am actively looking for ways to redesign them to maximize performance and aggressively reduce the file sizes as they evolve.
⚖️ The Open Core / Paid Split (No Bait-and-Switch)
I despise bait-and-switch "open source" where the free version is practically useless. But I also have a family to feed, and if I eventually hire developers, I want to treat them well and not burn them out. As a compromise, I am pricing the Pro bundles significantly lower than what you'd pay for AG Grid or Highcharts. I don't have aspirations to be the next billionaire, so I don't feel the need to rake customers over the coals to cover bloated overhead.
Here is the exact split:
🟢 The MIT Core (radiant-charts-core & radiant-grid-core):
- Charts: Includes Bar, Line, Area, Scatter (with jitter), Pie, and Donut.
- Engine: Dual Y-axis, responsive ResizeObserver containers, full animation system, custom padding/theming (with OS media query listeners), and large dataset decimation (auto-disables markers at 1k+ points).
- Grid: Auto-column detection, virtualization, sorting, filtering, and a Zustand-managed state/event bus.
🚀 The Upcoming Pro Version:
The paid version is for the heavy enterprise stuff.
- 100+ Complex Chart Types: Sankey, Candlestick, Waterfall, Heatmaps, Choropleth, etc. (Plus 3D charts on the roadmap).
- WebGL 2D Pipeline: For rendering 1M+ points when onboard graphics aren't enough.
- Dashboard Drag & Drop Designer: You can drag charts around, configure axes/data keys, and style them. It generates the exact React code for you to copy-paste directly into your app—from there, the dev just passes in the data. It's built to be intuitive enough that a UI/UX designer can build the dashboard and just hand the code over to engineering. You can use it by logging into my site (with a Pro license) OR drop it into your app as a local component for on-prem use.
- Pro Grid: Cell editors, grouping/pivoting, tree data, canvas rendering mode, Excel export, and the ability to dynamically draw columns based entirely on the dataset passed in.
🗺️ Roadmap & Philosophy
Currently, it’s React-only (Next.js, Remix, Vite). Framework adapters for Vue and Svelte are on the roadmap, but I wanted to nail the core first. Also coming soon is data-driven styling (the ability to dynamically style individual chart items or grid cells based entirely on what's passed back in your data payload).
It’s early days, but my main goal is to be incredibly flexible to feedback and additions. I want to build a tool that actually works for my customers so you never feel like you're fighting the framework.
🔗 Links:
- 🌍 Site: radiantcharts.com
- 📦 Charts Core NPM: radiant-charts-core
- 📦 Grid Core NPM: radiant-grid-core
I’d love for you to try out the MIT packages and give me some raw feedback on the API design and canvas performance. Happy to answer any questions!
Top comments (0)