diff --git a/config/tsconfig.base.json b/config/tsconfig.base.json
index 0b585359a36..0bfe24208a8 100644
--- a/config/tsconfig.base.json
+++ b/config/tsconfig.base.json
@@ -25,6 +25,12 @@
     "target": "es5",
     "typeRoots": [
       "../node_modules/@types"
+    ],
+    "plugins": [
+      {
+        "name": "tsec",
+        "reportTsecDiagnosticsOnly": true
+      }
     ]
   }
 }
\ No newline at end of file
diff --git a/package.json b/package.json
index 0f11f89a6ce..d90bca30898 100644
--- a/package.json
+++ b/package.json
@@ -38,6 +38,7 @@
     "test:changed": "ts-node-script scripts/ci-test/test_changed.ts",
     "test:setup": "node tools/config.js",
     "test:saucelabs": "node scripts/run_saucelabs.js",
+    "trusted-type-check": "lerna run --scope @firebase/* trusted-type-check --no-bail",
     "docgen": "ts-node-script scripts/docgen/docgen.ts",
     "docgen:compat": "node scripts/docgen-compat/generate-docs.js --api js",
     "lint": "lerna run --scope @firebase/* lint",
@@ -150,6 +151,7 @@
     "terser": "5.16.1",
     "ts-loader": "9.5.1",
     "ts-node": "10.9.1",
+    "tsec": "0.2.8",
     "tslint": "6.1.3",
     "typedoc": "0.16.11",
     "typescript": "4.7.4",
diff --git a/packages/analytics-compat/package.json b/packages/analytics-compat/package.json
index 91d8e0f22ac..9feab2c1356 100644
--- a/packages/analytics-compat/package.json
+++ b/packages/analytics-compat/package.json
@@ -49,6 +49,7 @@
     "test:ci": "node ../../scripts/run_tests_in_ci.js -s test:browser",
     "test:browser": "karma start --single-run",
     "test:browser:debug": "karma start --browsers=Chrome --auto-watch",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "add-compat-overloads": "ts-node-script ../../scripts/build/create-overloads.ts -i ../analytics/dist/analytics-public.d.ts -o dist/src/index.d.ts -a -r Analytics:FirebaseAnalytics -r FirebaseApp:FirebaseAppCompat --moduleToEnhance @firebase/analytics"
   },
   "typings": "dist/src/index.d.ts",
diff --git a/packages/analytics/package.json b/packages/analytics/package.json
index 747dbb3541c..df1afa152ac 100644
--- a/packages/analytics/package.json
+++ b/packages/analytics/package.json
@@ -31,6 +31,7 @@
     "test:ci": "node ../../scripts/run_tests_in_ci.js -s test:all",
     "test:browser": "karma start --single-run --nocache",
     "test:integration": "karma start ./karma.integration.conf.js --single-run --nocache",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "api-report": "api-extractor run --local --verbose",
     "doc": "api-documenter markdown --input temp --output docs",
     "build:doc": "yarn build && yarn doc",
diff --git a/packages/app-check-compat/package.json b/packages/app-check-compat/package.json
index 221f1d4496d..b4a38445b91 100644
--- a/packages/app-check-compat/package.json
+++ b/packages/app-check-compat/package.json
@@ -29,6 +29,7 @@
     "test": "run-p --npm-path npm lint test:browser",
     "test:ci": "node ../../scripts/run_tests_in_ci.js -s test:browser",
     "test:browser": "karma start --single-run --nocache",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "add-compat-overloads": "ts-node-script ../../scripts/build/create-overloads.ts -i ../app-check/dist/app-check-public.d.ts -o dist/src/index.d.ts -a -r AppCheck:FirebaseAppCheck -r FirebaseApp:FirebaseAppCompat --moduleToEnhance @firebase/app-check"
   },
   "peerDependencies": {
diff --git a/packages/app-check/package.json b/packages/app-check/package.json
index d4054ea3f6c..8d71bdfe974 100644
--- a/packages/app-check/package.json
+++ b/packages/app-check/package.json
@@ -29,6 +29,7 @@
     "test": "run-p --npm-path npm lint test:browser",
     "test:ci": "node ../../scripts/run_tests_in_ci.js -s test:browser",
     "test:browser": "karma start --single-run --nocache",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "api-report": "api-extractor run --local --verbose",
     "doc": "api-documenter markdown --input temp --output docs",
     "build:doc": "yarn build && yarn doc",
diff --git a/packages/app-compat/package.json b/packages/app-compat/package.json
index 86ee07473c5..37f05c4a07d 100644
--- a/packages/app-compat/package.json
+++ b/packages/app-compat/package.json
@@ -35,6 +35,7 @@
     "test:browser": "karma start --single-run",
     "test:browser:debug": "karma start --browsers Chrome --auto-watch",
     "test:node": "TS_NODE_FILES=true TS_NODE_CACHE=NO TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc --reporter lcovonly -- mocha test/**/*.test.* src/**/*.test.ts --config ../../config/mocharc.node.js",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "api-report": "api-extractor run --local --verbose",
     "typings:public": "node ../../scripts/build/use_typings.js ./dist/app-compat-public.d.ts"
   },
