diff --git a/changelog_unreleased/blog-post-intro.md b/changelog_unreleased/blog-post-intro.md
new file mode 100644
index 000000000..9196112da
--- /dev/null
+++ b/changelog_unreleased/blog-post-intro.md
@@ -0,0 +1,14 @@
+---
+authors: "fisker"
+title: "Prettier 3.7: Improved formatting consistency and new plugin features!"
+---
+
+We are excited to announce Prettier 3.7! This release focuses on polishing the TypeScript and Flow experience, specifically by aligning the formatting of classes and interfaces to be more consistent and predictable. We also want your opinion on the upcoming change to fix [inconsistent opening brace print logic of class and interface body](https://github.com/prettier/prettier/issues/18115).
+
+Additionally, we also fixed lots of bugs, added support for new features in Angular 21 and Graphql 16.12, added Front Matter support to Handlebars.
+
+For plugin developers, we've added new APIs to give you more control over comment attachment and handling of ignored nodes.
+
+If you appreciate Prettier and would like to support our work, please consider sponsoring us directly via [our OpenCollective](https://opencollective.com/prettier) or by sponsoring the projects we depend on. Thank you for your continued support!
+
+
diff --git a/changelog_unreleased/handlebars/18065.md b/changelog_unreleased/handlebars/18065.md
index 4260f29b0..bac303357 100644
--- a/changelog_unreleased/handlebars/18065.md
+++ b/changelog_unreleased/handlebars/18065.md
@@ -18,7 +18,7 @@
-{{! Prettier main (--html-whitespace-sensitivity=ignore) }}
+{{! Prettier main (--html-whitespace-sensitivity=ignore) }}
+
+{{! Prettier 3.6 (--html-whitespace-sensitivity=ignore) }}
+
+
+{{! Prettier 3.7 (--html-whitespace-sensitivity=ignore) }}
+
+```
+
+#### Don't force elements to break with `--html-whitespace-sensitivity=ignore` ([#18133](https://github.com/prettier/prettier/pull/18133) by [@fisker](https://github.com/fisker)) {#change-18133}
+
+
+```hbs
+{{! Input }}
+
+
+{{! Prettier 3.6 (--html-whitespace-ensitivity=ignore) }}
+
+
+
+{{! Prettier 3.7 (--html-whitespace-ensitivity=ignore) }}
+
+```
+
+### GraphQL
+
+#### Support "executable descriptions" ([#18214](https://github.com/prettier/prettier/pull/18214) by [@fisker](https://github.com/fisker)) {#change-18214}
+
+
+```gql
+# Input
+"Description"
+query {
+ node {
+ id
+ }
+}
+
+# Prettier 3.6
+SyntaxError: Syntax Error: Unexpected description, descriptions are supported only on type definitions. (1:1)
+> 1 | "Description"
+ | ^
+ 2 | query {
+ 3 | node {
+ 4 | id
+
+# Prettier 3.7
+"Description"
+query {
+ node {
+ id
+ }
+}
+```
+
+### Markdown
+
+#### Improve emoji size measurement ([#17813](https://github.com/prettier/prettier/pull/17813) by [@seiyab](https://github.com/seiyab)) {#change-17813}
+
+This change improves table alignment in all languages.
+
+
+```md
+
+| | |
+| :-: | :-: |
+| ✔ | ✘ |
+| ✘ | ✔ |
+| ✔ | ✘ |
+
+
+| | |
+| :-: | :-: |
+| ✔ | ✘ |
+| ✘ | ✔ |
+| ✔ | ✘ |
+
+
+
+| | |
+| :-: | :-: |
+| ✔ | ✘ |
+| ✘ | ✔ |
+| ✔ | ✘ |
+```
+
+#### Infer TOML parser for Front Matter ([#17965](https://github.com/prettier/prettier/pull/17965) by [@kovsu](https://github.com/kovsu)) {#change-17965}
+
+TOML Front Matter can be processed by the appropriate plugin if any.
+Works for HTML and CSS files too.
+
+#### Fix strong emphasis format ([#18010](https://github.com/prettier/prettier/pull/18010) by [@yin1999](https://github.com/yin1999)) {#change-18010}
+
+This is a supplementary fix for #17143, where the original PR could not determine whether the contents on the left and right sides were both words.
+
+
+```markdown
+
+1***2***3
+1**_2_**3
+
+
+1**_2_**3
+1**_2_**3
+
+
+1***2***3
+1***2***3
+```
+
+### MDX
+
+#### Fix `import` and `export` parsing ([#17996](https://github.com/prettier/prettier/pull/17996) by [@kovsu](https://github.com/kovsu) & [@fisker](https://github.com/fisker)) {#change-17996}
+
+
+```mdx
+{/* Input */}
+- import is a word in lists
+- export is a word in lists, too!
+
+{/* Prettier 3.6 */}
+- import is a word in list
+ s
+- export is a word in lists, too
+ !
+
+{/* Prettier 3.7 */}
+- import is a word in lists
+- export is a word in lists, too!
+```
+
+### YAML
+
+#### Preserve empty line between map and comment ([#17843](https://github.com/prettier/prettier/pull/17843) by [@kovsu](https://github.com/kovsu)) {#change-17843}
+
+
+```yaml
+# Input
+only: issues
+
+# Comment
+
+# Prettier 3.6
+only: issues
+# Comment
+
+# Prettier 3.7
+only: issues
+
+# Comment
+```
+
+#### Preserve explicit document end marker ([#18296](https://github.com/prettier/prettier/pull/18296) by [@fisker](https://github.com/fisker)) {#change-18296}
+
+
+```yaml
+# Input
+a: a
+---
+b: b
+...
+c: c
+...
+---
+d: d
+
+# Prettier 3.6
+a: a
+---
+b: b
+---
+c: c
+---
+d: d
+
+# Prettier 3.7
+a: a
+---
+b: b
+...
+c: c
+...
+---
+d: d
+```
+
+#### Use explicit key style for flow-mapping keys with trailing comments ([#18324](https://github.com/prettier/prettier/pull/18324) by [@kovsu](https://github.com/kovsu), [@fisker](https://github.com/fisker)) {#change-18324}
+
+
+```yaml
+# Input
+{ "foo" # comment
+ :bar }
+
+# Prettier 3.6
+{ "foo": bar } # comment
+
+# Prettier 3.7
+{ ? "foo" # comment
+ : bar }
+```
+
+### API
+
+#### Allow `plugin.parser.preprocess()` to return a `Promise` ([#17679](https://github.com/prettier/prettier/pull/17679) by [@fisker](https://github.com/fisker)) {#change-17679}
+
+Align with [`plugin.printer.preprocess()`](https://prettier.io/docs/plugins#optional-preprocess), which allows to return a `Promise`.
+
+We still suggest move your async work into `plugin.parser.parse()`, which already allow to return a `Promise`, we may remove support for `plugin.parser.preprocess()` in future.
+
+#### Allow `AstPath#call()` to access property of nullish properties ([#17860](https://github.com/prettier/prettier/pull/17860) by [@fisker](https://github.com/fisker)) {#change-17860}
+
+Previously, to check for a possible non-existent child node, we had to ensure the node existed first.
+
+```js
+const isFoo = path.call(() => path.node?.type === "Foo", "foo", "bar");
+// Uncaught TypeError: Cannot read properties of undefined (reading 'bar')
+```
+
+We have to
+
+```js
+const isFoo =
+ path.node.foo?.bar &&
+ path.call(() => path.node?.type === "Foo", "foo", "bar");
+```
+
+Since Prettier 3.7, accessing a property of nullish properties no longer throws errors.
+
+#### Pass ancestors to `plugin.printer.canAttachComment()` ([#18055](https://github.com/prettier/prettier/pull/18055) by [@fisker](https://github.com/fisker)) {#change-18055}
+
+This prevent attaching comments to a specific child of node.
+
+For example in this JavaScript code `const object = {property};`, the `Identifier` node (`property`) appears as both `Property.key` and `Property.value` in the AST, obviously it can only print once, if the comment is attached to the non-printable child the comment will get lost.
+
+Plugins can now avoid this by adding a `canAttachComment` like this:
+
+```js
+export const canAttachComment = (node, [parent]) =>
+ !(
+ parent?.type === "Property" &&
+ parent.shorthand &&
+ parent.key === node &&
+ parent.key !== parent.value
+ );
+
+export const print = (path, options, print) => {
+ const { node } = path;
+ switch (node.type) {
+ case "Property":
+ if (node.shorthand) {
+ return print("value");
+ }
+ // ...
+ }
+};
+```
+
+#### Add support for `plugin.printer.printPrettierIgnored()` ([#18070](https://github.com/prettier/prettier/pull/18070) by [@fisker](https://github.com/fisker)) {#change-18070}
+
+For a node with `prettier-ignore` comment, Prettier prints the text of the node directly. However, this may cause problems, for example, the node needs to be parenthesized or needs to print a leading semicolon to prevent ASI issue in `--no-semi` mode.
+
+Since Prettier 3.7, plugins can add `printPrettierIgnored()` function to the printer to customize the `prettier-ignore`d node print process. This function uses the extract same signature as [`plugin.printer.print()`](https://prettier.io/docs/plugins#print)
+
+#### Allow plugin to provide an `estree` printer ([#18072](https://github.com/prettier/prettier/pull/18072) by [@fisker](https://github.com/fisker)) {#change-18072}
+
+Previously, if a plugin wanted to make a plugin with `estree` printer that outputs different code based on the built-in one, plugin need provide both `parsers` and `printers`. Prettier 3.7 allows a plugin to create a plugin that only provides `estree` printer.
+
+### CLI
+
+#### Avoid creating `node_modules/.cache/` directory when `--cache` is not enabled ([#18124](https://github.com/prettier/prettier/pull/18124) by [@chiawendt](https://github.com/chiawendt)) {#change-18124}
+
+Run `prettier .` without `--cache` no longer creates an empty `node_modules/.cache/` directory.
diff --git a/website/blog/authors.yml b/website/blog/authors.yml
index 67340b3d5..deeb15188 100644
--- a/website/blog/authors.yml
+++ b/website/blog/authors.yml
@@ -93,3 +93,10 @@ fabiospampinato:
socials:
x: fabiospampinato
github: fabiospampinato
+
+fisker:
+ name: Fisker Cheung
+ url: https://github.com/fisker
+ image_url: https://github.com/fisker.png?size=58
+ socials:
+ github: fisker