diff --git a/.github/workflows/lint-js.yml b/.github/workflows/lint-js.yml
index 44929f63db696789b381700ea11b2568151f230b..e0c309c7362bc06e52a89acd18969f0b20d737da 100644
--- a/.github/workflows/lint-js.yml
+++ b/.github/workflows/lint-js.yml
@@ -6,22 +6,28 @@ on:
     paths:
       - 'package.json'
       - 'yarn.lock'
+      - 'tsconfig.json'
       - '.nvmrc'
       - '.prettier*'
       - '.eslint*'
       - '**/*.js'
       - '**/*.jsx'
+      - '**/*.ts'
+      - '**/*.tsx'
       - '.github/workflows/lint-js.yml'
 
   pull_request:
     paths:
       - 'package.json'
       - 'yarn.lock'
+      - 'tsconfig.json'
       - '.nvmrc'
       - '.prettier*'
       - '.eslint*'
       - '**/*.js'
       - '**/*.jsx'
+      - '**/*.ts'
+      - '**/*.tsx'
       - '.github/workflows/lint-js.yml'
 
 jobs:
@@ -43,3 +49,6 @@ jobs:
 
       - name: ESLint
         run: yarn test:lint:js
+
+      - name: Typecheck
+        run: yarn test:typecheck
diff --git a/.prettierignore b/.prettierignore
index 2ea407533335eb9a056daa54749bd1ce9171e1df..9bdf76911220006e2485c8f08a8d502e2fc2b6cb 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -70,6 +70,8 @@ app/javascript/styles/mastodon/reset.scss
 # Ignore Javascript pending https://github.com/mastodon/mastodon/pull/23631
 *.js
 *.jsx
+*.ts
+*.tsx
 
 # Ignore HTML till cleaned and included in CI
 *.html