Version 32.0.0
Welcome to Version 32.0.0.
This release introduces worker-based chart processing for improved performance, migrates core widget methods to a Promise-based API, extends countdown support to daily, weekly, and monthly bars, and includes updates to drawing tool names and availability. Let's dive into the highlights.
Breaking changes
Updated drawing tool names
Drawing tool names have been updated throughout the UI for consistency. If you use either of the following options, update the name strings you pass in:
custom_translate_function— theoriginalTextargument now reflects the new names (for example,"Trendline"instead of"Trend Line").drawings_access— thenameproperty in thetoolsarray must use the new names (for example,"Trendline"instead of"Trend Line").
Updated return values for dataReady, setChartType, and saveChartToServer
Calling these methods without a callback now returns a Promise instead of the previous value:
dataReady()onIChartWidgetApinow returnsPromise<boolean>instead of a synchronous boolean. Update any synchronous readiness checks accordingly.setChartType(type)now returnsPromise<void>and rejects with anErrorif the chart type change cannot load data.saveChartToServer()now returnsPromise<void>and rejects with aSaveChartError(exported asTradingView.SaveChartError) on failure — handle the returned promise to avoid unhandled rejections.
Existing calls that pass callbacks retain their previous behavior.
Key updates
Worker-based chart processing
Indicator calculations and other internal chart workloads can now run off the main thread.
Enable the new workers option in the widget constructor to let the library attempt to start a dedicated worker thread.
If the worker cannot be started, the library automatically falls back to the main-thread implementation.
const widget = new TradingView.widget({
container: 'tv_chart_container',
workers: { enabled: true },
library_path: 'charting_library/',
datafeed: myDatafeed,
/* Other widget constructor options */
});
Promise-based widget API
The remaining callback-based methods on IChartingLibraryWidget and IChartWidgetApi now have Promise-based counterparts:
chartReadysavegetSavedChartssaveChartToServerremoveChartFromServershowNoticeDialogshowConfirmDialogdataReadysetChartType
The callback overloads remain for backward compatibility and emit a one-time deprecation warning on first use.
widget.setSymbol() is also deprecated in favour of widget.activeChart().setSymbol().
These methods will be removed in a future major release — migrate to the Promise-based API to avoid breakage when that happens.
Countdown for daily, weekly, and monthly bars
The bar close countdown was previously limited to intraday resolutions.
It now also works for daily, weekly, and monthly bars.
Set the mainSeriesProperties.showCountdown chart override to true to display the countdown on the price scale.
As before, implementing getServerTime in your datafeed ensures accurate countdown values.
Unpaired exit levels
For Trading Platform integrations using supportMultipleExitLevels, the new supportUnpairedExitLevels flag allows each exit level to contain only one side — either a take-profit or a stop-loss — instead of requiring both.
See Multiple exit levels for details.
Documentation
Implement Datafeed tutorial
The Implement Datafeed tutorial has been rewritten to use the Binance REST API, replacing the CryptoCompare integration. The tutorial now extends into a dedicated Extend to Trading Platform section that shows how to add quote-based features on top of a working datafeed: real-time quotes, the DOM widget, news, alerts, and save/load integration.
Margin meter
The margin meter lets traders see how close their current exposure is to the available margin limit, giving them a real-time signal before placing or adjusting orders. A new Enable margin meter section in the Order Ticket article explains what the margin meter displays and walks through the full integration.
Conclusion
This release also includes important bug fixes: timescale marks now render correctly on slow network connections, Risk/Reward drawings work properly with custom price formatters, and repeated no-data requests for monthly resolutions have been resolved. For the full list of updates, improvements, and fixes, see the Release notes.