Static Type Checking

As your app grows, you can catch a lot of bugs with static typechecking. In contrast to being 'dynamic' which means checking at runtime, being 'static' means that the checking is performed during compilation.

As of React 19, PropTypes runtime checking has become a no-op (React no longer runs the checks at all, with or without warnings), and Flow has become a niche, largely Meta-internal tool by comparison. TypeScript is now the dominant choice for static type checking in React projects and is recommended for any new project; the next couple of sections cover PropTypes and Flow mainly as historical/legacy context for reading older codebases.