Skip to content

RFC: Powertools for AWS (TypeScript) v2 #1714

Closed
@dreamorosi

Description

@dreamorosi

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:

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:

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

  • 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

  1. We will continue working on feature parity in parallel, but their release is not tied to this milestone.

Activity

added
triageThis item has not been triaged by a maintainer, please wait
RFCTechnical design documents related to a feature request
on Sep 26, 2023
added this to the Version 2.0 milestone on Sep 26, 2023
pinned this issue on Sep 26, 2023
added
discussingThe issue needs to be discussed, elaborated, or refined
and removed
triageThis item has not been triaged by a maintainer, please wait
on Sep 26, 2023
self-assigned this
on Sep 26, 2023
buggy

buggy commented on Sep 28, 2023

@buggy

I haven't spent nearly enough time looking at decorators but are there any compatibility issues we should be looking at? TypeScript 5.0 added support for the stage 3 proposal and my basic understanding is that this replaced the earlier experimental implemenatation.

dreamorosi

dreamorosi commented on Sep 28, 2023

@dreamorosi
ContributorAuthor

I haven't spent nearly enough time looking at decorators but are there any compatibility issues we should be looking at? TypeScript 5.0 added support for the stage 3 proposal and my basic understanding is that this replaced the earlier experimental implemenatation.

If you are already using Powertools' decorators, moving to TS 5.x while using the same compilerOptions that you were using before, namely "experimentalDecorators": true, won't require any change.

As you mentioned TS 5.x introduced a new implementation of the feature which brings changes in the decorators signature. In order to opt-in into the feature you have to remove or turn off experimentalDecorators in your configs. If you keep the setting on TypeScript will continue using the pre-5.x version/implementation.

From our side, we have evaluated moving to the new signature/implementation, however we have decided not to follow through for the time being because esbuild, which is extensively used in both CDK and SAM as well as our repo, doesn't support the new implementation.

For this reason, we have moved the project to 5.x (this is already merged in main and available in the last two releases) and kept the experimentalDecorators setting enabled. The PR where I introduced the change has a more detailed explanation of what I mentioned above: #1672 (comment)

antstanley

antstanley commented on Oct 12, 2023

@antstanley
Contributor

Any thoughts on publishing the in progress work on v2 under a beta tag on NPM? Good way to get broader feedback on the enhancements.

7 remaining items

dreamorosi

dreamorosi commented on Feb 14, 2024

@dreamorosi
ContributorAuthor

We are happy to share that we are planning on publishing v2 under the latest tag next week!

We have also created an upgrade guide that lists all the changes required to use the new version: https://docs.powertools.aws.dev/lambda/typescript/latest/upgrade/

added
confirmedThe scope is clear, ready for implementation
and removed
discussingThe issue needs to be discussed, elaborated, or refined
on Feb 21, 2024
linked a pull request that will close this issuefeat!: version 2, the ESM update #2117on Feb 21, 2024
github-actions

github-actions commented on Feb 28, 2024

@github-actions
Contributor

⚠️ COMMENT VISIBILITY WARNING ⚠️

This issue is now closed. Please be mindful that future comments are hard for our team to see.

If you need more assistance, please either tag a team member or open a new issue that references this one.

If you wish to keep having a conversation with other community members under this issue feel free to do so.

added
pending-releaseThis item has been merged and will be released soon
and removed
confirmedThe scope is clear, ready for implementation
on Feb 28, 2024
github-actions

github-actions commented on Mar 4, 2024

@github-actions
Contributor

This is now released under v2.0.0 version!

added
completedThis item is complete and has been merged/shipped
and removed
pending-releaseThis item has been merged and will be released soon
on Mar 4, 2024
moved this from Coming soon to Shipped in Powertools for AWS Lambda (TypeScript)on Mar 4, 2024
unpinned this issue on Mar 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

RFCTechnical design documents related to a feature requestcompletedThis item is complete and has been merged/shipped

Type

No type

Projects

Status

Shipped

Relationships

None yet

    Development

    Participants

    @buggy@dreamorosi@antstanley

    Issue actions

      RFC: Powertools for AWS (TypeScript) v2 · Issue #1714 · aws-powertools/powertools-lambda-typescript