diff --git a/packages/app/package.json b/packages/app/package.json
index 754197b9573..61681923452 100644
--- a/packages/app/package.json
+++ b/packages/app/package.json
@@ -31,6 +31,7 @@
     "test:all": "run-p --npm-path npm test:browser test:node",
     "test:browser": "karma start --single-run",
     "test:node": "TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc --reporter lcovonly -- mocha src/**/*.test.ts --config ../../config/mocharc.node.js",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "api-report": "api-extractor run --local --verbose",
     "doc": "api-documenter markdown --input temp --output docs",
     "build:doc": "yarn build && yarn doc",
diff --git a/packages/auth-compat/package.json b/packages/auth-compat/package.json
index 8239d3af3c3..15f47c33c8b 100644
--- a/packages/auth-compat/package.json
+++ b/packages/auth-compat/package.json
@@ -44,6 +44,7 @@
     "test:node:integration": "ts-node -O '{\"module\": \"commonjs\", \"target\": \"es6\"}' scripts/run_node_tests.ts --integration",
     "test:webdriver": "rollup -c test/integration/webdriver/static/rollup.config.js && ts-node -O '{\"module\": \"commonjs\", \"target\": \"es6\"}' scripts/run_node_tests.ts --webdriver",
     "test:integration": "firebase emulators:exec --project demo-emulatedproject --only auth \"run-s --npm-path npm test:browser:integration test:node:integration test:webdriver\"",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "add-compat-overloads": "ts-node-script ../../scripts/build/create-overloads.ts -i ../auth/dist/auth-public.d.ts -o dist/auth-compat/index.d.ts -a -r Auth:types.FirebaseAuth -r User:types.User -r FirebaseApp:FirebaseAppCompat --moduleToEnhance @firebase/auth"
   },
   "peerDependencies": {
diff --git a/packages/auth/package.json b/packages/auth/package.json
index d632901d227..6b93b2862ef 100644
--- a/packages/auth/package.json
+++ b/packages/auth/package.json
@@ -111,6 +111,7 @@
     "test:node:integration": "ts-node -O '{\"module\": \"commonjs\", \"target\": \"es6\"}' scripts/run_node_tests.ts --integration",
     "test:node:integration:local": "ts-node -O '{\"module\": \"commonjs\", \"target\": \"es6\"}' scripts/run_node_tests.ts --integration --local",
     "test:webdriver": "rollup -c test/integration/webdriver/static/rollup.config.js && ts-node -O '{\"module\": \"commonjs\", \"target\": \"es6\"}' scripts/run_node_tests.ts --webdriver",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "api-report": "api-extractor run --local --verbose --config ./api-extractor.json && api-extractor run --local --verbose --config ./web-extension/api-extractor.json && api-extractor run --local --verbose --config ./cordova/api-extractor.json",
     "doc": "api-documenter markdown --input temp --output docs",
     "build:doc": "yarn build && yarn doc",
diff --git a/packages/component/package.json b/packages/component/package.json
index b0a220bd1a2..6dd5732a450 100644
--- a/packages/component/package.json
+++ b/packages/component/package.json
@@ -29,7 +29,8 @@
     "test:all": "run-p --npm-path npm test:browser test:node",
     "test:ci": "node ../../scripts/run_tests_in_ci.js -s test:all",
     "test:browser": "karma start --single-run",
-    "test:node": "TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc --reporter lcovonly -- mocha src/**/*.test.ts --config ../../config/mocharc.node.js"
+    "test:node": "TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc --reporter lcovonly -- mocha src/**/*.test.ts --config ../../config/mocharc.node.js",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit"
   },
   "dependencies": {
     "@firebase/util": "1.9.6",
diff --git a/packages/database-compat/package.json b/packages/database-compat/package.json
index a389458ace6..e51c9c6b9de 100644
--- a/packages/database-compat/package.json
+++ b/packages/database-compat/package.json
@@ -47,6 +47,7 @@
     "test:ci": "node ../../scripts/run_tests_in_ci.js -s test",
     "test:browser": "karma start --single-run",
     "test:node": "TS_NODE_FILES=true TS_NODE_CACHE=NO TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc --reporter lcovonly -- mocha 'test/{,!(browser)/**/}*.test.ts' --file src/index.node.ts --config ../../config/mocharc.node.js",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "add-compat-overloads": "ts-node-script ../../scripts/build/create-overloads.ts -i ../database/dist/public.d.ts -o dist/database-compat/src/index.d.ts -a -r Database:types.FirebaseDatabase -r Query:types.Query -r DatabaseReference:types.Reference -r FirebaseApp:FirebaseAppCompat --moduleToEnhance @firebase/database"
   },
   "dependencies": {
diff --git a/packages/database/package.json b/packages/database/package.json
index 1636c776000..120e7ea719e 100644
--- a/packages/database/package.json
+++ b/packages/database/package.json
@@ -41,6 +41,7 @@
     "test:browser": "karma start --single-run",
     "test:node": "TS_NODE_FILES=true TS_NODE_CACHE=NO TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc --reporter lcovonly -- mocha 'test/{,!(browser)/**/}*.test.ts' --file src/index.node.ts --config ../../config/mocharc.node.js",
     "test:emulator": "ts-node --compiler-options='{\"module\":\"commonjs\"}' ../../scripts/emulator-testing/database-test-runner.ts",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "api-report": "TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' ts-node ../../repo-scripts/prune-dts/extract-public-api.ts --package database --packageRoot . --typescriptDts ./dist/src/index.d.ts --rollupDts ./dist/private.d.ts --untrimmedRollupDts ./dist/internal.d.ts --publicDts ./dist/public.d.ts && yarn api-report:api-json",
     "api-report:api-json": "rm -rf temp && api-extractor run --local --verbose",
     "doc": "api-documenter markdown --input temp --output docs",
diff --git a/packages/firebase/package.json b/packages/firebase/package.json
index ffe1753d7d7..54fac494ec3 100644
--- a/packages/firebase/package.json
+++ b/packages/firebase/package.json
@@ -383,7 +383,8 @@
     "build:compat": "rollup -c compat/rollup.config.js",
     "dev": "rollup -c -w",
     "test": "echo 'No test suite for firebase wrapper'",
-    "test:ci": "echo 'No test suite for firebase wrapper'"
+    "test:ci": "echo 'No test suite for firebase wrapper'",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit"
   },
   "dependencies": {
     "@firebase/app": "0.10.5",
diff --git a/packages/firestore-compat/package.json b/packages/firestore-compat/package.json
index 3314be5f1dd..eeebbfcfdde 100644
--- a/packages/firestore-compat/package.json
+++ b/packages/firestore-compat/package.json
@@ -41,6 +41,7 @@
     "test:all": "run-p --npm-path npm test:browser test:node",
     "test:browser": "karma start --single-run",
     "test:node": "mocha --require babel-register.js --require src/index.node.ts --timeout 5000 'test/*.test.ts'",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "add-compat-overloads": "ts-node-script ../../scripts/build/create-overloads.ts -i ../firestore/dist/index.d.ts -o dist/src/index.d.ts -a -r Firestore:types.FirebaseFirestore -r CollectionReference:types.CollectionReference -r DocumentReference:types.DocumentReference -r Query:types.Query -r FirebaseApp:FirebaseAppCompat --moduleToEnhance @firebase/firestore"
   },
   "peerDependencies": {
diff --git a/packages/firestore/package.json b/packages/firestore/package.json
index 2b85dbd91f2..6080c00a3ec 100644
--- a/packages/firestore/package.json
+++ b/packages/firestore/package.json
@@ -46,6 +46,7 @@
     "test:node:persistence:prod": "ts-node ./scripts/run-tests.ts --main=test/register.ts --persistence 'test/{,!(browser|lite)/**/}*.test.ts'",
     "test:travis": "ts-node --compiler-options='{\"module\":\"commonjs\"}' ../../scripts/emulator-testing/firestore-test-runner.ts",
     "test:minified": "(cd ../../integration/firestore ; yarn test)",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "api-report:main": "TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' ts-node ../../repo-scripts/prune-dts/extract-public-api.ts --package firestore --packageRoot . --typescriptDts ./dist/firestore/src/index.d.ts --rollupDts ./dist/private.d.ts --untrimmedRollupDts ./dist/internal.d.ts --publicDts ./dist/index.d.ts",
     "api-report:lite": "TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' ts-node ../../repo-scripts/prune-dts/extract-public-api.ts --package firestore-lite --packageRoot . --typescriptDts ./dist/firestore/lite/index.d.ts --rollupDts ./dist/lite/private.d.ts --untrimmedRollupDts ./dist/lite/internal.d.ts --publicDts ./dist/lite/index.d.ts",
     "api-report:api-json": "rm -rf temp && api-extractor run --local --verbose",
diff --git a/packages/functions-compat/package.json b/packages/functions-compat/package.json
index 525b5de07c1..630357dde2e 100644
--- a/packages/functions-compat/package.json
+++ b/packages/functions-compat/package.json
@@ -59,6 +59,7 @@
     "test:browser:debug": "karma start --browsers=Chrome --auto-watch",
     "test:node": "TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc --reporter lcovonly -- mocha 'src/{,!(browser)/**/}*.test.ts' --file src/index.node.ts --config ../../config/mocharc.node.js",
     "test:emulator": "env FIREBASE_FUNCTIONS_HOST=http://localhost FIREBASE_FUNCTIONS_PORT=5005 run-p --npm-path npm test:node",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "add-compat-overloads": "ts-node-script ../../scripts/build/create-overloads.ts -i ../functions/dist/functions-public.d.ts -o dist/src/index.d.ts -a -r Functions:types.FirebaseFunctions -r FirebaseApp:FirebaseAppCompat --moduleToEnhance @firebase/functions"
   },
   "typings": "dist/src/index.d.ts",
