Migration Guide - v3.2.0
November 2, 2025 · View on GitHub
What Changed?
Version 3.2.0 introduces ES module (ESM) support as the primary distribution format while maintaining backward compatibility with CommonJS and browser usage.
Breaking Changes
1. Package Distribution Format
The package now uses dual package exports with ESM as the default:
Before (v3.x):
- Single UMD bundle:
dist/chartjs-plugin-trendline.min.js - CommonJS-style package
After (v3.2.x):
- ESM build:
dist/chartjs-plugin-trendline.esm.js - CommonJS build:
dist/chartjs-plugin-trendline.cjs - UMD build (unminified):
dist/chartjs-plugin-trendline.js - UMD build (minified):
dist/chartjs-plugin-trendline.min.js
2. Import Changes
Modern Bundlers (Vite, SvelteKit, Next.js, webpack 5)
No changes needed! Your bundler will automatically use the ESM version:
import ChartJSTrendline from 'chartjs-plugin-trendline';
Node.js with CommonJS
The CommonJS build is automatically used when using require():
const ChartJSTrendline = require('chartjs-plugin-trendline');
Browser via CDN
The global export name has changed:
Before:
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-trendline@3"></script>
<!-- Plugin auto-registered with Chart.js -->
After:
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-trendline@3"></script>
<script>
// Option 1: Plugin auto-registers if Chart.js is available
// Option 2: Manual registration
Chart.register(ChartJSTrendline);
</script>
Benefits
For Modern Projects
- ✅ Better tree-shaking support
- ✅ Faster build times with Vite, SvelteKit, and modern bundlers
- ✅ Full ESM support
- ✅ Smaller bundle sizes (only import what you need)
For Legacy Projects
- ✅ Backward compatible with CommonJS
- ✅ UMD builds still available for browser
<script>tags - ✅ Works with older webpack and Node.js versions
Recommendations
New Projects
Use ESM imports with modern bundlers (Vite, SvelteKit, Next.js, Nuxt):
import ChartJSTrendline from 'chartjs-plugin-trendline';
import { Chart } from 'chart.js';
Chart.register(ChartJSTrendline);
Legacy Projects
Continue using CommonJS require():
const ChartJSTrendline = require('chartjs-plugin-trendline');
const Chart = require('chart.js');
Chart.register(ChartJSTrendline);
Browser CDN
Use the minified UMD build:
<script src="https://cdn.jsdelivr.net/npm/chart.js@4"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-trendline@3"></script>
Technical Details
Package.json Configuration
{
"type": "module",
"main": "./dist/chartjs-plugin-trendline.cjs",
"module": "./dist/chartjs-plugin-trendline.esm.js",
"exports": {
".": {
"import": "./dist/chartjs-plugin-trendline.esm.js",
"require": "./dist/chartjs-plugin-trendline.cjs"
}
}
}
This ensures:
- Modern bundlers use the ESM version
- Node.js
require()uses the CommonJS version - Maximum compatibility across environments
Questions?
If you encounter any issues during migration, please open an issue on GitHub.