Skip to content

Roadmap: stabilise on Node 18, then upgrade to Node 22+ #231

@VirtueMe

Description

@VirtueMe

Overview

This issue tracks the planned improvements for the project now that active maintainership has resumed. The strategy is two-phased around Node.js compatibility:

Phase A — Stabilise on Node 18: fix all outstanding bugs, improve test coverage, modernise tooling. Every change lands as a patch or minor release. No breaking changes.

Phase B — Upgrade to Node 22+: once Phase A is stable, drop Node 18 support (EOL March 2026) and target Node 22 as the minimum. This triggers a major version bump via `feat!:`.


Phase A — Stabilise (Node 18, non-breaking)

✅ A1 — SNS→SQS CloudFormation routing fix

✅ A2 — PR standards and release infrastructure

✅ A3 — Fix pre-existing failing tests (#190)

  • Root cause: `stop()` not awaiting server close, causing race conditions between tests
  • All 27 tests now pass on Node 18 and Node 22

✅ A4 — Migrate tslint → eslint (#196)

  • Replaced broken tslint (crashes on TypeScript 5) with ESLint 10 + typescript-eslint 8
  • Using flat config format (`eslint.config.js`)

✅ A5 — TypeScript strictness

  • Enable `strict: true` in `tsconfig.json`
  • Replace implicit `any` with proper types
  • Define proper interfaces for the Serverless instance shape

✅ A9 — Clean up README (#232)

  • Remove stale "Looking for a maintainer" line
  • Fix broken build status badge (references non-existent `build.yml`)
  • Remove dead Serverless badge (`public.serverless.com` is down)

🔲 A6 — Refactor Lambda invocation to use InvokeCommand (#210)

🔲 A7 — Support `lambda` SNS subscription protocol (#233)

🔲 A8 — Clear open PRs and community backlog

🔲 A10 — Serverless v4 explicit support (#214)

  • Update peer dependency to support Serverless v4
  • Validate hook lifecycle compatibility
  • Serverless v4 requires Node >= 18.20.3, so compatible with Phase A

Phase B — Node 22+ upgrade (breaking, new major)

Once Phase A is complete and stable:

  • Drop Node 18 (EOL) and Node 20 (Lambda EOL June 2026)
  • Set Node 22 as minimum engine requirement
  • Update CI matrix to Node 22 and 24
  • Release as a major version: `feat!: drop Node 18/20, require Node 22+`

Release strategy

  • All Phase A work lands as `fix:`, `feat:`, `docs:`, `ci:` commits → patch/minor releases
  • Phase B transition is a single `feat!:` commit → major release
  • semantic-release handles versioning automatically based on commit types

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions