diff --git a/CMakeLists.txt b/CMakeLists.txt
index dec67470..3ec7eaa9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,6 @@
set (CMAKE_FIND_NO_INSTALL_PREFIX TRUE FORCE)
cmake_minimum_required (VERSION 3.13)
-project(treelite LANGUAGES CXX C VERSION 2.2.2)
+project(treelite LANGUAGES CXX C VERSION 2.3.0)
set(CMAKE_CXX_STANDARD 14)
diff --git a/python/treelite/VERSION b/python/treelite/VERSION
index b1b25a5f..276cbf9e 100644
--- a/python/treelite/VERSION
+++ b/python/treelite/VERSION
@@ -1 +1 @@
-2.2.2
+2.3.0
diff --git a/runtime/java/treelite4j/pom.xml b/runtime/java/treelite4j/pom.xml
index d26423b5..b0ae82df 100644
--- a/runtime/java/treelite4j/pom.xml
+++ b/runtime/java/treelite4j/pom.xml
@@ -5,7 +5,7 @@
4.0.0
ml.dmlc
treelite4j
- 2.2.2
+ 2.3.0
jar
UTF-8
diff --git a/runtime/python/treelite_runtime/VERSION b/runtime/python/treelite_runtime/VERSION
index b1b25a5f..276cbf9e 100644
--- a/runtime/python/treelite_runtime/VERSION
+++ b/runtime/python/treelite_runtime/VERSION
@@ -1 +1 @@
-2.2.2
+2.3.0