diff --git a/dvc/repo/metrics/show.py b/dvc/repo/metrics/show.py
--- a/dvc/repo/metrics/show.py
+++ b/dvc/repo/metrics/show.py
@@ -12,7 +12,7 @@
 from dvc.scm import NoSCMError
 from dvc.utils import error_handler, errored_revisions, onerror_collect
 from dvc.utils.collections import ensure_list
-from dvc.utils.serialize import load_yaml
+from dvc.utils.serialize import LOADERS
 
 logger = logging.getLogger(__name__)
 
@@ -71,7 +71,9 @@ def _extract_metrics(metrics, path, rev):
 
 @error_handler
 def _read_metric(path, fs, rev, **kwargs):
-    val = load_yaml(path, fs=fs)
+    suffix = fs.path.suffix(path).lower()
+    loader = LOADERS[suffix]
+    val = loader(path, fs=fs)
     val = _extract_metrics(val, path, rev)
     return val or {}
 

Is this a high priority issue? We don't get many requests for TOML metrics support (that one discord question is the only one in the last couple of years as far as I can tell)
It's not high priority, but a user did request it, so @flippedcoder volunteered to open an issue for it.
Anyone looking for contributing, the place to add the support is here:
https://github.com/iterative/dvc/blob/6c646a70703cc68991eeb3232748b39c759c942c/dvc/repo/metrics/show.py#L70

Please compare that to the `params` which already supports `toml` file:
https://github.com/iterative/dvc/blob/6c646a70703cc68991eeb3232748b39c759c942c/dvc/repo/params/show.py#L53-L55

Also note that, `LOADERS` also supports reading `.py` files which we might need to forbid here, if we use it in the metrics.


diff --git a/tests/func/metrics/test_show.py b/tests/func/metrics/test_show.py
--- a/tests/func/metrics/test_show.py
+++ b/tests/func/metrics/test_show.py
@@ -8,7 +8,7 @@
 from dvc.exceptions import OverlappingOutputPathsError
 from dvc.repo import Repo
 from dvc.utils.fs import remove
-from dvc.utils.serialize import YAMLFileCorruptedError
+from dvc.utils.serialize import JSONFileCorruptedError, YAMLFileCorruptedError
 
 
 def test_show_simple(tmp_dir, dvc, run_copy_metrics):
@@ -31,6 +31,16 @@ def test_show(tmp_dir, dvc, run_copy_metrics):
     }
 
 
+def test_show_toml(tmp_dir, dvc, run_copy_metrics):
+    tmp_dir.gen("metrics_t.toml", "[foo]\nbar = 1.2")
+    run_copy_metrics(
+        "metrics_t.toml", "metrics.toml", metrics=["metrics.toml"]
+    )
+    assert dvc.metrics.show() == {
+        "": {"data": {"metrics.toml": {"data": {"foo": {"bar": 1.2}}}}}
+    }
+
+
 def test_show_targets(tmp_dir, dvc, run_copy_metrics):
     tmp_dir.gen("metrics_t.yaml", "foo: 1.1")
     run_copy_metrics(
@@ -218,7 +228,7 @@ def test_show_malformed_metric(tmp_dir, scm, dvc, caplog):
         dvc.metrics.show(targets=["metric.json"])[""]["data"]["metric.json"][
             "error"
         ],
-        YAMLFileCorruptedError,
+        JSONFileCorruptedError,
     )
 
 

Add TOML support for metrics
Right now, there is only TOML file support for params files. We need to add TOML support for metrics as well.

Here's a [link to the Discord question](https://discord.com/channels/485586884165107732/485596304961962003/865974923079319563) that brought this up.

tests/func/metrics/test_show.py::test_show_toml tests/func/metrics/test_show.py::test_show_malformed_metric
tests/func/metrics/test_show.py::test_show_simple tests/func/metrics/test_show.py::test_show tests/func/metrics/test_show.py::test_show_targets tests/func/metrics/test_show.py::test_show_multiple tests/func/metrics/test_show.py::test_show_branch tests/func/metrics/test_show.py::test_show_subrepo_with_preexisting_tags tests/func/metrics/test_show.py::test_missing_cache tests/func/metrics/test_show.py::test_show_non_metric[True] tests/func/metrics/test_show.py::test_show_non_metric[False] tests/func/metrics/test_show.py::test_show_non_metric_branch[True] tests/func/metrics/test_show.py::test_show_non_metric_branch[False] tests/func/metrics/test_show.py::test_non_metric_and_recurisve_show tests/func/metrics/test_show.py::test_show_falsey tests/func/metrics/test_show.py::test_show_no_repo tests/func/metrics/test_show.py::test_metrics_show_no_target tests/func/metrics/test_show.py::test_show_no_metrics_files tests/func/metrics/test_show.py::test_metrics_show_overlap[True] tests/func/metrics/test_show.py::test_metrics_show_overlap[False] tests/func/metrics/test_show.py::test_log_errors[dvc.yaml-error_path0] tests/func/metrics/test_show.py::test_log_errors[metrics.yaml-error_path1]