diff --git a/docs/release-notes/rl-0.8.md b/docs/release-notes/rl-0.8.md
index d5de83b3..f16f141b 100644
--- a/docs/release-notes/rl-0.8.md
+++ b/docs/release-notes/rl-0.8.md
@@ -106,6 +106,7 @@
 - Add [blink.cmp] support.
 - Add `LazyFile` user event.
 - Migrate language modules from none-ls to conform/nvim-lint
+- Add tsx support in conform and lint
 
 [diniamo](https://github.com/diniamo):
 
diff --git a/modules/plugins/languages/ts.nix b/modules/plugins/languages/ts.nix
index 8589d7ec..1736af2b 100644
--- a/modules/plugins/languages/ts.nix
+++ b/modules/plugins/languages/ts.nix
@@ -204,9 +204,13 @@ in {
     (mkIf cfg.format.enable {
       vim.formatter.conform-nvim = {
         enable = true;
-        setupOpts.formatters_by_ft.typescript = [cfg.format.type];
-        setupOpts.formatters.${cfg.format.type} = {
-          command = getExe cfg.format.package;
+        setupOpts = {
+          formatters_by_ft.typescript = [cfg.format.type];
+          # .tsx files
+          formatters_by_ft.typescriptreact = [cfg.format.type];
+          formatters.${cfg.format.type} = {
+            command = getExe cfg.format.package;
+          };
         };
       };
     })
@@ -215,6 +219,7 @@ in {
       vim.diagnostics.nvim-lint = {
         enable = true;
         linters_by_ft.typescript = cfg.extraDiagnostics.types;
+        linters_by_ft.typescriptreact = cfg.extraDiagnostics.types;
 
         linters = mkMerge (map (name: {
             ${name}.cmd = getExe diagnosticsProviders.${name}.package;