Page Summary
-
This page lists release notes for the Earth Engine JavaScript client library, detailing new features, bug fixes, and performance improvements.
-
Recent updates include adding the Google Drive OAuth scope, fixing data listing bugs, and migrating the authorization workflow to Google Identity Services.
-
Notable changes include new methods for exporting and loading classifiers, deprecating
getMap()in favor ofgetMapId(), and improvements to error handling for operations and task status. -
The client libraries have been upgraded to use the
v1Earth Engine API, requiring minor code adjustments for some methods. -
Various enhancements have been made to exports, error reporting, authentication, and support for different data types and parameters.
Subscribe
to these release notes.
April 22, 2025
Added the Google Drive main OAuth scope, https://www.googleapis.com/auth/drive, to the default list of scopes to use for authorization. The Google Drive scope is currently not required, but in the future it will have to be requested explicitly for Earth Engine requests that interact with Google Drive.
April 03, 2024
Fixed a bug in ee.data.listAssets() and ee.data.listImages() that caused
only a single page of results (up to 1000 entries) to be returned. This now
matches the Python implementation, which returns all results by default. To
return a single page in either client, specify a pageSize value. The
documentation in both the JavaScript and Python clients has been updated to
reflect this behavior.
January 31, 2024
Migrated the authorization workflow in the JavaScript library from the Google API Client Library for JavaScript to Google Identity Services.
December 08, 2023
Added getMapId() to ee.Image, ee.ImageCollection,
ee.Feature, and ee.FeatureCollection to match the Python client. Marked
getMap() as deprecated.
Added Export.classifier.toAsset and ee.Classifier.load for exporting and
loading saved ee.Classifier.smileCart and
ee.Classifier.smileRandomForest classifiers. The exported classifiers will
be visible and managed just like existing Earth Engine assets. More details
are available at our
supervised classification
and our
export reference page.
September 14, 2023
Fixed ee.data.getOperation() and ee.data.getTaskStatus() error handling.
Operations that complete with an error are now returned as Operation objects
that include error details, instead of throwing an exception.
September 07, 2023
Added documentation to ee.data.newTaskId() and ee.data.startProcessing()
to clarify unsubmitted versus submitted task IDs, and fixed
ee.batch.ExportTask.start() to return the submitted task ID.
July 27, 2023
Upgraded the client libraries to use the v1 Earth Engine API. No changes required except for the following case:
- In the Python client, for the
ee.data.getAsset()method, thetitleanddescriptionfields are only accessible from the asset properties in the v1 API. Modify your code to referencemy_asset['properties']['title']andmy_asset['properties']['description'].
May 03, 2023
Added support for the no_data field for GeoTIFF exports in both the Python
and JavaScript client libraries.
April 14, 2023
Removed support for dots (.) in workload tags, which will now throw an error.
September 28, 2022
Upgraded the client libraries to use the Earth Engine v1 API parameters
instead of v1alpha only parameters, in preparation for a future migration
to the v1 API.
Refactored ee.data.getList() and ee.data.listImages() to call through to
ee.data.listAssets() exclusively.
August 12, 2021
Improved error reporting for the case where the arguments of a function passed to map() or iterate() are used in client-side operations that don't contribute to the function return value. Since the function is executed server-side, it may not have client-side effects. See the debugging guide for more details.
April 29, 2021
Added support for maxVertices parameter for table exports.
April 22, 2021
Added a mechanism for overriding the default OAuth2 scopes requested in
ee.data.authenticateViaOauth() and ee.data.authenticateViaPrivateKey().
This can be used for requesting the
https://www.googleapis.com/auth/earthengine.readonly scope, rather than
the https://www.googleapis.com/auth/earthengine scope requested by
default.
March 25, 2021
Patched ee.data.setAssetProperties() to prevent
cases when setting system properties to null or zero causes unintentional
property deletion.
January 20, 2021
.evaluate() and other JavaScript functions that take callbacks will now
report exceptions that occurred within callback functions to the console (or
to the top level environment in Node.js). If your code has such an exception
you can handle or suppress it with catch in the callback.
November 19, 2020
Removed ee.data.getCloudApiEnabled and ee.data.setCloudApiEnabled
from the JavaScript client library.
October 29, 2020
Fixes image export parsing of parameter skipEmptyTiles, which may have
caused skipEmptyTiles to be ignored.
October 15, 2020
Added file format validation and normalization to the ee.batch.Export
methods on the JS client. Synonyms for file formats (e.g. "JPG" and "JPEG")
are supported.
September 25, 2020
Added an ee.data.TaskStatus field for the number of times a task was
attempted. This matches the value now shown in the Code Editor.
August 21, 2020
Changed the object serialization format, so that x.serialize() returns an
updated format (which is already used in server requests). ee.Deserializer
supports both the new format and the old format. These changes apply to all
JavaScript and Python APIs. If you have code which serializes and
deserializes objects, we recommend that you either upgrade all parts of your
system at once, or proceed in stages by updating the deserialization code
first.
March 06, 2020
- ee.Image.getDownloadURL is fully supported in Cloud API mode.
- Band-level parameters take precedence over top-level parameters when specified.
- Band parameters are ignored for multiband GeoTIFFs.
imageparameter may not be serialized, use anee.Imagedirectly.- Limits on total image size.
ee.data.getTileUrlsupports theurlFormatparameter supplied in the map ID.
November 22, 2019
Turned on Cloud API support by default for the JavaScript client library. Developers with registered service accounts will need to enable the API.
October 23, 2019
- Improved the documentation for
ee.Filter.not(). - Fixed the bug with
clipToBoundsAndScale(). When clipping to bounds without thescaleparameter, the resulting image lost the native scale.
August 30, 2019
Refactored networking routines into apiclient.js.
November 09, 2018
Ensure JS client library can resolve export regions.
September 28, 2018
Added and updated several UI API examples.
June 12, 2017
Added support for uploading shapefiles.
March 02, 2017
Added a Global Surface Water dataset tutorial to the examples.
Added a skipEmptyTiles option to Export.image.toDrive() and Export.image.toCloudStorage() to skip generating empty (i.e. fully-masked) image tiles.
November 29, 2016
Fixed a typo in the "Airstrip Thumbnails" example script.
October 27, 2016
- Added optional
shardSizeandfileDimensionsarguments toExport.image.toDrive()andExport.image.toCloudStorage(), to specify the computation shard size and the output file dimensions for multi-file image exports. - Added an optional
skipEmptyTilesargument toExport.map.toCloudStorage()to skip writing empty (fully-transparent) tiles.
September 29, 2016
Added ee.layers.ImageOverlay and ee.layers.BinaryOverlay to replace the now-deprecated ee.MapLayerOverlay and ee.FloatTileOverlay.
September 22, 2016
Added ee.layers.ImageOverlay and deprecated ee.MapLayerOverlay.
July 28, 2016
Fixed an issue which caused the minified version Earth Engine JavaScript API to be excluded from the open-source release.
June 02, 2016
Added computedObject.evaluate().
May 18, 2016
Expanded Export functionality to support maps as an export type and Google Cloud Storage as a destination.
February 18, 2016
Added throttling of asynchronous network requests.
January 21, 2016
Disable exporting to GME.
August 07, 2015
Switched to new read & write scope ('https://www.googleapis.com/auth/earthengine' instead of 'https://www.googleapis.com/auth/earthengine.readonly')
August 01, 2015
Changed ee.Image([]) to create an Image with no bands.
June 26, 2015
- Fixed error that occurred when auth token refresh is attempted while the browser is offline.
- Added demos directory and move AppEngine demos to it.
- Added "Powered by Earth Engine" images.
June 19, 2015
- Added
ee.data.setAuthToken()andee.data.getAuthToken() - Fixed the default API URL in
ee.data - Fixed
ee.reset()so it no longer clears auth info. - Added tile event callback registration methods to
ee.MapLayerOverlay. - Added
ee.Image.rename()to make it easy to rename bands. - Updated App Engine app examples.
- Fixed
ee.Geometry.Rectanglewhen given a custom projection or geodesic state.
June 04, 2015
- Allowed
ee.MapLayerOverlaysto be named. - Added an
opt_dropNullsargument toCollection.map().
May 30, 2015
Undeprecated ee.data.getInfo().
May 15, 2015
Renamed getThumbURL()'s 'size' param to 'dimensions'.
May 08, 2015
ee.ImageCollection() now accepts ee.List arguments.
April 30, 2015
Added support for exporting videos.
April 10, 2015
Fixed ee.Geometry.Multi*() constructors to accept empty lists.
April 03, 2015
Added error handling improvements.
March 06, 2015
Fixed bug with region parameter in getThumbURL().
February 28, 2015
Added an optional callback parameter to ee.Image.getThumbUrl().
February 20, 2015
Fixed keyword argument handling in ee.Algorithms.* functions.
February 10, 2015
Added ee.data.authenticate() which allows authenticating API requests directly in the browser.
January 15, 2015
Image.parseExpression()is no longer available for general use.Image.expression should be used instead, and the documentation for accessing bands in expressions has been moved there.- Added support for computed geometries to
Geometry.type(), but now returns a computed string rather than a concrete one. - Fixed the incorrect winding order of polygons generated by
Image.reduceToVectors(). - Grouped Terrain algorithms into
ee.Terrain.
December 04, 2014
Image.expression()allows expressions that do not refer to all the supplied input images.Image.parseExpression()allows you to explicitly specify the expected input image names.
July 18, 2014
Fixed casting of numbers when calling the ee.String constructor.
June 20, 2014
Allowed empty args list for Image.select().
May 01, 2014
Improved error reporting for CSV downloads.
April 24, 2014
- Stopped assuming keyword args when a function's first arg is a dictionary.
- Improved consistency in type casting of different classes.
- Fixed
Element variable promotion. - Started allowing ComputedObjects in
Image.select()override wrapper.
- Rename
ComputedObject.cast()tocastInternal()to avoid conflict with the upcomingImage.cast()andImageCollection.cast().
April 07, 2014
Bugfixes for MapProjection.
March 28, 2014
Improved automatic type casting logic and error messages.
March 10, 2014
Added filename argument for feature collection CSV download.
February 18, 2014
- Changed the missing end bound in the
DateRangeconstructor to mean start bound + 1ms, not infinity. - Started to consistently interpret
DateRangeupper bounds as exclusive.
February 13, 2014
Added an ee.Projection class to represent map projections.
February 06, 2014
- Fixed inconsistent promotion logic for ee.Date parameters.
- Fixed initialization failure when both synchronous and asynchronous paths are used.
December 20, 2013
Added ee.Element, a base class for ee.Image and ee.Feature.
November 19, 2013
- Added several examples for usage of new variable-size kernels.
- Added an example for usage of the updated
ReduceRegionalgorithm. - Added an example for usage of a Mode reducer with a kernel given in meters.
- Changed all reducer examples to match the Web API's switch to new reducers.
- Improved documentation of the
ee.data.send_()method. - Fixed client issues arising from the usage from a Caja JavaScript sandbox.
October 14, 2013
- Added an
ee.Numberclass. - Added
ee.Geometry.type(). - Added
ee.ImageCollection.select(), equivalent to mappingImage.select()over a collection. - Removed
ee.Collection.map_*()functions. Useee.Collection.map(someJavaScriptFunction). - Fixed
ee.Image.set()andee.Feature.set()to stop requiring {'properties': ...} wrapping.
September 30, 2013
- Added support for automatically casting numbers to dates (interpreted as Unix timestamps).
- Added
ee.Deserializer, which can decode the output ofee.Serializer. - Improved
ee.initialize()to allow multiple asynchronous initialization calls followed by a synchronous call. - Fixed handling of GeoJSON CRS specification in
ee.Geometry. - Fixed accidental aggregation cache breaking in
Collection.map(). - Fixed the example scripts to explicitly specify date timezones, rather than use the client's local timezone.
September 19, 2013
Changed API functions to support keyword arguments - if a single, class-less JavaScript Object is passed to an API function, its keys are interpreted as keyword arguments.
September 13, 2013
Fixed a regression introduced in the previous update that could cause incorrect serialization.
September 06, 2013
Optimized the performance of queries that involve repeated sub-queries.
August 30, 2013
- Added a
Stringclass to represent computations that return string values. - Fixed
Geometrymethods not being present on computed geometries.
July 24, 2013
Improved error messages returned when a request times out.
- Added support for calling unbound algorithms using
ee.Algorithms.algorithmName(...). - Added support for passing key data in addition to key filenames to
ee.ServiceAccountCredentials().
July 03, 2013
Added support for the geodesic field in GeoJSON to differentiate geodesic and projected lines.
June 05, 2013
Added an ee.Kernel class.
May 15, 2013
- Added
ee.Image.getThumbURL(). - Added
ee.Filter.inList(), a convenience foree.Filter.listContains(). - Changed
ee.Image.getDownloadURL()to generate full rather than relative URLs. - Changed
ee.Geometry.Point()to accept (x, y) arrays. - Changed the
ee.Image constructorto allow calling with no arguments, returning the equivalent ofee.Image(0).mask(0). - Deprecated
ee.Collection.map_*()functions. Useee.Collection.map(someJavaScriptFunction). - Fixed type promotion of nulls and zeroes.
April 25, 2013
- Added a new class,
ee.Geometry, that represents GeoJSON geometries. - Moved
Filterfunctions ontoee.Filteras static methods.Switched to a new, better optimized wire encoding of queries.
Collection.aggregate_*() functions no longer perform automatic server fetches. Users will need to call getInfo() on the result manually.
The result of the toString() function of EE objects can no longer be passed to eval() to recreate the object.
EE objects can no longer be initialized by providing JSON blocks (except GeoJSON). All of these can be converted to the new format using ee.call() and ee.apply().
March 14, 2013
Deprecated specifying API objects using custom JSON (e.g. specifying error margins using {type: 'ErrorMargin', value: 5}). Support will be removed in the next library update.
February 13, 2013
Fixed the Feature constructor to accept null geometries.
February 06, 2013
Removed ImageCollection.combine_(), an internal method used to implement ImageCollection.mosaic().
January 31, 2013
Removed ImageCollection.mosaic_(), an internal method used to implement ImageCollection.mosaic().
Fixed ImageCollection.reduce() so it can be called as an instance method.
Fixed listing of static methods in the playground docs.
Added support for calling static API methods using the ClassName.methodName() syntax.
Fixed serialization of Collections with multiple filters.
Fixed listing of static methods in the playground docs.
Added support for fetching algorithm results using getInfo() for algorithms that return numbers, tables, and other non-geo objects. This may break scripts that relied on manually editing JSON produced by these algorithms and submitting it to ee.data.getValue().
January 24, 2013
Changed Feature constructors to allow specifying algorithm calls as geometry or properties.