SQLite is an embedded database, not a small imitation of a server database. It can be an excellent fit when an application owns its local data and deployment simplicity matters. Evaluate limits using your read/write pattern rather than a generic size threshold.
Load representative data, enable the intended journal mode, and run concurrent readers and writers. Measure transaction duration and lock waits, especially around long reports. Test migration scripts, foreign keys, and backup while the application is active using a supported method. The SQLite documentation explains locking and WAL behavior.
If your app needs many independent network writers, shared permissions, or central operations, compare a server database on those requirements. Preserve a rollback snapshot and rehearse restore. A good SQLite decision records who owns the file, how it is backed up, and how schema changes reach every installation.