diff --git a/changelog_unreleased/angular/18378.md b/changelog_unreleased/angular/18378.md
index fcd495b9a..1decf5b69 100644
--- a/changelog_unreleased/angular/18378.md
+++ b/changelog_unreleased/angular/18378.md
@@ -1,4 +1,4 @@
-#### Don't print Angular attribute values that are single template/string literals, on new lines (#18378 by @ravindUwU)
+#### Don't print attribute values that are single template or string literals on new lines (#18378 by @ravindUwU)
```html
diff --git a/changelog_unreleased/angular/18596.md b/changelog_unreleased/angular/18596.md
new file mode 100644
index 000000000..ebfe8843a
--- /dev/null
+++ b/changelog_unreleased/angular/18596.md
@@ -0,0 +1,16 @@
+#### Support spread element in array and object literals (#18596 by @prettier)
+
+
+```html
+
+
+
+
+
+
+
+
+```
diff --git a/package.json b/package.json
index 2b08acc0a..0c22cd165 100644
--- a/package.json
+++ b/package.json
@@ -42,7 +42,7 @@
"bin"
],
"dependencies": {
- "@angular/compiler": "21.0.8",
+ "@angular/compiler": "21.1.0-rc.0",
"@babel/code-frame": "8.0.0-beta.3",
"@babel/parser": "8.0.0-beta.3",
"@babel/types": "8.0.0-beta.3",
@@ -55,7 +55,7 @@
"@typescript-eslint/visitor-keys": "8.53.0",
"acorn": "8.15.0",
"acorn-jsx": "5.3.2",
- "angular-estree-parser": "15.1.3",
+ "angular-estree-parser": "15.2.0",
"angular-html-parser": "10.2.1",
"camelcase": "9.0.0",
"ci-info": "4.3.1",
diff --git a/tests/format/angular/v20-syntax/__snapshots__/format.test.js.snap b/tests/format/angular/expression/__snapshots__/format.test.js.snap
similarity index 80%
rename from tests/format/angular/v20-syntax/__snapshots__/format.test.js.snap
rename to tests/format/angular/expression/__snapshots__/format.test.js.snap
index 2fbe21142..64d98c6f7 100644
--- a/tests/format/angular/v20-syntax/__snapshots__/format.test.js.snap
+++ b/tests/format/angular/expression/__snapshots__/format.test.js.snap
@@ -33,6 +33,34 @@ printWidth: 80
================================================================================
`;
+exports[`spread-element.html format 1`] = `
+====================================options=====================================
+parsers: ["angular"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+{{
+ [... a]
+}}
+
+
+
+
+=====================================output=====================================
+{{ [...a] }}
+
+
+
+
+================================================================================
+`;
+
exports[`tagged-template-literal.html format 1`] = `
====================================options=====================================
parsers: ["angular"]
diff --git a/tests/format/angular/v20-syntax/exponentiation-operators.html b/tests/format/angular/expression/exponentiation-operators.html
similarity index 100%
rename from tests/format/angular/v20-syntax/exponentiation-operators.html
rename to tests/format/angular/expression/exponentiation-operators.html
diff --git a/tests/format/angular/v20-syntax/format.test.js b/tests/format/angular/expression/format.test.js
similarity index 100%
rename from tests/format/angular/v20-syntax/format.test.js
rename to tests/format/angular/expression/format.test.js
diff --git a/tests/format/angular/v20-syntax/in-operators.html b/tests/format/angular/expression/in-operators.html
similarity index 100%
rename from tests/format/angular/v20-syntax/in-operators.html
rename to tests/format/angular/expression/in-operators.html
diff --git a/tests/format/angular/expression/spread-element.html b/tests/format/angular/expression/spread-element.html
new file mode 100644
index 000000000..20cf7b962
--- /dev/null
+++ b/tests/format/angular/expression/spread-element.html
@@ -0,0 +1,7 @@
+{{
+ [... a]
+}}
+
+
+
diff --git a/tests/format/angular/v20-syntax/tagged-template-literal.html b/tests/format/angular/expression/tagged-template-literal.html
similarity index 100%
rename from tests/format/angular/v20-syntax/tagged-template-literal.html
rename to tests/format/angular/expression/tagged-template-literal.html
diff --git a/tests/format/angular/v20-syntax/template-literal.html b/tests/format/angular/expression/template-literal.html
similarity index 100%
rename from tests/format/angular/v20-syntax/template-literal.html
rename to tests/format/angular/expression/template-literal.html
diff --git a/tests/format/angular/v20-syntax/void-operators.html b/tests/format/angular/expression/void-operators.html
similarity index 100%
rename from tests/format/angular/v20-syntax/void-operators.html
rename to tests/format/angular/expression/void-operators.html
diff --git a/yarn.lock b/yarn.lock
index cd52b601a..d311f66f6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5,12 +5,12 @@ __metadata:
version: 8
cacheKey: 10
-"@angular/compiler@npm:21.0.8":
- version: 21.0.8
- resolution: "@angular/compiler@npm:21.0.8"
+"@angular/compiler@npm:21.1.0-rc.0":
+ version: 21.1.0-rc.0
+ resolution: "@angular/compiler@npm:21.1.0-rc.0"
dependencies:
tslib: "npm:^2.3.0"
- checksum: 10/966788d3ec3a413d5be1ad478d0f302bef8675429b7be7c6a8bacc4d9386f2030ca00bfd98dc6bda8ad4ab9403440d5d8f9b613745d7a5660c64b27aac4e71c4
+ checksum: 10/a4721142e932fe62b27a5e383b540ccb83cd2ca456e8ff3bdd62be1022f46b46d224213108b1186978de5f0d6e6916e7c074fb4270b16818f66b155f53531ac5
languageName: node
linkType: hard
@@ -2883,12 +2883,12 @@ __metadata:
languageName: node
linkType: hard
-"angular-estree-parser@npm:15.1.3":
- version: 15.1.3
- resolution: "angular-estree-parser@npm:15.1.3"
+"angular-estree-parser@npm:15.2.0":
+ version: 15.2.0
+ resolution: "angular-estree-parser@npm:15.2.0"
peerDependencies:
- "@angular/compiler": ">=21.0.7"
- checksum: 10/4b64a552e65660225c223734eea5c1f1105ba00a3ad3f1f3dfdf3f7b1743f9161650ccee1695d2d5953ffdd0dcd09c2e42ba5b2f140e430548aaeccfc1834bdb
+ "@angular/compiler": ">=21.0.7 || >= 21.1.0-0"
+ checksum: 10/55aa6d98da1685c3c423d8c0db1766967ca60b7a888005e78f96484883edea46e27210b20c7cb1bb1f578f2fb4cf2835ced71b5acf13dc09c5a6d4bf4c75fa88
languageName: node
linkType: hard
@@ -8359,7 +8359,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "prettier@workspace:."
dependencies:
- "@angular/compiler": "npm:21.0.8"
+ "@angular/compiler": "npm:21.1.0-rc.0"
"@babel/code-frame": "npm:8.0.0-beta.3"
"@babel/generator": "npm:8.0.0-beta.3"
"@babel/parser": "npm:8.0.0-beta.3"
@@ -8378,7 +8378,7 @@ __metadata:
"@typescript-eslint/visitor-keys": "npm:8.53.0"
acorn: "npm:8.15.0"
acorn-jsx: "npm:5.3.2"
- angular-estree-parser: "npm:15.1.3"
+ angular-estree-parser: "npm:15.2.0"
angular-html-parser: "npm:10.2.1"
base64-arraybuffer-es6: "npm:3.1.0"
browserslist: "npm:4.28.1"