-
Notifications
You must be signed in to change notification settings - Fork 5
Description
Background
Following up on issue #105 (the ɵɵconditionalCreate fix) — after upgrading to 0.0.16 I
hit
the next crash immediately, which prompted me to do a full systematic audit of every
instruction
OXC can emit against the Angular 19.2 runtime exports. I wanted to share the complete
picture so
the team can address all the gaps at once rather than one crash at a time.
First of all — incredible work on this project, and the turnaround on #105 was genuinely
impressive. Thank you for being so responsive! 🙏
Methodology
- Extracted every
ɵɵ-prefixed string constant from
crates/oxc_angular_compiler/src/r3/identifiers.rs - Extracted every
ɵɵ-prefixed export from@angular/core@19.2.18/fesm2022/core.mjs - Compared the two sets
Current blocker (crashes immediately in normal apps)
ɵɵinterpolate1 through ɵɵinterpolateV — property/attribute interpolation
After the 0.0.16 fix, the next runtime error is:
TypeError: i0.ɵɵinterpolate1 is not a function
at NavigationItemCategoryCardComponent_Template
ɵɵinterpolate / ɵɵinterpolate1–ɵɵinterpolate8 / ɵɵinterpolateV do not exist in
Angular 19.2. The Angular 19 runtime uses dedicated per-binding-type instructions:
ɵɵpropertyInterpolate1–ɵɵpropertyInterpolate8for property bindingsɵɵattributeInterpolate1–ɵɵattributeInterpolate8for attribute bindings
The get_interpolate_instruction() function in identifiers.rs maps expression counts
to
ɵɵinterpolate1 etc., but these instructions are not present in the Angular 19.2
runtime
export list.
High priority (likely to affect real apps)
ɵɵdomProperty → should be ɵɵhostProperty
OXC defines DOM_PROPERTY = "ɵɵdomProperty" but Angular 19.2 exports ɵɵhostProperty
for
host element property binding. This is a name mismatch that will cause crashes in any
component
using host property bindings.
ɵɵconditionalCreate / ɵɵconditionalBranchCreate
Already fixed in 0.0.16 — listing here for completeness.
Forward-looking instructions (not yet in Angular 19.2)
These are not bugs per se — they appear to be OXC implementing ahead of the Angular 20
roadmap.
They won't cause issues unless the code paths that emit them are triggered in Angular 19
projects.
Documenting them here for awareness:
DOM-only rendering mode (8 instructions — entire family absent from Angular 19.2)
ɵɵdomElement, ɵɵdomElementStart, ɵɵdomElementEnd, ɵɵdomElementContainer,
ɵɵdomElementContainerStart, ɵɵdomElementContainerEnd, ɵɵdomTemplate,
ɵɵdomListener
New animation API (4 instructions)
ɵɵanimateEnter, ɵɵanimateLeave, ɵɵanimateEnterListener, ɵɵanimateLeaveListener
New control flow (2 instructions)
ɵɵcontrol, ɵɵcontrolCreate
ARIA property binding (1 instruction)
ɵɵariaProperty
Full summary table
| Instruction(s) | Present in Angular 19.2? | Impact |
|---|---|---|
ɵɵinterpolate, ɵɵinterpolate1–ɵɵinterpolateV |
❌ Missing | Crashes on any interpolated property/attribute binding |
ɵɵdomProperty |
❌ Missing (should be ɵɵhostProperty) |
Crashes on host property bindings |
ɵɵdom* (8 instructions) |
❌ Missing | Future DOM-only mode, not triggered in normal apps |
ɵɵanimate* (4 instructions) |
❌ Missing | Future animation API |
ɵɵcontrol, ɵɵcontrolCreate |
❌ Missing | Future control flow |
ɵɵariaProperty |
❌ Missing | ARIA bindings |
Suggestion
It might be worth adding a CI check or test fixture that compiles a representative
Angular 19.2
app and verifies no emitted instructions are absent from the target runtime — this would
catch
these mismatches before they reach users. Happy to help if useful!
Environment
@oxc-angular/vite: 0.0.16@angular/core: 19.2.18- Platform: macOS (darwin arm64)