Skip to content

v1.0.0

Choose a tag to compare

@damith-dasasian damith-dasasian released this 28 Sep 06:16
· 178 commits to main since this release

The API is stable. From here, a breaking change means 2.0. Before freezing it, every
public name was reviewed and eight were renamed; the old ones keep working through 1.x
with a one-time warning, so upgrading breaks nothing. New in 1.0 is fsl doctor, which
reads a setup off disk and says what will go wrong before it does. Also here: warnings
can no longer spend the error reserve, one copy of Storage whatever firebase-admin a
project has, TypeScript 6, and Node 22 and 24 tested — Node 20 reached end of life.

Added

  • fsl doctor checks the setup from disk — no network, no credentials — and prints how it will behave plus any findings, as text or --json. It reports only facts it can read from files, never guesses from source code. Errors fail with exit code 1, --strict fails on warnings too, and a check it could not run always fails. --backend/--dist point it at a setup with no firebase.json.

Fixed

  • Warnings could spend the error reserve. The log limit recharges continuously, so its count is almost never a whole number, and the reserve check available <= reserve let a warning through at, say, 1.02 with a reserve of 1 — spending the room kept for the next crash. It now asks whether spending one log would dip into the reserve. Found as a CI-only test flake: on a fast machine the calls share one millisecond and the count stays whole.

Changed

  • Node 20 is no longer tested. It reached end of life on 2026-04-30. engines already required Node 22, so nothing changes for a supported install; CI now runs Node 22 and 24, the current LTS.
  • @google-cloud/storage is accepted as ^7.19.0 || ^8.1.0 (was ^7.0.0). firebase-admin 14.5 brings Storage 8 and 13.x brings 7; with the old range a project on the newest firebase-admin installed two copies. Now npm reuses the one already there. Both majors are exercised by npm run smoke:install, which CI now runs.
  • Built with TypeScript 6 (was 5.9), with module/moduleResolution: node16. The published JavaScript is byte-identical and the .d.ts unchanged; a consumer on TypeScript 5.9, or resolving with node16 or bundler, compiles against it as before.

Deprecated

  • Eight names, renamed before the 1.0 API freeze. minLogLevel → minSeverity (the server already used it, and so does Cloud Logging); bucketName → bucket (every other bucket option already was); rateLimitOptions.sessionLimit → burstLimit, refillPerMinute → rechargeSecondsPerLog, and errorReserve (a share) → reservedForErrors (a count), because the limit now recharges one log at a time rather than lasting a session; type ClientLogRequest → LogRequest; triggerTestLog() → sendTestLog(); the CLI flag fsl upload-sourcemaps --functions → --backend. Every old name still works in 1.x with a one-time console warning, and is removed in 2.0. The README's Reference has the full table.