DataTables 3.0.0-beta.1

DataTables CDN files for DataTables 3.0.0-beta.1. This software was originally released on 6th April, 2026.

Release notes

A major update for DataTables - zero dependencies! There aren't a large number of big new features in this release, instead the focus has been on updating DataTables core and its extensions - they are now TypeScript based with ESM internals and more use of CSS variables.

These release notes are part of a number of related documents detailing the release process for DataTables 3:

New

  • Dom and util libraries that DataTables uses internally are now available and treeshakable.
  • In an ESM context DataTables now provides Api, DataTable, Dom and util properties that can be directly imported and used as values and / or types (when using TypeScript).
  • columns().search() will now apply a search across the selected columns. This allows grouping of columns to give searching across a sub-set of the columns.
  • search.columns - The search feature can be given a column selector to define which columns it should apply to. This allows a subset of columns, while other columns can still be searched using the API (or another instance of the search feature).
  • Fixed search methods now accept a SearchOptions object, thus providing the same abilities as the regular search (e.g. extract, boundary, etc options can be specified).
  • language.ajax option. Basically the same as language.url, but provides the ability to be used as an object or as a function, matching ajax for its extended capabilities. It can therefore be used to add HTTP headers (csrf for example), or to send data as part of the language Ajax request. The function can be used to get data from alternative locations such as websockets or local storage.
  • DataTable.ajax() static method which can be used to make Ajax requests.
  • DataTable.stripHtml() now accepts a second parameter, the replacement character
  • :eq() selector for rows based on their position in the current data set
  • Expanded CSS variable support. In the default styling, pagination, inputs and cells can now all have styling defined with CSS variables. Naming convention is also now consistent.
  • SCSS variables for ordering indicators
  • DataTables is entirely Typescript based now and builds with tsc and rollup.

Removed

  • API cache methods (row().cache(), cell().cache() and column().cache() - plus their plurals). These were deprecated in v2 and scheduled for removal in v3 which is now done. They were limited and error prone, with the data they access not always guaranteed to be present. The .render() method should be used instead if you were using these methods.
  • SCSS variables for styling - replaced with CSS variables.
  • scrollXInner option. It was used to limit the scrolling width of the table in its container. Simply make the container smaller!
  • DataTable.camelToHungarian() method that was used for compatibility

Breaking changes

  • The DataTables internal properties have been entirely renamed (mostly a simple change to camelCase). If you used any of the internal settings for custom plugins or similar you will need to update them to use the new properties.
  • columns().search() used to apply the given search term to each column. It will now apply a single search to the selected columns.
  • columns().search() when used as a getter will return the search value for the selected columns (or an empty string if there is no search value applied). Previously it would return an API instance.
  • Callback function scope has changed. It used to be a jQuery instance containing the table, and have an api() function to access the API. The api() method stays exactly the same, but the scope is now a Dom object, since jQuery is not required by DataTables. This will only be an issue if you use this.{jqueryMethod}() in the callback functions, which is very rarely done.
  • formatNumber is not longer executed in the scope of the settings object. Rather it is passed in as the second parameter.
  • trigger() now returns defaultPrevented in the result set, rather than the return values, which were error prone. Only if you used trigger() and its return value will this impact you.
  • If you happen to have your own header or footer renderer (DataTable.ext.renderer.header), the second parameter passed in is no longer a jQuery object, but rather a Dom instance. You are very unlikely to have a custom renderer here!

Updated

  • Ordering icons are now generated by CSS (creating triangles with borders). This provides much more consistency between browsers, fonts and platforms. CSS variables are available to control the size, colour and opacity of the icons.
  • Improved paging button styling for consistency with Buttons
  • Tweaked the padding for the input controls for better visual consistency
  • Make order indicator icons a little smaller
  • cells() will only get the cell nodes when needed for the selector. When used with cells().every() this massively improves performance.
  • Changing the column title span to be a div to allow block level elements to be nested in it.
  • ES6 target

Fixes

  • Multi-line html elements could cause issues for column sizing
  • When page length is set to -1 (all) the paging buttons should not show any numbers when there are no records (which now matches the behaviour when page length is >=1).
  • Accessability - remove the tfoot element if it is empty
  • Don't include <template> tags in the sizing table
  • Element that contains the ordering icons should have height as it is focusable and the focus ring needs to be clearly visible

Deprecated

  • With the new language.ajax option, language.url is now deprecated. However, it is fully supported and not scheduled for removal. It can continue to safely be used, but new projects should use language.ajax as it provides the same features plus more.

Examples

  • Update chart example to use Charts.js
  • Add new jQuery specific examples showing how to use DataTables with jQuery
  • Remove jQuery version of each example and the option to switch between Vanilla JS and jQuery initialisation
  • Remove JSONP example. JSONP is not available when using DataTable.ajax(). Ideally you should switch to CORS, but if JSONP is required, use ajax as a function, to then call jQuery.ajax if you have it on your page, or make use of some other JSONP library.
  • Update to not require jQuery

Docs

  • Change name of DataTables.Settings to DataTable.Context for consistency.
  • Consistent naming for the types documentation, allowing an easier interchange with TypeScript.
  • Updating related to preferred style
  • Tidy up the auto links to preferred style
  • Correction for info.text example code

Types

  • rows().nodes() return has the nodes at the top level of the API result set
  • Improve each() signature
  • Fix register to allow arrays of names for aliases
  • Allow selector modifiers to be modified
  • Allow the Language interface to be extended
  • Improved types for DataTable.ext object
  • Correct return type for the info callback function.
  • Corrections to generic data type for returned values from methods such as orderable(), nodes() and indexes().
  • Correction to scope for the callback function in cells().every().
  • Better type return from flatten() and toArray()
  • Add context to the iterator callbacks
  • Expose the Defaults object
  • row().id() wasn't correctly types (used a plural instead)
  • DataTable.version() only requires a single parameter

Files

css

js