Problem: URL search params are evaluated at runtime
Problem: URL search params are evaluated at runtime. So they aren't strongly typed, and they're a hassle in TypeScript.
Solution:
1. Abstract reads and writes
2. Validate search params via Zod
Example: This React hook.
