Not necessarily. The current replacement path for Vercel KV-style usage is usually Upstash Redis through Marketplace, but it does not have to be one shared database for every project.
Upstash’s current Redis pricing page says you can create up to 10 Redis databases for free, then additional databases are charged after that: https://upstash.com/pricing/redis
So if you only need a few projects, I’d first try creating separate Redis databases from the Upstash console, then connect each one to the relevant Vercel project by adding the generated env vars for that project:
UPSTASH_REDIS_REST_URL
UPSTASH_REDIS_REST_TOKEN
If the Marketplace flow is only showing one database from inside Vercel, that may just be the integration/provisioning UI path rather than the actual Upstash account limit. Creating/managing the databases directly in Upstash and then adding the env vars in Vercel should still work.
For small projects where hard isolation is not important, another option is one Redis database with key prefixes per project/environment:
But if you want the same mental model as “one KV store per project,” I’d use separate Upstash Redis databases until you hit the provider’s free database or usage limits.
You’re not missing something — I think my earlier wording was too broad.
Looking again, the Upstash pricing page/UI is not as simple as “10 free Redis databases” in the same way Vercel KV used to feel like “one store per project.” The free Redis plan appears to be limited to 1 free database in the plan comparison, while additional databases may require moving into their paid / usage-based setup.
So for the exact old Vercel KV experience of “one separate KV database per Vercel project at no cost,” I don’t think there is currently a perfect 1:1 replacement.
The practical options seem to be:
1. Use one Upstash Redis database and separate projects with key prefixes
2. Use separate Upstash Redis databases if you’re okay with their paid/usage-based limits
3. Use a different storage provider if you need free per-project isolation
For small apps, key prefixes can work fine, for example: