Skip to content

v4.0.0

Choose a tag to compare

@chrisrzhou chrisrzhou released this 17 Oct 09:57

v4.0.0 brings huge improvements to marker transition behaviors and other features!

Features and Improvements

  • Markers now update and apply transitions without resetting the globe or other markers. This creates a simple way to add/remove/update markers with intuitive visual feedback.
  • Globe avoids resetting and re-rendering when props change.
  • Globe animations are better optimized and less 'lag' is encountered.
  • Additional named exports (e.g. Globe, Tooltip) empower useful ways to work with react-globe.
  • You can now retrieve the Globe instance via the onGetGlobeInstance prop, which allows you to fully access and control the Globe class outside of the React lifecycle.
    • This also opens up powerful new ways to work with the globe (e.g. freeze and unfreeze methods).
    • Note that we still strongly recommend that you keep to React props to control behaviors of the globe.
  • Updated docs and examples.

Breaking Changes

  • lookAt prop is renamed to initialCoordinates.
  • Some exported Typescript types have changed. Address and import the relevant types accordingly. Noticeably, all *Options prop are now explicitly renamed to *OptionsProp. The former is used internally in the codebase while the *OptionsProp supports specifying optional option key/value pair in the component props.
  • The underlying defaultCameraOptions values are updated to reflect changes in dependent libraries. You might need to update these option values if custom values were previously used.
  • Tooltip behaviors have changed slightly to improve rendering performance. Tooltips are auto-disabled on non-interactable scenarios (e.g. focusing, animating).
  • globeOptions.cloudsSpeed option is removed because it was not very useful, and was overcomplicating the animation cycle. We should explore a better way to implement/customize cloud speeds in every rotation axis in the future.

Internal Changes

  • Refactor rendering logic to use Globe.ts class instead of custom React hooks.
    • While React hooks organized the code better, it created unneccessary complexity when dealing with hook dependencies.
    • This refactor decouples the React component and the ThreeJS rendering responsibilities. The React component is basically now a thin wrapper to pass props to the Globe instance and control how the Globe instance should be updated when props change.
    • The refactor was also required to better support and control marker transitions, and optimizing globe re-rendering when props change.