Data Bugs
// 5 bugs
Bugs involving incorrect, duplicated, stale, missing, or inconsistent data across the application.
// Why it matters
Data bugs often go unnoticed until they cause real damage. Duplicate records, a value that silently fails to save, or stale cache returning old data can corrupt reports, confuse users, and create support issues that are difficult to trace back to their source.
// Common symptoms
- Duplicate record created after submitting a form once
- Updated value reverts to the old value after a page refresh
- Deleted record still appears in a list or search result
- Decimal value is rounded incorrectly
- Import creates duplicate rows from the same source file
- Report total does not match the sum of the rows shown
// Bugs in this category
Showing 5 of 5 bugs
Multiple identical records are created from a single user action β because the submit button can be clicked more than once before the first response arrives, the API is not idempotent (retrying creates a new record each time), or a background job processes the same message more than once with no deduplication.
After a record is successfully updated, the application continues to display the old value. This happens because the frontend does not re-fetch data after a successful write, a server-side cache is not invalidated on update, or a read replica with replication lag returns the pre-update value immediately after the write.
When a user record is soft-deleted β its deleted_at column is set to a non-null timestamp β it continues to appear in GET /api/users list responses. The database query does not include a WHERE deleted_at IS NULL filter, so soft-deleted records are indistinguishable from active ones in API responses.
A product price entered as 19.99 is stored and returned as 20.0 after being saved through the application. The database column is defined as FLOAT β an IEEE 754 approximate numeric type β rather than DECIMAL or NUMERIC, which are exact types. Because 19.99 cannot be represented exactly in binary floating-point, the stored value differs from the input.
The order-processing message queue uses at-least-once delivery semantics. When a consumer fails to acknowledge a message before the visibility timeout expires β due to slow processing, a crash, or a brief network interruption β the broker redelivers the message. Because the consumer has no idempotency check, the redelivered message is processed a second time, creating a duplicate order record with a different ID but identical contents.
// Explore other categories
Authentication Bugs
Bugs in login, logout, password reset, session management, tokens, and multi-factor flows.
Permission and Authorization Bugs
Bugs where users can access, edit, delete, or view resources they shouldn't be allowed to.
API Bugs
Bugs in HTTP status codes, request validation, response schemas, error messages, and API contracts.
UI and Frontend Bugs
Bugs affecting layout, forms, responsiveness, error messages, and how the interface behaves across browsers and screen sizes.
Payment Bugs
Bugs in checkout flows, payment retries, webhooks, refunds, subscriptions, and invoices.
Time and Date Bugs
Bugs caused by timezone mismatches, daylight saving transitions, date range errors, and locale differences.
Search and Filter Bugs
Bugs in search results, filters, pagination, sorting, and result counts.
File Upload Bugs
Bugs in file type validation, size limits, upload progress, storage, and file preview.
Notification Bugs
Bugs in email delivery, push notifications, in-app alerts, webhooks, and notification preferences.
// Practise finding these bugs
Hunt data bugs hands-on in a live practice app, then check your findings against the seeded-bug answer guide.