Problem: listSessions returns an empty array even when the user has active sessions. Root Cause (two issues):
Prisma adapter defaults to take: 100 in findMany when no limit is passed
internalAdapter.listSessions() doesn't filter by expiresAt > now in the database query - it only filters after fetching
Combined effect: If a user has >100 expired sessions, active sessions may not be in the first 100 rows returned, causing listSessions to return empty. Reproduction:
User total sessions: 242
Active sessions (expiresAt > now): 1
BetterAuth query (first 100, no order): 100 sessions
After JS filter: 0 active
Affected code:
dist/db/internal-adapter.mjs → listSessions queries without expiresAt filter
dist/api/routes/session.mjs lines 315-317 → filters after fetch
dist/adapters/prisma-adapter → take: limit || 100
Suggested fixes:
Add where: [{ field: "expiresAt", value: new Date(), operator: "gt" }] to listSessions query
Or add sortBy: { field: "expiresAt", direction: "desc" } to get recent sessions first