v2.0.0
We have put a ton of work into modernizing the JavaScript client to take advantage of the latest JavaScript features. When we first started writing the JavaScript client we could only target ES3. A lot has changed since then, so we wanted update the client to embrace the future while removing blocking issues that was preventing us from supporting newer technologies such as react native.
New Features
- Source map support for browsers (
@exceptionless/browser
npm package) ! - ECMAScript Modules (ESM) Support. This allows for smaller package sizes via tree shaking and increased support for new environments (e.g., React). This also allowed us to remove side effects and singletons from our codebase that can make it harder to create customized clients.
- Simplified client startup for ease of use and removed configuration (
useSessions()
,useReferenceIds()
) that could be inferred at runtime. - Fully async idiomatic API. We got rid of callbacks and drastically simplified the codebase. This will make it much easier to consume from modern applications.
- We rewrote our storage and submission implementations to be compatible across many different runtimes by closely aligning with the fetch and local storage APIs.
- React support via the
@exceptionless/react
npm package. We've included an example application showing how easy it is to configure. - Vue support via the
@exceptionless/vue
npm package. We've included an example application showing how easy it is to configure.
Development Improvements
- We've spent quite a bit of time improving the development tool chain to use npm 7 workspaces. This will improve over time but really cuts down on global tooling to work with the client.
- We added recommended linting rules and enabled TypeScript strict mode. This will reduce the chances of bugs getting into the code base while following best practices.
- Every commit is now actively tested against multiple operating systems.
Breaking changes
- Packages are now only hosted on npm (packages will no longer be pushed to bower) and are also available on the GitHub Registry.
- The
exceptionless
npm package has been deprecated. We recommend upgrading to the@exceptionless/browser
or@exceptionless/node
packages respectively. - All packages now exclusively target ECMAScript Modules (ESM). This allows for smaller package sizes via tree shaking and increased support for new environments (e.g., React). This may also mean you will need to be using Node 15+ which supports ESM.
- Please see the documentation for configuring the client as script imports and client initialization code has changed.
- The client configuration object has been simplified a bit.
- We've moved services (
lastReferenceIdManager
,log
,storage
,queue
,submissionClient
) into aservices
property and removed services (environmentInfoCollector
,errorParser
,moduleCollector
,requestInfoCollector
) that made more sense as a plugin or were no longer needed. - The following items have been removed:
submissionAdapter
,submissionClient
,useSessions()
,useReferenceIds()
,defaults
. The client will automatically handle sessions and reference ids based on usage.
- We've moved services (
- We removed the
addRequestInfo
fluent EventBuilder API function. This was platform specific to node and didn't make sense in most cases. We replaced it withsetContextProperty(key, value)
which can be used to set data on the EventBuilder context to be consumed in a plugin. If you were usingaddRequestInfo(req)
you should now callsetContextProperty(KnownEventDataKeys.RequestInfo, req)
Please take a look at the change log for a full list of the changes.
Feedback
We're listening and we'd love to hear your feedback! Please send us your feedback by clicking on one of the links below!