diff --git a/packages/functions/package.json b/packages/functions/package.json
index 19c82878171..d7bc9a32af7 100644
--- a/packages/functions/package.json
+++ b/packages/functions/package.json
@@ -40,6 +40,7 @@
     "test:browser:debug": "karma start --browsers=Chrome --auto-watch",
     "test:node": "TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc --reporter lcovonly -- mocha 'src/{,!(browser)/**/}*.test.ts' --file src/index.node.ts --config ../../config/mocharc.node.js",
     "test:emulator": "env FIREBASE_FUNCTIONS_EMULATOR_ORIGIN=http://localhost:5005 run-p --npm-path npm test:node",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "api-report": "api-extractor run --local --verbose",
     "doc": "api-documenter markdown --input temp --output docs",
     "build:doc": "yarn build && yarn doc",
diff --git a/packages/installations-compat/package.json b/packages/installations-compat/package.json
index eeecb6e0c9a..32c9d32007a 100644
--- a/packages/installations-compat/package.json
+++ b/packages/installations-compat/package.json
@@ -31,6 +31,7 @@
     "test:ci": "node ../../scripts/run_tests_in_ci.js",
     "test:karma": "karma start --single-run",
     "test:debug": "karma start --browsers=Chrome --auto-watch",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "type-check": "tsc -p . --noEmit",
     "serve": "yarn serve:build && yarn serve:host",
     "serve:build": "rollup -c test-app/rollup.config.js",
