website/versioned_docs/version-5.1/migrations/from-v4-to-v5.md
In this document you can find the migration guide from the previous version v4 to v5.
addSeries functionReplace all series creation calls with the new addSeries syntax. Here's how the migration works for each series type:
// Example with Line Series in v4
import { createChart } from 'lightweight-charts';
const chart = createChart(container, {});
const lineSeries = chart.addLineSeries({ color: 'red' });
// Example with Line Series in v5
import { createChart, LineSeries } from 'lightweight-charts';
const chart = createChart(container, {});
const lineSeries = chart.addSeries(LineSeries, { color: 'red' });
Here's how to migrate each series type:
| v4 Method | v5 Method |
|---|---|
chart.addLineSeries(options) | chart.addSeries(LineSeries, options) |
chart.addAreaSeries(options) | chart.addSeries(AreaSeries, options) |
chart.addBarSeries(options) | chart.addSeries(BarSeries, options) |
chart.addBaselineSeries(options) | chart.addSeries(BaselineSeries, options) |
chart.addCandlestickSeries(options) | chart.addSeries(CandlestickSeries, options) |
chart.addHistogramSeries(options) | chart.addSeries(HistogramSeries, options) |
ESM (ES Modules):
import { createChart, LineSeries } from 'lightweight-charts';
const chart = createChart(container, {});
const lineSeries = chart.addSeries(LineSeries, { color: 'red' });
UMD (Universal Module Definition):
const chart = LightweightCharts.createChart(container, {});
const lineSeries = chart.addSeries(LightweightCharts.LineSeries, { color: 'red' });
Note: Make sure to import the specific series type (e.g., LineSeries, AreaSeries) along with createChart when using ES Modules. For UMD builds, all series types are available under the LightweightCharts namespace.
createSeriesMarkers function required// Markers were directly managed through the series instance
series.setMarkers([
{
time: '2019-04-09',
position: 'aboveBar',
color: 'black',
shape: 'arrowDown',
},
]);
// Getting markers
const markers = series.markers();
// Import the markers primitive
import { createSeriesMarkers } from 'lightweight-charts';
// Create a markers primitive instance
const seriesMarkers = createSeriesMarkers(series, [
{
time: '2019-04-09',
position: 'aboveBar',
color: 'black',
shape: 'arrowDown',
},
]);
// Getting markers
const markers = seriesMarkers.markers();
// Updating markers
seriesMarkers.setMarkers([/* new markers */]);
// Remove all markers
seriesMarkers.setMarkers([]);
createSeriesMarkers separatelycreateSeriesMarkersIf your application doesn't use markers, you can now benefit from a smaller bundle size as this functionality is no longer included in the core package.
In the new version of Lightweight Charts, the watermark feature has undergone significant changes:
createImageWatermark plugin.const chart = createChart(container, {
watermark: {
text: 'Watermark Text',
color: 'rgba(255,0,0,0.5)',
},
});
import { createChart, createTextWatermark } from 'lightweight-charts';
const chart = createChart(container, options);
const firstPane = chart.panes()[0];
createTextWatermark(firstPane, {
horzAlign: 'center',
vertAlign: 'center',
lines: [{
text: 'Watermark Text',
color: 'rgba(255,0,0,0.5)',
fontSize: 50,
}],
});
The TextWatermark plugin is now available as follows:
createTextWatermark directly.LightweightCharts.createTextWatermark.The options structure for watermarks has been revised:
lines property of the options object.To use the plugin, you need pass a pane object to the createTextWatermark function. The pane object specifies where the watermark should be attached:
chart.panes()[0].Here's a comprehensive example demonstrating how to implement a text watermark in the new version:
const chart = createChart(container, options);
const mainSeries = chart.addSeries(LineSeries);
mainSeries.setData(generateData());
const firstPane = chart.panes()[0];
createTextWatermark(firstPane, {
horzAlign: 'center',
vertAlign: 'center',
lines: [
{
text: 'Hello',
color: 'rgba(255,0,0,0.5)',
fontSize: 100,
fontStyle: 'bold',
},
{
text: 'This is a text watermark',
color: 'rgba(0,0,255,0.5)',
fontSize: 50,
fontStyle: 'italic',
fontFamily: 'monospace',
},
],
});
Some of the plugin types and interfaces have been renamed due to the additional of Pane Primitives.
ISeriesPrimitivePaneView → IPrimitivePaneViewISeriesPrimitivePaneRenderer → IPrimitivePaneRendererSeriesPrimitivePaneViewZOrder → PrimitivePaneViewZOrder