diff --git a/MODULE.bazel b/MODULE.bazel
index 60f216d6a8..e1e8115048 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -22,45 +22,42 @@ module(
 # Regular dependencies
 # ====================
 
-bazel_dep(name = "abseil-cpp", version = "20250512.1", repo_name = "com_google_absl")
-bazel_dep(name = "apple_support", version = "1.17.1", repo_name = "build_bazel_apple_support")
-bazel_dep(name = "bazel_skylib", version = "1.7.1")
+bazel_dep(name = "abseil-cpp", version = "20250814.1", repo_name = "com_google_absl")
+bazel_dep(name = "apple_support", version = "1.24.2", repo_name = "build_bazel_apple_support")
+bazel_dep(name = "bazel_skylib", version = "1.8.1")
 bazel_dep(name = "boringssl", version = "0.20241024.0")  # mistmatched 20241211
-bazel_dep(name = "c-ares", version = "1.19.1", repo_name = "com_github_cares_cares")
-bazel_dep(name = "envoy_api", version = "0.0.0-20250128-4de3c74")
-bazel_dep(name = "googleapis", version = "0.0.0-20240819-fe8ba054a", repo_name = "com_google_googleapis")
+bazel_dep(name = "c-ares", version = "1.34.5.bcr.1", repo_name = "com_github_cares_cares")
+bazel_dep(name = "envoy_api", version = "0.0.0-20251105-4a2b9a3")
+bazel_dep(name = "googleapis", version = "0.0.0-20251003-2193a2bf", repo_name = "com_google_googleapis")
 bazel_dep(name = "googletest", version = "1.17.0", repo_name = "com_google_googletest")
 bazel_dep(name = "opencensus-cpp", version = "0.0.0-20230502-50eb5de.bcr.2", repo_name = "io_opencensus_cpp")
 bazel_dep(name = "openssl", version = "3.3.1.bcr.1")
 bazel_dep(name = "opentelemetry-cpp", version = "1.19.0", repo_name = "io_opentelemetry_cpp")
-bazel_dep(name = "platforms", version = "0.0.10")
-bazel_dep(name = "protobuf", version = "31.1", repo_name = "com_google_protobuf")
-bazel_dep(name = "protoc-gen-validate", version = "1.2.1.bcr.1", repo_name = "com_envoyproxy_protoc_gen_validate")  # Not needed directly
-bazel_dep(name = "re2", version = "2024-07-02", repo_name = "com_googlesource_code_re2")  # mistmached 2022-04-01
-bazel_dep(name = "rules_apple", version = "3.16.0", repo_name = "build_bazel_rules_apple")
-bazel_dep(name = "rules_cc", version = "0.0.17")
-bazel_dep(name = "rules_proto", version = "7.0.2")
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "protobuf", version = "33.0", repo_name = "com_google_protobuf")
+bazel_dep(name = "re2", version = "2024-07-02.bcr.1", repo_name = "com_googlesource_code_re2")  # mistmached 2022-04-01
+bazel_dep(name = "rules_apple", version = "4.1.0", repo_name = "build_bazel_rules_apple")
+bazel_dep(name = "rules_cc", version = "0.2.13")
+bazel_dep(name = "rules_proto", version = "7.1.0")
 bazel_dep(name = "xds", version = "0.0.0-20240423-555b57e", repo_name = "com_github_cncf_xds")  # mismatched 20231116
 bazel_dep(name = "zlib", version = "1.3.1.bcr.5")
+bazel_dep(name = "rules_shell", version = "0.6.1")
 
-switched_rules = use_extension("@com_google_googleapis//:extensions.bzl", "switched_rules")
-switched_rules.use_languages(
-    cc = True,
-    grpc = True,
-    python = True,
-)
+# Only for version bump
+bazel_dep(name = "cel-spec", version = "0.24.0", repo_name = None)
+bazel_dep(name = "protoc-gen-validate", version = "1.2.1.bcr.2", repo_name = "com_envoyproxy_protoc_gen_validate")  # Not needed directly
+bazel_dep(name = "rules_swift", version = "3.1.2")
 
 # Development dependencies
 # ========================
 
 bazel_dep(name = "fuzztest", version = "20241028.0", dev_dependency = True, repo_name = "com_google_fuzztest")  # mistmached 2023-05-16