diff --git a/packages/installations/package.json b/packages/installations/package.json
index 5f0bd82ac79..ee9b20608df 100644
--- a/packages/installations/package.json
+++ b/packages/installations/package.json
@@ -31,6 +31,7 @@
     "test:ci": "node ../../scripts/run_tests_in_ci.js",
     "test:karma": "karma start --single-run",
     "test:debug": "karma start --browsers=Chrome --auto-watch",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "type-check": "tsc -p . --noEmit",
     "serve": "yarn serve:build && yarn serve:host",
     "serve:build": "rollup -c test-app/rollup.config.js",
diff --git a/packages/logger/package.json b/packages/logger/package.json
index 777c4d08f1b..17e64c678d1 100644
--- a/packages/logger/package.json
+++ b/packages/logger/package.json
@@ -29,7 +29,8 @@
     "test:all": "run-p --npm-path npm test:browser test:node",
     "test:browser": "karma start --single-run",
     "test:browser:debug": "karma start --browsers Chrome --auto-watch",
-    "test:node": "TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc --reporter lcovonly -- mocha test/**/*.test.* --config ../../config/mocharc.node.js"
+    "test:node": "TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc --reporter lcovonly -- mocha test/**/*.test.* --config ../../config/mocharc.node.js",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit"
   },
   "license": "Apache-2.0",
   "dependencies": {
diff --git a/packages/messaging-compat/package.json b/packages/messaging-compat/package.json
index e13dbda90d7..9714f23c049 100644
--- a/packages/messaging-compat/package.json
+++ b/packages/messaging-compat/package.json
@@ -32,6 +32,7 @@
     "test:ci": "node ../../scripts/run_tests_in_ci.js",
     "test:karma": "karma start --single-run",
     "test:debug": "karma start --browsers=Chrome --auto-watch",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "type-check": "tsc --noEmit",
     "add-compat-overloads": "ts-node-script ../../scripts/build/create-overloads.ts -i ../messaging/dist/index-public.d.ts -o dist/src/index.d.ts -a -r Messaging:MessagingCompat -r FirebaseApp:FirebaseAppCompat --moduleToEnhance @firebase/messaging"
   },
