TypeScript releases land roughly every quarter, and most teams reflexively bump versions without ever investigating the new features. This is fine — but you're leaving real ergonomic wins on the table. Here's our verdict on the 5.5 release after a full quarter using it across half a dozen projects.
Inferred type predicates: the quiet star
Before 5.5, narrowing types via filter callbacks required either a manual type predicate or a non-null assertion downstream. TypeScript can now infer the predicate automatically when the callback returns a sufficiently obvious boolean expression. The result is that hundreds of `is X` helper functions across our codebases have been quietly deleted in PRs since the upgrade.
Regular expression syntax checking
TypeScript now reports syntactic errors in regex literals at compile time. This is the kind of feature you don't notice until it saves you from a runtime SyntaxError that would have crashed a worker in production. Worth turning on. No reason not to.
Isolated declarations: skip unless you're a library
Isolated declarations let you generate .d.ts files without doing a full type-check pass — much faster, but only if every exported symbol has explicit type annotations. For application code, the constraint is annoying and the build-time savings small. For library authors with thousands of exports, it can cut publish times dramatically.
What we're not adopting
The 'type imports as values' shorthand is technically nice but introduces an inconsistency we don't want to teach to junior engineers. We're sticking with explicit `import type` for clarity. And the various performance tweaks to the language service are wonderful but invisible — no policy needed.
