Repository navigation
v1.0.0
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 doctorchecks 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,--strictfails on warnings too, and a check it could not run always fails.--backend/--distpoint it at a setup with nofirebase.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 <= reservelet 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.
enginesalready required Node 22, so nothing changes for a supported install; CI now runs Node 22 and 24, the current LTS. @google-cloud/storageis 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 bynpm 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.tsunchanged; a consumer on TypeScript 5.9, or resolving withnode16orbundler, 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, anderrorReserve(a share) →reservedForErrors(a count), because the limit now recharges one log at a time rather than lasting a session; typeClientLogRequest→LogRequest;triggerTestLog()→sendTestLog(); the CLI flagfsl 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.