diff --git a/packages/messaging/package.json b/packages/messaging/package.json
index 6527630cdc5..3062a4d21a8 100644
--- a/packages/messaging/package.json
+++ b/packages/messaging/package.json
@@ -46,6 +46,7 @@
     "api-report:sw": "ts-node-script ../../repo-scripts/prune-dts/extract-public-api.ts --package messaging-sw --packageRoot . --typescriptDts ./dist/src/index.sw.d.ts --rollupDts ./dist/sw/private.d.ts --untrimmedRollupDts ./dist/sw/internal.d.ts --publicDts ./dist/sw/index-public.d.ts",
     "api-report:api-json": "api-extractor run --local --verbose",
     "type-check": "tsc --noEmit",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "typings:public": "node ../../scripts/build/use_typings.js ./dist/index-public.d.ts"
   },
   "license": "Apache-2.0",
diff --git a/packages/performance-compat/package.json b/packages/performance-compat/package.json
index 8d087c3b3af..8d5b6f2b58e 100644
--- a/packages/performance-compat/package.json
+++ b/packages/performance-compat/package.json
@@ -31,6 +31,7 @@
     "test:ci": "node ../../scripts/run_tests_in_ci.js -s test:all",
     "test:browser": "karma start --single-run",
     "test:browser:debug": "karma start --browsers Chrome --auto-watch",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "prettier": "prettier --write '{src,test}/**/*.{js,ts}'",
     "add-compat-overloads": "ts-node-script ../../scripts/build/create-overloads.ts -i ../performance/dist/src/index.d.ts -o dist/src/index.d.ts -a -r FirebasePerformance:FirebasePerformanceCompat -r FirebaseApp:FirebaseAppCompat --moduleToEnhance @firebase/performance"
   },
diff --git a/packages/performance/package.json b/packages/performance/package.json
index ba34de4adfe..c07fc48d817 100644
--- a/packages/performance/package.json
+++ b/packages/performance/package.json
@@ -30,6 +30,7 @@
     "test:ci": "node ../../scripts/run_tests_in_ci.js -s test:browser",
     "test:browser": "karma start --single-run",
     "test:debug": "karma start --browsers=Chrome --auto-watch",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "prettier": "prettier --write '{src,test}/**/*.{js,ts}'",
     "api-report": "api-extractor run --local --verbose",
     "doc": "api-documenter markdown --input temp --output docs",
