diff --git a/docs/content/posts/2026-05-08-release-2.2.1.md b/docs/content/posts/2026-05-08-release-2.2.1.md
new file mode 100644
index 0000000000..90c9c6a7bc
--- /dev/null
+++ b/docs/content/posts/2026-05-08-release-2.2.1.md
@@ -0,0 +1,143 @@
+---
+title: "Apache Flink 2.2.1 Release Announcement"
+date: "2026-05-08T00:00:00.000Z"
+aliases:
+- /news/2026/05/08/release-2.2.1.html
+authors:
+- snuyanzin:
+ name: "Sergey Nuyanzin"
+
+---
+
+The Apache Flink Community is pleased to announce the first bug fix release of the Flink 2.2 series.
+
+This release includes 44 bug fixes, vulnerability fixes, and minor improvements for Flink 2.2.
+Below you will find a list of all bug fixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see:
+[JIRA](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315522&version=12356561).
+
+We highly recommend all users upgrade to Flink 2.2.1 or higher.
+
+# Release Artifacts
+
+## Maven Dependencies
+
+```xml
+
+ org.apache.flink
+ flink-java
+ 2.2.1
+
+
+ org.apache.flink
+ flink-streaming-java
+ 2.2.1
+
+
+ org.apache.flink
+ flink-clients
+ 2.2.1
+
+```
+
+## Binaries
+
+You can find the binaries on the updated [Downloads page]({{< relref "downloads" >}}).
+
+## Docker Images
+
+* [library/flink](https://hub.docker.com/_/flink/tags?page=1&name=2.2.1) (official images)
+* [apache/flink](https://hub.docker.com/r/apache/flink/tags?page=1&name=2.2.1) (ASF repository)
+
+## PyPi
+
+* [apache-flink==2.2.1](https://pypi.org/project/apache-flink/2.2.1/)
+
+# Release Notes
+
+
+
+ Release Notes - Flink - Version 2.2.1
+
+
Bug
+
+
+- [FLINK-33217] - Flink SQL: UNNEST fails with on LEFT JOIN with NOT NULL type in array
+
+- [FLINK-38585] - Pyflink's thread mode may not work when using shipped venv.zip archive as virtual env
+
+- [FLINK-38624] - Flink 2.1 Job Failure: Type Mismatch Exception in StreamPhysicalOverAggregateRule (TIMESTAMP(3) vs TIMESTAMP(3) ROWTIME)
+
+- [FLINK-38703] - ConcurrentModificationException in FineGrainedResourceManager during reporting metrics
+
+- [FLINK-38704] - Metrics reporter setup does not load Prometheus with correct configs/port
+
+- [FLINK-38720] - Nested nullability might lead to class cast RexCall cannot be cast to class RexFieldAccess
+
+- [FLINK-38797] - PyFlink CsvSchemaBuilder.set_null_value method missing return self
+
+- [FLINK-38815] - The debug log will print the sensitive information of data security cookie certification in task manager and jobmanager
+
+- [FLINK-38824] - Incorrect default values for primitive types
+
+- [FLINK-38832] - Projection pushdown of count(*) in planner changes
+
+- [FLINK-38916] - MultiJoin produces incorrect results for OR join conditions when parallelism is greater than 1
+
+- [FLINK-38950] - Views with window TVFs and ORDER BY generate malformed SQL with duplicated ORDER BY clauses
+
+- [FLINK-38951] - Upgrade pemja to 0.5.6
+
+- [FLINK-38957] - ProcessTableFunction UDFs cannot be loaded via CompiledPlan
+
+- [FLINK-38986] - SSL connection failures in BlobClientSslTest / NettyClientServerSslTest with latest JDK versions
+
+- [FLINK-39015] - Fix MultiJoin RowData behaviour for HeapStateBackend
+
+- [FLINK-39017] - Flink WebUI Job graph node click interaction fails in Chrome 144+ (PointerEvents suppression)
+
+- [FLINK-39052] - ModuleNotFoundError: No module named 'pkg_resources'
+
+- [FLINK-39130] - Allow native types to be used for MetricConfig
+
+- [FLINK-39150] - Join operator crashes jobs when using custom types or custom type serializers
+
+- [FLINK-39162] - The data of the custom partitioner is corrupted when unaligned checkpoint is enabled
+
+- [FLINK-39242] - Method getDataType does not exist error when getting columns from ResolvedSchema
+
+- [FLINK-39293] - SqlParserException if I select from a view that uses MATCH_RECOGNIZE
+
+- [FLINK-39355] - Table program cannot be compiled for JSON_OBJECT
+
+- [FLINK-39360] - LIKE clause doesn't support some patterns
+
+- [FLINK-39371] - CurrentDatabase fails for some patterns
+
+- [FLINK-39394] - Job overview metrics (business/backpressure/data skew) are showing N/A when some nodes are finished
+
+- [FLINK-39534] - Upgrade pemja to 0.5.7
+
+- [FLINK-39547] - User-provided Scala library breaks table-planner
+
+
+
+ Improvement
+
+
+- [FLINK-38748] - Enhance the switching logic of AdaptiveScheduler from Restarting to CreatingExecutionGraph and accelerate the transition.
+
+- [FLINK-38810] - Use splittable timers in Interval Join
+
+- [FLINK-38914] - Redirect users to deeplink when visiting an outdated or master docs page (instead of stable)
+
+- [FLINK-38924] - Redirect users to documentation home page when encountering a 404
+
+- [FLINK-38925] - Update Matomo URL to the right domain
+
+- [FLINK-38955] - Add canonical tag to generated Javadoc and PyDocs
+
+- [FLINK-39022] - Update default cipher suite value in SecurityOptions
+
+- [FLINK-39139] - Update lz4-java to 1.10.3
+
+
diff --git a/docs/data/flink.yml b/docs/data/flink.yml
index 5c946ff367..8899e9e11a 100644
--- a/docs/data/flink.yml
+++ b/docs/data/flink.yml
@@ -16,13 +16,13 @@
# under the License
2.2:
- name: "Apache Flink 2.2.0"
- binary_release_url: "https://www.apache.org/dyn/closer.lua/flink/flink-2.2.0/flink-2.2.0-bin-scala_2.12.tgz"
- binary_release_asc_url: "https://downloads.apache.org/flink/flink-2.2.0/flink-2.2.0-bin-scala_2.12.tgz.asc"
- binary_release_sha512_url: "https://downloads.apache.org/flink/flink-2.2.0/flink-2.2.0-bin-scala_2.12.tgz.sha512"
- source_release_url: "https://www.apache.org/dyn/closer.lua/flink/flink-2.2.0/flink-2.2.0-src.tgz"
- source_release_asc_url: "https://downloads.apache.org/flink/flink-2.2.0/flink-2.2.0-src.tgz.asc"
- source_release_sha512_url: "https://downloads.apache.org/flink/flink-2.2.0/flink-2.2.0-src.tgz.sha512"
+ name: "Apache Flink 2.2.1"
+ binary_release_url: "https://www.apache.org/dyn/closer.lua/flink/flink-2.2.1/flink-2.2.1-bin-scala_2.12.tgz"
+ binary_release_asc_url: "https://downloads.apache.org/flink/flink-2.2.1/flink-2.2.1-bin-scala_2.12.tgz.asc"
+ binary_release_sha512_url: "https://downloads.apache.org/flink/flink-2.2.1/flink-2.2.1-bin-scala_2.12.tgz.sha512"
+ source_release_url: "https://www.apache.org/dyn/closer.lua/flink/flink-2.2.1/flink-2.2.1-src.tgz"
+ source_release_asc_url: "https://downloads.apache.org/flink/flink-2.2.1/flink-2.2.1-src.tgz.asc"
+ source_release_sha512_url: "https://downloads.apache.org/flink/flink-2.2.1/flink-2.2.1-src.tgz.sha512"
2.1:
name: "Apache Flink 2.1.1"
diff --git a/docs/data/release_archive.yml b/docs/data/release_archive.yml
index 4067be24e3..c24dd932ef 100644
--- a/docs/data/release_archive.yml
+++ b/docs/data/release_archive.yml
@@ -1,6 +1,11 @@
release_archive:
flink:
- - version_short: "1.20"
+ -
+ version_short: "2.2"
+ version_long: 2.2.1
+ release_date: 2026-05-08
+ -
+ version_short: "1.20"
version_long: 1.20.4
release_date: 2026-04-22
-