Chevron DownOverview

Whats New


Initial release.


  • Encoders are constructed right before rendering starts, instead of only when a scene is defined. #1
  • DeckAdapter.render now accepts a onStop callback.
  • Remove stop and dispose from FrameEncoders #3
  • Allow PNGEncoder transparent frames #4
  • Refactor encoder settings and scene settings api #8
    • scene settings are defined at scene load time, so you can set scene resolution and animation length there.
    • encoder settings are defined before every render, so you can set seek options there.
    • format-specific encoder settings are namespaced by encoder (jpeg settings are under jpeg, etc..).
  • Gif Encoder #7



  • Automatic animation attachment, see example.
  • DeckScene
    • Added initialKeyframes parameter on DeckScene. Initializes keyframes prior to first render.
    • Provide dynamic keyframes via DeckAdapter.render({getCameraKeyframes, getKeyframes}) accessors.
      • DeckScene.setKeyframes may also be used to register new keyframes.
  • DeckAdapter
    • added to enable previewing any specific frame while paused.
    • DeckAdapter glContext parameter added to support browser testing.
    • DeckAdapter.getProps({extraProps}) added to inject additional deck props without interfering with Hubble.
    • DeckAdapter.getProps({getLayers}) added for when it’s necessary to access keyframes for animated layers.
      • getLayers: (scene) => layers[]
  • CameraKeyframes now supports flyTo interpolation.
    • new CameraKeyframes({interpolators: 'flyTo'})
  • GifEncoder defaults tuned to increase quality and reduce size.


  • Kepler UI component injection hooks and providers. This enables 3rd party libraries integrated with to inject components provided by Kepler without circularly depending on Kepler.



  • Removed DeckScene construcor parameters:
    • data removed. Instead users should manage their data loading on their own.
    • lengthMs removed. Instead provide timecode parameter to DeckAdapter.render.
    • currentCamera removed. Instead manage viewState externally and set camera keyframes with DeckScene.setCameraKeyframes.
    • animationLoop removed. Instead provide a timeline.
    • renderLayers removed. Instead either directly supply deckgl with layers, or provide a getLayers accessor, DeckAdapter.getProps({getLayers}), when it’s necessary to access keyframes for animated layers.
    • keyframes removed. Instead they can be initialized with initialKeyframes parameter and updated with setKeyframes, and setCameraKeyframes methods.
  • Encoder base class removed. Use FrameEncoder instead.
  • DeckAdapter.preview removed. Use DeckAdapter.render({Encoder: PreviewEncoder}) instead.


  • DeckAdapter.render, DeckAdapter.getProps, and DeckScene constructor expect object wrapped parameters now.
  • DeckAdapter.render({encoderSettings}) is now split up into three objects:
    • formatConfigs, to config settings for specific formats (I.e. jpeg quality)
    • timecode, to specify render start and end times as well as framerate.
    • filename, to specify the file name when rendering to a downloaded file.


  • Frame definition pattern in frame.js should no longer be used. Will be removed in next release.
  • Keyframes.setActiveKeyframes is now private Keyframes._setActiveKeyframes, and should not be used.


This release introduces a new decoupled animation manager, and refactors Please review API reference and examples before upgrading.


  • #113 encoders - gif options can be read-only
  • #147 kepler - fixed rendering while preview exception
  • #163 kepler - blank layer when no deck layers
  • #177 kepler - match 3d perspective in video export
  • #95 worldview - odd dimensions cause encoder issues


  • #98 Add seek method to DeckAdapter.
  • #125 Added new Keyframe classes.
    • Keyframes.set to update keyframe values without reconstructing and re-attaching to timeline.
    • DeckLayerKeyframes
    • KeplerLayerKeyframes
    • KeplerFilterKeyframes
    • KeplerTripKeyframes
  • #127 Added Animation to manage keyframes and drawing a frame.
    • DeckAnimation
    • KeplerAnimation
  • #130 Added AnimationManager to replace DeckScene
    • Manages a Timeline and attaching animations.


  • #130 useDeckAdapter hook for better react integration.
  • Numerous improvements to support.
    • #144 UI Modal Refinements. Thank you @RaymondDashWu!
    • #146 support filter animate by interval keyframes
    • #182 default filename prop
    • #183 stop button and disable settings when previewing or rendering


  • #161 DeckAdapter now waits for async layers to finish loading before rendering a frame.
    • Check out the terrain example to see this in action!
  • DeckAdapter has breaking changes for existing applications.
  • #106 renamed encoderSettings to formatConfigs
  • #175 renamed dimension to resolution


  • Removed DeskScene (replaced by AnimationManager and Animation classes).
  • Removed Keyframe classes.
    • LayerKeyframes (replaced by DeckLayerKeyframes)
    • FilterValueKeyframes
    • GridLayerKeyframes
    • ScatterPlotLayerKeyframes