angular / angular/angularfire

The `ANGULARFIRE2_VERSION` build placeholder ships unreplaced in the library, and `versions.json` never reaches the compiled schematics

Open
#3,715 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
7.8k
Forks
2.2k
Avg merge
22h 28m
Merged PRs (30d)
6

Description

### Version info

**Angular:** 21.2.x **Firebase:** 12.x **AngularFire:** 21.0.0-rc.0

### How to reproduce these conditions

1. `npm pack @angular/fire@next` and inspect `fesm2022/angular-fire.mjs` — search for `ANGULARFIRE2_VERSION`.
2. Or in an app: `import { VERSION } from '@angular/fire'; console.log(VERSION.full);`

### Expected behavior

`VERSION.full` (and the underlying `Version` object in `src/core.ts`) should report the real installed version, e.g. `21.0.0-rc.0`.

### Actual behavior

`VERSION` is constructed as `new Version('ANGULARFIRE2_VERSION')` - the build-time placeholder that's supposed to be replaced with the real version before publishing, but isn't for this occurrence. The published package ships the literal string.

A related mechanism is also broken: `src/schematics/versions.json`'s `peerDependencies`/`firebaseFunctionsDependencies` data is filled in by `tools/build.ts` *after* the schematics are bundled with esbuild, which has already inlined the JSON import from the unfilled source file at compile time.
- The post-build edit to `versions.json` on disk is never read by the shipped schematic code.
- One concrete effect: `addDependencies()` in `src/schematics/common.ts` never has real version data to check against, so it can't detect or warn about conflicting dependency versions the way it appears designed to.

Will need a decision on one of these approaches:
- string-replace with a build-time guard, matching what PR #3709/#3711 just did for the schematics' own version placeholder, or
- reworking the `versions.json` inlining - the fix touches `tools/build.ts` and possibly `src/core.ts`, so I wanted to flag it and get a read before picking a direction.

Contributor guide

Open the contributing guide

Research direction

Start with src/core.ts and tools/build.ts, then inspect src/schematics/versions.json and addDependencies() in src/schematics/common.ts. Compare the build-time placeholder handling in PRs #3709 and #3711 and trace when the JSON is bundled. Done means the published VERSION reports the installed version and shipped schematics contain usable dependency version data.

Written by the indexing model from the issue text.

Assessment

Tech stack
angular, firebase, typescript
Domain
build-system, release, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.