diff --git a/CHANGES.md b/CHANGES.md
index 3f0c5685ea20dd83c33e904cf4a522f448c6c325..238eb8a4edbc8cca0b3461289a059ff337d604fd 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,73 @@
+Synapse 1.30.0rc1 (2021-03-16)
+==============================
+
+Features
+--------
+
+- Add prometheus metrics for number of users successfully registering and logging in. ([\#9510](https://github.com/matrix-org/synapse/issues/9510), [\#9511](https://github.com/matrix-org/synapse/issues/9511), [\#9573](https://github.com/matrix-org/synapse/issues/9573))
+- Add `synapse_federation_last_sent_pdu_time` and `synapse_federation_last_received_pdu_time` prometheus metrics, which monitor federation delays by reporting the timestamps of messages sent and received to a set of remote servers. ([\#9540](https://github.com/matrix-org/synapse/issues/9540))
+- Add support for generating JSON Web Tokens dynamically for use as OIDC client secrets. ([\#9549](https://github.com/matrix-org/synapse/issues/9549))
+- Optimise handling of incomplete room history for incoming federation. ([\#9601](https://github.com/matrix-org/synapse/issues/9601))
+- Finalise support for allowing clients to pick an SSO Identity Provider ([MSC2858](https://github.com/matrix-org/matrix-doc/pull/2858)). ([\#9617](https://github.com/matrix-org/synapse/issues/9617))
+- Tell spam checker modules about the SSO IdP a user registered through if one was used. ([\#9626](https://github.com/matrix-org/synapse/issues/9626))
+
+
+Bugfixes
+--------
+
+- Fix long-standing bug when generating thumbnails for some images with transparency: `TypeError: cannot unpack non-iterable int object`. ([\#9473](https://github.com/matrix-org/synapse/issues/9473))
+- Purge chain cover indexes for events that were purged prior to Synapse v1.29.0. ([\#9542](https://github.com/matrix-org/synapse/issues/9542), [\#9583](https://github.com/matrix-org/synapse/issues/9583))
+- Fix bug where federation requests were not correctly retried on 5xx responses. ([\#9567](https://github.com/matrix-org/synapse/issues/9567))
+- Re-Activating account with admin API when local passwords are disabled. ([\#9587](https://github.com/matrix-org/synapse/issues/9587))
+- Fix a bug introduced in Synapse 1.20 which caused incoming federation transactions to stack up, causing slow recovery from outages. ([\#9597](https://github.com/matrix-org/synapse/issues/9597))
+- Fix a bug introduced in v1.28.0 where the OpenID Connect callback endpoint could error with a `MacaroonInitException`. ([\#9620](https://github.com/matrix-org/synapse/issues/9620))
+- Fix Internal Server Error on `GET /_synapse/client/saml2/authn_response` request. ([\#9623](https://github.com/matrix-org/synapse/issues/9623))
+
+
+Updates to the Docker image
+---------------------------
+
+- Use jemalloc if available in docker. ([\#8553](https://github.com/matrix-org/synapse/issues/8553))
+
+
+Improved Documentation
+----------------------
+
+- Add relayd entry to reverse proxy example configurations. ([\#9508](https://github.com/matrix-org/synapse/issues/9508))
+- Improve the SAML2 upgrade notes for 1.27.0. ([\#9550](https://github.com/matrix-org/synapse/issues/9550))
+- Link to the "List user's media" admin API from the media admin API docs. ([\#9571](https://github.com/matrix-org/synapse/issues/9571))
+- Clarify the spam checker modules documentation example to mention that `parse_config` is a required method. ([\#9580](https://github.com/matrix-org/synapse/issues/9580))
+- Clarify the sample configuration for `stats` settings. ([\#9604](https://github.com/matrix-org/synapse/issues/9604))
+
+
+Deprecations and Removals
+-------------------------
+
+- The `synapse_federation_last_sent_pdu_age` and `synapse_federation_last_received_pdu_age` prometheus metrics have been removed. They are replaced by `synapse_federation_last_sent_pdu_time` and `synapse_federation_last_received_pdu_time`. ([\#9540](https://github.com/matrix-org/synapse/issues/9540))
+- Registering an Application Service user without using the `m.login.application_service` login type will be unsupported in an upcoming Synapse release. ([\#9559](https://github.com/matrix-org/synapse/issues/9559))
+
+
+Internal Changes
+----------------
+
+- Add tests to ResponseCache. ([\#9458](https://github.com/matrix-org/synapse/issues/9458))
+- Add type hints to purge room and server notice admin API. ([\#9520](https://github.com/matrix-org/synapse/issues/9520))
+- Add extra logging to ObservableDeferred when callbacks throw exceptions. ([\#9523](https://github.com/matrix-org/synapse/issues/9523))
+- Fix incorrect type hints. ([\#9528](https://github.com/matrix-org/synapse/issues/9528), [\#9543](https://github.com/matrix-org/synapse/issues/9543), [\#9591](https://github.com/matrix-org/synapse/issues/9591), [\#9608](https://github.com/matrix-org/synapse/issues/9608), [\#9618](https://github.com/matrix-org/synapse/issues/9618))
+- Add an additional test for purging a room. ([\#9541](https://github.com/matrix-org/synapse/issues/9541))
+- Add a `.git-blame-ignore-revs` file with the hashes of auto-formatting. ([\#9560](https://github.com/matrix-org/synapse/issues/9560))
+- Increase the threshold before which outbound federation to a server goes into "catch up" mode, which is expensive for the remote server to handle. ([\#9561](https://github.com/matrix-org/synapse/issues/9561))
+- Fix spurious errors reported by the `config-lint.sh` script. ([\#9562](https://github.com/matrix-org/synapse/issues/9562))
+- Fix type hints and tests for BlacklistingAgentWrapper and BlacklistingReactorWrapper. ([\#9563](https://github.com/matrix-org/synapse/issues/9563))
+- Do not have mypy ignore type hints from unpaddedbase64. ([\#9568](https://github.com/matrix-org/synapse/issues/9568))
+- Improve efficiency of calculating the auth chain in large rooms. ([\#9576](https://github.com/matrix-org/synapse/issues/9576))
+- Convert `synapse.types.Requester` to an `attrs` class. ([\#9586](https://github.com/matrix-org/synapse/issues/9586))
+- Add logging for redis connection setup. ([\#9590](https://github.com/matrix-org/synapse/issues/9590))
+- Improve logging when processing incoming transactions. ([\#9596](https://github.com/matrix-org/synapse/issues/9596))
+- Remove unused `stats.retention` setting, and emit a warning if stats are disabled. ([\#9604](https://github.com/matrix-org/synapse/issues/9604))
+- Prevent attempting to bundle aggregations for state events in /context APIs. ([\#9619](https://github.com/matrix-org/synapse/issues/9619))
+
+
 Removal warning
 ---------------
 
diff --git a/changelog.d/8553.docker b/changelog.d/8553.docker
deleted file mode 100644
index f99c4207b806e990fcf2f4190e26cf56be1dae82..0000000000000000000000000000000000000000
--- a/changelog.d/8553.docker
+++ /dev/null
@@ -1 +0,0 @@
-Use jemalloc if available in docker.
diff --git a/changelog.d/9458.misc b/changelog.d/9458.misc
deleted file mode 100644
index 8ceeed1352e5a02b2c25d30e457358efb2e19db6..0000000000000000000000000000000000000000
--- a/changelog.d/9458.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add tests to ResponseCache.
\ No newline at end of file
diff --git a/changelog.d/9473.bugfix b/changelog.d/9473.bugfix
deleted file mode 100644
index 71fb487cf2c0d7110140dfc18bbcd3045b6b7813..0000000000000000000000000000000000000000
--- a/changelog.d/9473.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix long-standing bug when generating thumbnails for some images with transparency: `TypeError: cannot unpack non-iterable int object`.
diff --git a/changelog.d/9508.doc b/changelog.d/9508.doc
deleted file mode 100644
index a17a8faecf73c4075ce96f4024c6e7f4c13ade55..0000000000000000000000000000000000000000
--- a/changelog.d/9508.doc
+++ /dev/null
@@ -1 +0,0 @@
-Add relayd entry to reverse proxy example configurations.
diff --git a/changelog.d/9510.feature b/changelog.d/9510.feature
deleted file mode 100644
index 5214b50d414c38ee45f1e65f669a6d693a5a19bc..0000000000000000000000000000000000000000
--- a/changelog.d/9510.feature
+++ /dev/null
@@ -1 +0,0 @@
-Add prometheus metrics for number of users successfully registering and logging in.
diff --git a/changelog.d/9511.feature b/changelog.d/9511.feature
deleted file mode 100644
index 5214b50d414c38ee45f1e65f669a6d693a5a19bc..0000000000000000000000000000000000000000
--- a/changelog.d/9511.feature
+++ /dev/null
@@ -1 +0,0 @@
-Add prometheus metrics for number of users successfully registering and logging in.
diff --git a/changelog.d/9520.misc b/changelog.d/9520.misc
deleted file mode 100644
index 825ba5bbc1d996c122a878572a6a0c156ac50df5..0000000000000000000000000000000000000000
--- a/changelog.d/9520.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add type hints to purge room and server notice admin API.
\ No newline at end of file
diff --git a/changelog.d/9523.misc b/changelog.d/9523.misc
deleted file mode 100644
index f03e939efb2ead728188fb6edb62671b5ff5d6c1..0000000000000000000000000000000000000000
--- a/changelog.d/9523.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add extra logging to ObservableDeferred when callbacks throw exceptions.
\ No newline at end of file
diff --git a/changelog.d/9528.misc b/changelog.d/9528.misc
deleted file mode 100644
index 14c7b78dd97e08e06093384ad5d609e6cc0c3947..0000000000000000000000000000000000000000
--- a/changelog.d/9528.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix incorrect type hints.
diff --git a/changelog.d/9540.feature b/changelog.d/9540.feature
deleted file mode 100644
index 5417e51b93eb77036e7522f8ce3b3cc9b4b0dc90..0000000000000000000000000000000000000000
--- a/changelog.d/9540.feature
+++ /dev/null
@@ -1 +0,0 @@
-Add `synapse_federation_last_sent_pdu_time` and `synapse_federation_last_received_pdu_time` prometheus metrics, which monitor federation delays by reporting the timestamps of messages sent and received to a set of remote servers.
diff --git a/changelog.d/9540.removal b/changelog.d/9540.removal
deleted file mode 100644
index d54f553cb9b92bbb13b68336fc8c140ca9b1266f..0000000000000000000000000000000000000000
--- a/changelog.d/9540.removal
+++ /dev/null
@@ -1 +0,0 @@
-The `synapse_federation_last_sent_pdu_age` and `synapse_federation_last_received_pdu_age` prometheus metrics have been removed. They are replaced by `synapse_federation_last_sent_pdu_time` and `synapse_federation_last_received_pdu_time`.
diff --git a/changelog.d/9541.misc b/changelog.d/9541.misc
deleted file mode 100644
index a82bef3431681aee895d8eb95271b16b88ce7e83..0000000000000000000000000000000000000000
--- a/changelog.d/9541.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add an additional test for purging a room.
diff --git a/changelog.d/9542.bugfix b/changelog.d/9542.bugfix
deleted file mode 100644
index 51b1876f3b61ccc6d38fa4c37e9ca2dd67024723..0000000000000000000000000000000000000000
--- a/changelog.d/9542.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Purge chain cover indexes for events that were purged prior to Synapse v1.29.0.
diff --git a/changelog.d/9543.misc b/changelog.d/9543.misc
deleted file mode 100644
index 14c7b78dd97e08e06093384ad5d609e6cc0c3947..0000000000000000000000000000000000000000
--- a/changelog.d/9543.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix incorrect type hints.
diff --git a/changelog.d/9549.feature b/changelog.d/9549.feature
deleted file mode 100644
index 709e61eced8e9c4c14049ff782f436409b475423..0000000000000000000000000000000000000000
--- a/changelog.d/9549.feature
+++ /dev/null
@@ -1 +0,0 @@
-Add support for generating JSON Web Tokens dynamically for use as OIDC client secrets.
diff --git a/changelog.d/9550.doc b/changelog.d/9550.doc
deleted file mode 100644
index adbbeb0ae4373a57b7c8a2adfdfd30e9c036a4c0..0000000000000000000000000000000000000000
--- a/changelog.d/9550.doc
+++ /dev/null
@@ -1 +0,0 @@
-Improve the SAML2 upgrade notes for 1.27.0.
diff --git a/changelog.d/9559.removal b/changelog.d/9559.removal
deleted file mode 100644
index f97bf56dc03f55f73f294dca318ebef89d7f706c..0000000000000000000000000000000000000000
--- a/changelog.d/9559.removal
+++ /dev/null
@@ -1 +0,0 @@
-Registering an Application Service user without using the `m.login.application_service` login type will be unsupported in an upcoming Synapse release.
diff --git a/changelog.d/9560.misc b/changelog.d/9560.misc
deleted file mode 100644
index 57a698f846e851ed99dfdc88dd566922ae4cf47c..0000000000000000000000000000000000000000
--- a/changelog.d/9560.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add a `.git-blame-ignore-revs` file with the hashes of auto-formatting.
diff --git a/changelog.d/9561.misc b/changelog.d/9561.misc
deleted file mode 100644
index 6c529a82eeb066bdc57ffeded12d2c0b29543818..0000000000000000000000000000000000000000
--- a/changelog.d/9561.misc
+++ /dev/null
@@ -1 +0,0 @@
-Increase the threshold before which outbound federation to a server goes into "catch up" mode, which is expensive for the remote server to handle.
diff --git a/changelog.d/9562.misc b/changelog.d/9562.misc
deleted file mode 100644
index 2f0133bff0b28fc7cf331f24d925cf981ca9f10e..0000000000000000000000000000000000000000
--- a/changelog.d/9562.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix spurious errors reported by the `config-lint.sh` script.
\ No newline at end of file
diff --git a/changelog.d/9563.misc b/changelog.d/9563.misc
deleted file mode 100644
index 7a3493e4a166dd5871924d541c67342b837ec21c..0000000000000000000000000000000000000000
--- a/changelog.d/9563.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix type hints and tests for BlacklistingAgentWrapper and BlacklistingReactorWrapper.
diff --git a/changelog.d/9567.bugfix b/changelog.d/9567.bugfix
deleted file mode 100644
index e7322c2b5e631a3e2f54a43ff9790f6d06d971f5..0000000000000000000000000000000000000000
--- a/changelog.d/9567.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix bug where federation requests were not correctly retried on 5xx responses.
diff --git a/changelog.d/9568.misc b/changelog.d/9568.misc
deleted file mode 100644
index 561963de9349abd3d32f8dd39683c83743bd81f0..0000000000000000000000000000000000000000
--- a/changelog.d/9568.misc
+++ /dev/null
@@ -1 +0,0 @@
-Do not have mypy ignore type hints from unpaddedbase64.
diff --git a/changelog.d/9571.doc b/changelog.d/9571.doc
deleted file mode 100644
index 1bba72e7d05f32a0cb585df67cd66a4548b10201..0000000000000000000000000000000000000000
--- a/changelog.d/9571.doc
+++ /dev/null
@@ -1 +0,0 @@
-Link to the "List user's media" admin API from the media admin API docs.
diff --git a/changelog.d/9573.feature b/changelog.d/9573.feature
deleted file mode 100644
index 5214b50d414c38ee45f1e65f669a6d693a5a19bc..0000000000000000000000000000000000000000
--- a/changelog.d/9573.feature
+++ /dev/null
@@ -1 +0,0 @@
-Add prometheus metrics for number of users successfully registering and logging in.
diff --git a/changelog.d/9576.misc b/changelog.d/9576.misc
deleted file mode 100644
index bc257d05b7443e05e458be9861a9ddae96ee4867..0000000000000000000000000000000000000000
--- a/changelog.d/9576.misc
+++ /dev/null
@@ -1 +0,0 @@
-Improve efficiency of calculating the auth chain in large rooms.
diff --git a/changelog.d/9580.doc b/changelog.d/9580.doc
deleted file mode 100644
index f9c8b328b32d2f922c0286c7f833017780c6e595..0000000000000000000000000000000000000000
--- a/changelog.d/9580.doc
+++ /dev/null
@@ -1 +0,0 @@
-Clarify the spam checker modules documentation example to mention that `parse_config` is a required method.
diff --git a/changelog.d/9583.bugfix b/changelog.d/9583.bugfix
deleted file mode 100644
index 51b1876f3b61ccc6d38fa4c37e9ca2dd67024723..0000000000000000000000000000000000000000
--- a/changelog.d/9583.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Purge chain cover indexes for events that were purged prior to Synapse v1.29.0.
diff --git a/changelog.d/9586.misc b/changelog.d/9586.misc
deleted file mode 100644
index 2def9d5f555cd13ba5ba13e4cc8e9d9391dcf319..0000000000000000000000000000000000000000
--- a/changelog.d/9586.misc
+++ /dev/null
@@ -1 +0,0 @@
-Convert `synapse.types.Requester` to an `attrs` class.
diff --git a/changelog.d/9587.bugfix b/changelog.d/9587.bugfix
deleted file mode 100644
index d8f04c4f21142742df089f49bed3838cc3dab632..0000000000000000000000000000000000000000
--- a/changelog.d/9587.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Re-Activating account with admin API when local passwords are disabled.
\ No newline at end of file
diff --git a/changelog.d/9590.misc b/changelog.d/9590.misc
deleted file mode 100644
index 186396c45bfe5d8348d68570807c82f20206745e..0000000000000000000000000000000000000000
--- a/changelog.d/9590.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add logging for redis connection setup.
diff --git a/changelog.d/9591.misc b/changelog.d/9591.misc
deleted file mode 100644
index 14c7b78dd97e08e06093384ad5d609e6cc0c3947..0000000000000000000000000000000000000000
--- a/changelog.d/9591.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix incorrect type hints.
diff --git a/changelog.d/9596.misc b/changelog.d/9596.misc
deleted file mode 100644
index fc19a95f75323a696fc53454477b2c481ceae1f2..0000000000000000000000000000000000000000
--- a/changelog.d/9596.misc
+++ /dev/null
@@ -1 +0,0 @@
-Improve logging when processing incoming transactions.
diff --git a/changelog.d/9597.bugfix b/changelog.d/9597.bugfix
deleted file mode 100644
index 349dc9d664480e6ade10d1a983fb7781304c9d34..0000000000000000000000000000000000000000
--- a/changelog.d/9597.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a bug introduced in Synapse 1.20 which caused incoming federation transactions to stack up, causing slow recovery from outages.
diff --git a/changelog.d/9601.feature b/changelog.d/9601.feature
deleted file mode 100644
index 5078d63ffaa93be42205d172a302ab8e15ff45e1..0000000000000000000000000000000000000000
--- a/changelog.d/9601.feature
+++ /dev/null
@@ -1 +0,0 @@
-Optimise handling of incomplete room history for incoming federation.
diff --git a/changelog.d/9604.doc b/changelog.d/9604.doc
deleted file mode 100644
index d413e38b72778a1a6c9743372463682d5f2dad6a..0000000000000000000000000000000000000000
--- a/changelog.d/9604.doc
+++ /dev/null
@@ -1 +0,0 @@
-Clarify the sample configuration for `stats` settings.
diff --git a/changelog.d/9604.misc b/changelog.d/9604.misc
deleted file mode 100644
index 05839885883a2ebaffa449091bb46896ec63ee3e..0000000000000000000000000000000000000000
--- a/changelog.d/9604.misc
+++ /dev/null
@@ -1 +0,0 @@
-Remove unused `stats.retention` setting, and emit a warning if stats are disabled.
diff --git a/changelog.d/9608.misc b/changelog.d/9608.misc
deleted file mode 100644
index 14c7b78dd97e08e06093384ad5d609e6cc0c3947..0000000000000000000000000000000000000000
--- a/changelog.d/9608.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix incorrect type hints.
diff --git a/changelog.d/9617.feature b/changelog.d/9617.feature
deleted file mode 100644
index b462a32b924987357edc3b2c8556ad3ab4d1cc10..0000000000000000000000000000000000000000
--- a/changelog.d/9617.feature
+++ /dev/null
@@ -1 +0,0 @@
-Finalise support for allowing clients to pick an SSO Identity Provider ([MSC2858](https://github.com/matrix-org/matrix-doc/pull/2858)).
diff --git a/changelog.d/9618.misc b/changelog.d/9618.misc
deleted file mode 100644
index 14c7b78dd97e08e06093384ad5d609e6cc0c3947..0000000000000000000000000000000000000000
--- a/changelog.d/9618.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix incorrect type hints.
diff --git a/changelog.d/9619.misc b/changelog.d/9619.misc
deleted file mode 100644
index 50267bfbc472e1bbfb038c2d9bd717ea78a5faff..0000000000000000000000000000000000000000
--- a/changelog.d/9619.misc
+++ /dev/null
@@ -1 +0,0 @@
-Prevent attempting to bundle aggregations for state events in /context APIs.
\ No newline at end of file
diff --git a/changelog.d/9620.bugfix b/changelog.d/9620.bugfix
deleted file mode 100644
index 427580f4adef7f513d21c647f4260e68cc8996f7..0000000000000000000000000000000000000000
--- a/changelog.d/9620.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a bug introduced in v1.28.0 where the OpenID Connect callback endpoint could error with a `MacaroonInitException`.
diff --git a/changelog.d/9623.bugfix b/changelog.d/9623.bugfix
deleted file mode 100644
index ecccb46105103ccaa901b0bfe66f9a0dae05ed51..0000000000000000000000000000000000000000
--- a/changelog.d/9623.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix Internal Server Error on `GET /_synapse/client/saml2/authn_response` request.
diff --git a/changelog.d/9626.feature b/changelog.d/9626.feature
deleted file mode 100644
index eacba6201b9c3b7a56d2b0ff40ffaedfc6824c0a..0000000000000000000000000000000000000000
--- a/changelog.d/9626.feature
+++ /dev/null
@@ -1 +0,0 @@
-Tell spam checker modules about the SSO IdP a user registered through if one was used.
diff --git a/synapse/__init__.py b/synapse/__init__.py
index 56ca888862b27383afccb91702d37ab0724ef1e8..88be7db1966d764d947b06af6724a9f850573234 100644
--- a/synapse/__init__.py
+++ b/synapse/__init__.py
@@ -48,7 +48,7 @@ try:
 except ImportError:
     pass
 
-__version__ = "1.29.0"
+__version__ = "1.30.0rc1"
 
 if bool(os.environ.get("SYNAPSE_TEST_PATCH_LOG_CONTEXTS", False)):
     # We import here so that we don't have to install a bunch of deps when