Description
Is this related to an existing feature request or issue?
No response
Which Powertools for AWS Lambda (TypeScript) utility does this relate to?
Other
Summary
As already indicated in the public roadmap, in the coming months we will be releasing a new major version.
This will allow us to both introduce new features as well as quality of life improvements that might require breaking changes or otherwise special attention.
Use case
The next major release will have two goals:
- Introduce new features that require breaking changes
- Improve the three existing core utilities with practices that we have learned but haven't applied to avoid changes
The two areas that will definitely require breaking changes are:
- ES Modules support (Feature request: build as esmodule #521): adding this will require changes in the way we bundle & export modules, for this reason we will classify as breaking change even though the imports and interface might remain equivalent
- Improving Logger (Feature request: allow custom formatter to
formatAttributes
on all attributes (not only the base attributes) #1261, Feature request: Always log message even when sampling is enabled #1136, RFC: Support for external observability providers - Logging #1500, TBC): there are a series of changes that we want to make to improve Logger and make it more powerful and extensible. To do so we will have to refactor the internals of the utility which might impact some advanced users in a breaking way.
In addition to the above we are also going to take the opportunity to improve other areas of the codebase. Some of these changes might also require breaking changes. For each one of them we are committed to consider the tradeoffs and keep this issue updated as we investigate.
Proposal
All the work for this release will happen in a separate branch feat/v2
, this will allow us to publish alpha releases to the npm registry independently from the main version (1.x). This will allow customers to get early access to the new features and optionally start applying the required changes or simply give feedback on the new items.
Quick summary
Item | Issue | Status | Code change required | Notes |
---|---|---|---|---|
ES Modules support | #521 | ✅ | ||
Drop Node.js 14 support | #1686 | ✅ | ||
Tracer capture sync methods | #1204 | ❌ | no demand | |
Logger format all attributes | #1261 | ✅ | Yes | |
Logger observability providers | #1500 | ✅ | ||
Logger widen arguments types | #1777 | ❌ | more feedback needed | |
Tracer captureLambdaHandler higher order function |
#1833 | ❌ | more feedback needed | |
Logger sampling - dynamically change to debug |
#1136 | ✅ | Yes | |
Logger exotic types - support Set and Map |
#1649 | ❌ | closed in favor of #1776 | |
JMESPath functions | #1298 | 🚧 | ||
Remove createTracer & createLogger helpers |
#1721 | ✅ | Yes | |
Remove events and context samples from commons |
#1354 | ✅ | tests only | |
Support arm64 Lambda Layer |
#1374 | ✅ | ||
Isolate imports for middleware in core utilities | #1759 | ✅ | Yes | |
Revisit types & interfaces for Logger | #1729 | ✅ | Yes | |
Revisit types & interfaces for Metrics | #1731 | ✅ | Yes | |
Revisit types & interfaces for Tracer | #1730 | ✅ | Yes | |
Create upgrade guide in docs | #1983 | 🚧 | ||
Create automation for next pre-releases |
#1717 | ✅ | ||
Create automation to publish v2 docs under next |
#1718 | ✅ | ||
Experiment with tslib runtime helpers |
#1674 | ❌ | see issue for more info |
Legend for Status
column:
- ✅ Completed
- 🚧 Work in Progress
- ❌ Canceled / rescheduled to future release
- 🗓Backlog
Out of scope
The following items will not be part of this milestone:
- Correlation ID support Feature request: correlation ID's propagation #129
- New utilities (i.e. Validation, Parser, Event Handler)1
Potential challenges
Nothing is perfect and the plan laid out above is somewhat ambitious, for this reason if some unforeseen blocker comes up we might decide to reprioritize and exclude some issues from the milestone.
Dependencies and Integrations
No response
Alternative solutions
No response
Acknowledgment
- This feature request meets Powertools for AWS Lambda (TypeScript) Tenets
- Should this be considered in other Powertools for AWS Lambda languages? i.e. Python, Java, and .NET
Future readers
Please react with 👍 and your use case to help us understand customer demand.
Footnotes
-
We will continue working on feature parity in parallel, but their release is not tied to this milestone. ↩
Metadata
Metadata
Assignees
Labels
Type
Projects
Status