diff --git a/packages/remote-config-compat/package.json b/packages/remote-config-compat/package.json
index f7315f75b96..4011b3e87cc 100644
--- a/packages/remote-config-compat/package.json
+++ b/packages/remote-config-compat/package.json
@@ -31,6 +31,7 @@
     "test:ci": "node ../../scripts/run_tests_in_ci.js -s test:all",
     "test:browser": "karma start --single-run",
     "test:browser:debug": "karma start --browsers Chrome --auto-watch",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "add-compat-overloads": "ts-node-script ../../scripts/build/create-overloads.ts -i ../remote-config/dist/remote-config-public.d.ts -o dist/src/index.d.ts -a -r RemoteConfig:RemoteConfigCompat -r FirebaseApp:FirebaseAppCompat --moduleToEnhance @firebase/remote-config"
   },
   "license": "Apache-2.0",
diff --git a/packages/remote-config/package.json b/packages/remote-config/package.json
index 32a4b37afa4..be0c7a761c1 100644
--- a/packages/remote-config/package.json
+++ b/packages/remote-config/package.json
@@ -30,6 +30,7 @@
     "test:ci": "node ../../scripts/run_tests_in_ci.js -s test:browser",
     "test:browser": "karma start --single-run",
     "test:debug": "karma start --browsers=Chrome --auto-watch",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "prettier": "prettier --write '{src,test}/**/*.{js,ts}'",
     "api-report": "api-extractor run --local --verbose",
     "doc": "api-documenter markdown --input temp --output docs",
diff --git a/packages/rules-unit-testing/package.json b/packages/rules-unit-testing/package.json
index f188c3fc7b5..d8ec9bb82a1 100644
--- a/packages/rules-unit-testing/package.json
+++ b/packages/rules-unit-testing/package.json
@@ -32,6 +32,7 @@
     "test:nyc": "TS_NODE_CACHE=NO TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc --reporter lcovonly -- mocha 'test/{,!(browser)/**/}*.test.ts' --config ./mocharc.node.js",
     "test": "(cd functions && yarn) && firebase --project=demo-foo --debug emulators:exec 'yarn test:nyc'",
     "test:ci": "node ../../scripts/run_tests_in_ci.js -s test",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "api-report": "api-extractor run --local --verbose",
     "doc": "api-documenter markdown --input temp --output docs",
     "build:doc": "yarn build && yarn doc"
diff --git a/packages/storage-compat/package.json b/packages/storage-compat/package.json
index 65c748e4a38..7373cd79bbd 100644
--- a/packages/storage-compat/package.json
+++ b/packages/storage-compat/package.json
@@ -31,6 +31,7 @@
     "test:browser": "karma start --single-run",
     "test:node": "TS_NODE_FILES=true TS_NODE_CACHE=NO TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc --reporter lcovonly -- mocha 'test/{,!(browser)/**/}*.test.ts' --file src/index.ts --config ../../config/mocharc.node.js",
     "test:debug": "karma start --browser=Chrome",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "prettier": "prettier --write 'src/**/*.ts' 'test/**/*.ts'",
     "add-compat-overloads": "ts-node-script ../../scripts/build/create-overloads.ts -i ../storage/dist/storage-public.d.ts -o dist/src/index.d.ts -a -r FirebaseStorage:types.FirebaseStorage -r StorageReference:types.Reference -r FirebaseApp:FirebaseAppCompat --moduleToEnhance @firebase/storage"
   },
diff --git a/packages/storage/package.json b/packages/storage/package.json
index f92ad266236..cc0982d5443 100644
--- a/packages/storage/package.json
+++ b/packages/storage/package.json
@@ -40,6 +40,7 @@
     "test:browser": "karma start --single-run",
     "test:node": "TS_NODE_FILES=true TS_NODE_CACHE=NO TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc --reporter lcovonly -- mocha 'test/{,!(browser)/**/}*.test.ts' --file src/index.node.ts --config ../../config/mocharc.node.js",
     "test:debug": "karma start --browser=Chrome",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "prettier": "prettier --write 'src/**/*.ts' 'test/**/*.ts'",
     "api-report": "api-extractor run --local --verbose && ts-node-script ../../repo-scripts/prune-dts/prune-dts.ts --input dist/storage-public.d.ts --output dist/storage-public.d.ts",
     "typings:public": "node ../../scripts/build/use_typings.js ./dist/storage-public.d.ts"