-bazel_dep(name = "google_benchmark", version = "1.9.0", dev_dependency = True, repo_name = "com_github_google_benchmark")
-bazel_dep(name = "rules_shell", version = "0.4.0", dev_dependency = True)
+bazel_dep(name = "google_benchmark", version = "1.9.4", dev_dependency = True, repo_name = "com_github_google_benchmark")
 
 # Python dependencies
 # ===================
 
-bazel_dep(name = "rules_python", version = "1.5.4")
+bazel_dep(name = "rules_python", version = "1.6.0")
 
 PYTHON_VERSIONS = [
     "3.9",
@@ -68,7 +65,6 @@ PYTHON_VERSIONS = [
     "3.11",
     "3.12",
     "3.13",
-    "3.14.0b2",
 ]
 
 python = use_extension("@rules_python//python/extensions:python.bzl", "python")
@@ -95,3 +91,13 @@ pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
 use_repo(pip, "grpc_python_dependencies")
 
 bazel_dep(name = "cython", version = "3.0.11-1")
+
+http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+
+http_archive(
+  name = "typing_extensions",
+  url = "https://github.com/python/typing_extensions/archive/4.12.2.tar.gz",
+  sha256 = "bf6f56b36d8bc9156e518eb1cc37a146284082fa53522033f772aefbecfd15fc",
+  strip_prefix = "typing_extensions-4.12.2",
+  build_file = "//third_party:typing_extensions.BUILD",
+)
diff --git a/bazel/cc_grpc_library.bzl b/bazel/cc_grpc_library.bzl
index 3f4f5347fb..f6c3720b12 100644
--- a/bazel/cc_grpc_library.bzl
+++ b/bazel/cc_grpc_library.bzl
@@ -14,6 +14,7 @@
 """Generates and compiles C++ grpc stubs from proto_library rules."""
 
 load("@com_google_protobuf//bazel:cc_proto_library.bzl", "cc_proto_library")
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
 load("@rules_proto//proto:defs.bzl", "proto_library")
 load("//bazel:generate_cc.bzl", "generate_cc")
 load("//bazel:protobuf.bzl", "well_known_proto_libs")
@@ -111,8 +112,7 @@ def cc_grpc_library(
             allow_deprecated = allow_deprecated,
             **kwargs
         )
-
-        native.cc_library(
+        cc_library(
             name = name,
             srcs = [":" + codegen_grpc_target],
             hdrs = [":" + codegen_grpc_target],
diff --git a/bazel/grpc_build_system.bzl b/bazel/grpc_build_system.bzl
index a3b8923b6e..aaba40dacc 100644
--- a/bazel/grpc_build_system.bzl
+++ b/bazel/grpc_build_system.bzl
@@ -32,8 +32,14 @@ load("@build_bazel_rules_apple//apple:ios.bzl", "ios_unit_test")
 load("@build_bazel_rules_apple//apple/testing/default_runner:ios_test_runner.bzl", "ios_test_runner")
 load("@com_google_protobuf//bazel:cc_proto_library.bzl", "cc_proto_library")
 load("@com_google_protobuf//bazel:upb_proto_library.bzl", "upb_proto_library", "upb_proto_reflection_library")
+load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
+load("@rules_cc//cc:cc_test.bzl", "cc_test")
+load("@rules_cc//cc:objc_library.bzl", "objc_library")
 load("@rules_proto//proto:defs.bzl", "proto_library")
 load("@rules_python//python:defs.bzl", "py_binary")
+load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
+load("@rules_shell//shell:sh_test.bzl", "sh_test")
 load("//bazel:cc_grpc_library.bzl", "cc_grpc_library")
 load("//bazel:copts.bzl", "GRPC_DEFAULT_COPTS")
 load("//bazel:experiments.bzl", "EXPERIMENTS", "EXPERIMENT_ENABLES", "EXPERIMENT_POLLERS")
@@ -155,7 +161,7 @@ def grpc_cc_library(
     # See b/391433873.
     if "fuzztest" in external_deps and "grpc-fuzztest" not in tags:
         tags = tags + ["grpc-fuzztest"]
-    native.cc_library(
+    cc_library(
         name = name,
         srcs = srcs,
         defines = defines +
@@ -190,7 +196,7 @@ def grpc_cc_library(
     )
 
 def grpc_proto_plugin(name, srcs = [], deps = []):
-    native.cc_binary(
+    cc_binary(
         name = name + "_native",
         srcs = srcs,
         deps = deps,
@@ -293,7 +299,7 @@ def ios_cc_test(
         device_type = "iPhone X",
     )
     if not any([t for t in tags if t.startswith("no_test_ios")]):
-        native.objc_library(
+        objc_library(
             name = test_lib_ios,
             srcs = kwargs.get("srcs"),
             deps = kwargs.get("deps"),
@@ -585,8 +591,7 @@ def grpc_cc_test(name, srcs = [], deps = [], external_deps = [], args = [], data
             flaky = True,
             **test_args
         )
-
-    native.cc_library(
+    cc_library(
         name = "%s_TEST_LIBRARY" % name,
         testonly = 1,
         srcs = srcs,
@@ -600,7 +605,7 @@ def grpc_cc_test(name, srcs = [], deps = [], external_deps = [], args = [], data
             fail("srcs changed")
         if poller_config["deps"] != core_deps:
             fail("deps changed: %r --> %r" % (deps, poller_config["deps"]))
-        native.cc_test(
+        cc_test(
             name = poller_config["name"],
             deps = ["%s_TEST_LIBRARY" % name],
             tags = poller_config["tags"],
@@ -629,7 +634,7 @@ def grpc_cc_binary(name, srcs = [], deps = [], external_deps = [], args = [], da
     """
     visibility = _update_visibility(visibility)
     copts = []
-    native.cc_binary(
+    cc_binary(
         name = name,
         srcs = srcs,
         args = args,
@@ -695,7 +700,7 @@ def grpc_sh_test(name, srcs = [], args = [], data = [], uses_polling = True, siz
     }
 
     for poller_config in expand_tests(name, srcs, [], tags, args, exclude_pollers, uses_polling, uses_event_engine, flaky):
-        native.sh_test(
+        sh_test(
             name = poller_config["name"],
             srcs = poller_config["srcs"],
             deps = poller_config["deps"],
@@ -707,7 +712,7 @@ def grpc_sh_test(name, srcs = [], args = [], data = [], uses_polling = True, siz
         )
 
 def grpc_sh_binary(name, srcs, data = []):
-    native.sh_binary(
+    sh_binary(
         name = name,
         srcs = srcs,
         data = data,
@@ -794,8 +799,7 @@ def grpc_objc_library(
         deps: dependencies
         visibility: visibility, default to public
     """
-
-    native.objc_library(
+    objc_library(
         name = name,
         hdrs = hdrs,
         srcs = srcs,
diff --git a/third_party/address_sorting/address_sorting.bzl b/third_party/address_sorting/address_sorting.bzl
index 05b4c6d847..323f2353b7 100644
--- a/third_party/address_sorting/address_sorting.bzl
+++ b/third_party/address_sorting/address_sorting.bzl
@@ -28,8 +28,10 @@
 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.
 
-def address_sorting_cc_library(name, srcs, hdrs, copts, includes, linkopts=[]):
-    native.cc_library(
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
+
+def address_sorting_cc_library(name, srcs, hdrs, copts, includes, linkopts = []):
+    cc_library(
         name = name,
         srcs = srcs,
         hdrs = hdrs,
diff --git a/third_party/typing_extensions.BUILD b/third_party/typing_extensions.BUILD
index 9d8c77f0cb..f2e1524752 100644
--- a/third_party/typing_extensions.BUILD
+++ b/third_party/typing_extensions.BUILD
@@ -1,3 +1,5 @@
+load("@rules_python//python:defs.bzl", "py_library")
+
 genrule(
     name = "copy_typing_extensions",
     srcs = ["src/typing_extensions.py"],
diff --git a/third_party/xxhash/BUILD b/third_party/xxhash/BUILD
index 91d7bd0566..8c32e0bfc2 100644
--- a/third_party/xxhash/BUILD
+++ b/third_party/xxhash/BUILD
@@ -1,3 +1,5 @@
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
+
 # TODO(donnadionne): describe this package.
 cc_library(
     name = "xxhash",
