diff --git a/CHANGES.md b/CHANGES.md
index ec5bc22a98ebbb4a2df9c82fb8c6d43dd1d11b59..913e6fbc8ce2c735e78e663922820ccda6c606d0 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,45 @@
+# Synapse 1.106.0rc1 (2024-04-25)
+
+### Features
+
+- Send an email if the address is already bound to an user account. ([\#16819](https://github.com/element-hq/synapse/issues/16819))
+- Implement the rendezvous mechanism described by MSC4108. ([\#17056](https://github.com/element-hq/synapse/issues/17056))
+- Support delegating the rendezvous mechanism described MSC4108 to an external implementation. ([\#17086](https://github.com/element-hq/synapse/issues/17086))
+
+### Bugfixes
+
+- Add validation to ensure that the `limit` parameter on `/publicRooms` is non-negative. ([\#16920](https://github.com/element-hq/synapse/issues/16920))
+- Return `400 M_NOT_JSON` upon receiving invalid JSON in query parameters across various client and admin endpoints, rather than an internal server error. ([\#16923](https://github.com/element-hq/synapse/issues/16923))
+- Make the CSAPI endpoint `/keys/device_signing/upload` idempotent. ([\#16943](https://github.com/element-hq/synapse/issues/16943))
+- Redact membership events if the user requested erasure upon deactivating. ([\#17076](https://github.com/element-hq/synapse/issues/17076))
+
+### Improved Documentation
+
+- Add a prompt in the contributing guide to manually configure icu4c. ([\#17069](https://github.com/element-hq/synapse/issues/17069))
+- Clarify what part of message retention is still experimental. ([\#17099](https://github.com/element-hq/synapse/issues/17099))
+
+### Internal Changes
+
+- Use new receipts column to optimise receipt and push action SQL queries. Contributed by Nick @ Beeper (@fizzadar). ([\#17032](https://github.com/element-hq/synapse/issues/17032), [\#17096](https://github.com/element-hq/synapse/issues/17096))
+- Fix mypy with latest Twisted release. ([\#17036](https://github.com/element-hq/synapse/issues/17036))
+- Bump minimum supported Rust version to 1.66.0. ([\#17079](https://github.com/element-hq/synapse/issues/17079))
+- Add helpers to transform Twisted requests to Rust http Requests/Responses. ([\#17081](https://github.com/element-hq/synapse/issues/17081))
+- Fix type annotation for `visited_chains` after `mypy` upgrade. ([\#17125](https://github.com/element-hq/synapse/issues/17125))
+
+
+
+### Updates to locked dependencies
+
+* Bump anyhow from 1.0.81 to 1.0.82. ([\#17095](https://github.com/element-hq/synapse/issues/17095))
+* Bump peaceiris/actions-gh-pages from 3.9.3 to 4.0.0. ([\#17087](https://github.com/element-hq/synapse/issues/17087))
+* Bump peaceiris/actions-mdbook from 1.2.0 to 2.0.0. ([\#17089](https://github.com/element-hq/synapse/issues/17089))
+* Bump pyasn1-modules from 0.3.0 to 0.4.0. ([\#17093](https://github.com/element-hq/synapse/issues/17093))
+* Bump pygithub from 2.2.0 to 2.3.0. ([\#17092](https://github.com/element-hq/synapse/issues/17092))
+* Bump ruff from 0.3.5 to 0.3.7. ([\#17094](https://github.com/element-hq/synapse/issues/17094))
+* Bump sigstore/cosign-installer from 3.4.0 to 3.5.0. ([\#17088](https://github.com/element-hq/synapse/issues/17088))
+* Bump twine from 4.0.2 to 5.0.0. ([\#17091](https://github.com/element-hq/synapse/issues/17091))
+* Bump types-pillow from 10.2.0.20240406 to 10.2.0.20240415. ([\#17090](https://github.com/element-hq/synapse/issues/17090))
+
 # Synapse 1.105.1 (2024-04-23)
 
 ## Security advisory
diff --git a/changelog.d/16819.feature b/changelog.d/16819.feature
deleted file mode 100644
index 1af6f466b775685f7581ea9c9644329400028e9d..0000000000000000000000000000000000000000
--- a/changelog.d/16819.feature
+++ /dev/null
@@ -1 +0,0 @@
-Send an email if the address is already bound to an user account.
diff --git a/changelog.d/16920.bugfix b/changelog.d/16920.bugfix
deleted file mode 100644
index 460f4f716016e5e405a45f38307ed41545a71dcf..0000000000000000000000000000000000000000
--- a/changelog.d/16920.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Adds validation to ensure that the `limit` parameter on `/publicRooms` is non-negative.
diff --git a/changelog.d/16923.bugfix b/changelog.d/16923.bugfix
deleted file mode 100644
index bd6f24925ee538325cda6012837e3d7b722f0b58..0000000000000000000000000000000000000000
--- a/changelog.d/16923.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Return `400 M_NOT_JSON` upon receiving invalid JSON in query parameters across various client and admin endpoints, rather than an internal server error.
\ No newline at end of file
diff --git a/changelog.d/16943.bugfix b/changelog.d/16943.bugfix
deleted file mode 100644
index 4360741132f0deac0d88245e56e7dc9804ce56b2..0000000000000000000000000000000000000000
--- a/changelog.d/16943.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Make the CSAPI endpoint `/keys/device_signing/upload` idempotent.
\ No newline at end of file
diff --git a/changelog.d/17032.misc b/changelog.d/17032.misc
deleted file mode 100644
index b03f6f42e5fd8bb1851f91708381cdbbed796f17..0000000000000000000000000000000000000000
--- a/changelog.d/17032.misc
+++ /dev/null
@@ -1 +0,0 @@
-Use new receipts column to optimise receipt and push action SQL queries. Contributed by Nick @ Beeper (@fizzadar).
diff --git a/changelog.d/17036.misc b/changelog.d/17036.misc
deleted file mode 100644
index 32966680595215dc953fee7fea51af73fd320de0..0000000000000000000000000000000000000000
--- a/changelog.d/17036.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix mypy with latest Twisted release.
diff --git a/changelog.d/17056.feature b/changelog.d/17056.feature
deleted file mode 100644
index b4cbe849e4fe33a5c7839e6319c11603635b1033..0000000000000000000000000000000000000000
--- a/changelog.d/17056.feature
+++ /dev/null
@@ -1 +0,0 @@
-Implement the rendezvous mechanism described by MSC4108.
diff --git a/changelog.d/17069.doc b/changelog.d/17069.doc
deleted file mode 100644
index f5a7f599d14d48f8437982f95a39289a70b06e79..0000000000000000000000000000000000000000
--- a/changelog.d/17069.doc
+++ /dev/null
@@ -1 +0,0 @@
-Add a prompt in the contributing guide to manually configure icu4c.
diff --git a/changelog.d/17076.bugfix b/changelog.d/17076.bugfix
deleted file mode 100644
index a111ea2b886dba58571c4bc72411a7566496ff51..0000000000000000000000000000000000000000
--- a/changelog.d/17076.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Redact membership events if the user requested erasure upon deactivating.
\ No newline at end of file
diff --git a/changelog.d/17079.misc b/changelog.d/17079.misc
deleted file mode 100644
index 340e40d1946da6e89429ca5bd3063f7e075f028c..0000000000000000000000000000000000000000
--- a/changelog.d/17079.misc
+++ /dev/null
@@ -1 +0,0 @@
-Bump minimum supported Rust version to 1.66.0.
diff --git a/changelog.d/17081.misc b/changelog.d/17081.misc
deleted file mode 100644
index d1ab69126c3f1fc8962fbfb7744155c7237d13fc..0000000000000000000000000000000000000000
--- a/changelog.d/17081.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add helpers to transform Twisted requests to Rust http Requests/Responses.
diff --git a/changelog.d/17086.feature b/changelog.d/17086.feature
deleted file mode 100644
index 08b407d3167641bef00160ac586015e4df7c0dc0..0000000000000000000000000000000000000000
--- a/changelog.d/17086.feature
+++ /dev/null
@@ -1 +0,0 @@
-Support delegating the rendezvous mechanism described MSC4108 to an external implementation.
diff --git a/changelog.d/17096.misc b/changelog.d/17096.misc
deleted file mode 100644
index b03f6f42e5fd8bb1851f91708381cdbbed796f17..0000000000000000000000000000000000000000
--- a/changelog.d/17096.misc
+++ /dev/null
@@ -1 +0,0 @@
-Use new receipts column to optimise receipt and push action SQL queries. Contributed by Nick @ Beeper (@fizzadar).
diff --git a/changelog.d/17099.doc b/changelog.d/17099.doc
deleted file mode 100644
index d8d10fa53ae4d77864c90c09db11bf647f40f894..0000000000000000000000000000000000000000
--- a/changelog.d/17099.doc
+++ /dev/null
@@ -1 +0,0 @@
-Clarify what part of message retention is still experimental.
diff --git a/changelog.d/17125.misc b/changelog.d/17125.misc
deleted file mode 100644
index a7d9ce6491f0a67263422d7480c77530ec802b69..0000000000000000000000000000000000000000
--- a/changelog.d/17125.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix type annotation for `visited_chains` after `mypy` upgrade.
\ No newline at end of file
diff --git a/debian/changelog b/debian/changelog
index 214ed59426d6bac61f9d3e95a15abe58f8d5a025..de912c2ac88142caacec6e83d80e8c90ee4f833d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+matrix-synapse-py3 (1.106.0~rc1) stable; urgency=medium
+
+  * New Synapse release 1.106.0rc1.
+
+ -- Synapse Packaging team <packages@matrix.org>  Thu, 25 Apr 2024 15:54:59 +0100
+
 matrix-synapse-py3 (1.105.1) stable; urgency=medium
 
   * New Synapse release 1.105.1.
diff --git a/pyproject.toml b/pyproject.toml
index ed0f5ef4ba9d8d3ada3be36d039f08e0ef3c133e..5e47a46cd7d4f1785815e5c817d1b58323f6a9bb 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -96,7 +96,7 @@ module-name = "synapse.synapse_rust"
 
 [tool.poetry]
 name = "matrix-synapse"
-version = "1.105.1"
+version = "1.106.0rc1"
 description = "Homeserver for the Matrix decentralised comms protocol"
 authors = ["Matrix.org Team and Contributors <packages@matrix.org>"]
 license = "AGPL-3.0-or-later"