diff --git a/packages/template/package.json b/packages/template/package.json
index 5f50c9315e3..f095361a4b7 100644
--- a/packages/template/package.json
+++ b/packages/template/package.json
@@ -37,7 +37,8 @@
     "test:ci": "node ../../scripts/run_tests_in_ci.js -s test:all",
     "test:all": "run-p --npm-path npm test:browser test:node",
     "test:browser": "karma start --single-run",
-    "test:node": "TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc --reporter lcovonly -- mocha src/**/*.test.* --config ../../config/mocharc.node.js"
+    "test:node": "TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc --reporter lcovonly -- mocha src/**/*.test.* --config ../../config/mocharc.node.js",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit"
   },
   "peerDependencies": {
     "@firebase/app": "0.x",
diff --git a/packages/util/package.json b/packages/util/package.json
index a61d64055c5..c101d29426a 100644
--- a/packages/util/package.json
+++ b/packages/util/package.json
@@ -38,6 +38,7 @@
     "test:all": "run-p --npm-path npm test:browser test:node",
     "test:browser": "karma start --single-run",
     "test:node": "TS_NODE_CACHE=NO TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc --reporter lcovonly -- mocha test/**/*.test.* --config ../../config/mocharc.node.js",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit",
     "api-report": "api-extractor run --local --verbose",
     "typings:public": "node ../../scripts/build/use_typings.js ./dist/util-public.d.ts"
   },
diff --git a/packages/vertexai/package.json b/packages/vertexai/package.json
index 5c21f08f7cd..3a111424f34 100644
--- a/packages/vertexai/package.json
+++ b/packages/vertexai/package.json
@@ -38,7 +38,8 @@
     "test:ci": "yarn testsetup && node ../../scripts/run_tests_in_ci.js -s test",
     "test:browser": "yarn testsetup && karma start --single-run",
     "api-report": "api-extractor run --local --verbose",
-    "typings:public": "node ../../scripts/build/use_typings.js ./dist/vertexai-preview-public.d.ts"
+    "typings:public": "node ../../scripts/build/use_typings.js ./dist/vertexai-preview-public.d.ts",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit"
   },
   "peerDependencies": {
     "@firebase/app": "0.x",
@@ -75,4 +76,4 @@
     ],
     "reportDir": "./coverage/node"
   }
-}
\ No newline at end of file
+}
diff --git a/packages/webchannel-wrapper/package.json b/packages/webchannel-wrapper/package.json
index 81a9fe5f902..9fa97ba1c65 100644
--- a/packages/webchannel-wrapper/package.json
+++ b/packages/webchannel-wrapper/package.json
@@ -28,7 +28,8 @@
     "dev": "watch 'yarn build' src",
     "build": "rollup -c",
     "test": "echo 'No test suite for webchannel-wrapper'",
-    "test:ci": "echo 'No test suite for webchannel-wrapper'"
+    "test:ci": "echo 'No test suite for webchannel-wrapper'",
+    "trusted-type-check": "tsec -p tsconfig.json --noEmit"
   },
   "license": "Apache-2.0",
   "devDependencies": {
diff --git a/yarn.lock b/yarn.lock
index f8df951e815..1cc6d6856e8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -12442,7 +12442,7 @@ minimatch@^3.0.0, minimatch@^3.0.4:
   dependencies:
     brace-expansion "^1.1.7"
 
-minimatch@^3.1.1, minimatch@^3.1.2:
+minimatch@^3.0.3, minimatch@^3.1.1, minimatch@^3.1.2:
   version "3.1.2"
   resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
   integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
@@ -17025,6 +17025,14 @@ tsconfig-paths@^3.14.1:
     minimist "^1.2.6"
     strip-bom "^3.0.0"
 
+tsec@0.2.8:
+  version "0.2.8"
+  resolved "https://registry.npmjs.org/tsec/-/tsec-0.2.8.tgz#a9e7492b144fcff14f1f36327fa84a2d54c4e211"
+  integrity sha512-d2vdTEtLbPzTs57ygzzPk6QrdW1lA8SBAoHZCVvAyC3R1LTjsQ2eGg/XRmtoCpXOVIflVtMsxtzk7eTHwT+DjQ==
+  dependencies:
+    glob "^7.1.1"
+    minimatch "^3.0.3"
+
 tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0:
   version "1.14.1"
   resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz"