Most software has to list things. Recipes, used cars, invoices, customers, whatever you’re modeling, you usually end up providing a list of the things.
And over time, the number of these things will grow. If you’re building an invoicing application, it’s a reasonable expectation that the number of invoices will grow arbitrarily.
Eventually, there will be far too many invoices to simply list out.
By far, the most common solution to this design challenge is pagination. When it becomes impractical to list every invoice, list the first N, and give the user some indication of how many pages you’ve broken it into.
You can’t easily fit 100 line items on a page, but you can show 10 pages of 10. Problem solved.
Wait, what’s the problem?
Well, sort of. I mean, it’s been solved, but it’s an imaginary problem.
The problem isn’t that you can’t show 100 items at once. The problem is that you’re trying to show 100 items at once.
The most useful thing to do is never to show 100 of anything. If you aren’t building an actual database table browser, this is never the thing your users want.
When you choose to paginate a list, you’re essentially saying “The set I’ve given the user to work with is too large to work with. I’d better break it up.”
They don’t want to be shown 100 things, they want to be shown the correct things. There aren’t 100 correct things. There are probably less than 10.
If you feel like it will be a common case that users are expected to comprehend 50, 100, or 1,000 data items, you’ve made other UI mistakes that got you there.
Everything in moderation.
Pagination isn’t in itself a disease. There are probably even legitimate uses, like the case of bulk operations. It’s not something to be avoided wholesale, but it looks pretty lazy when it’s the workhorse of a segment of your app.
Think of it as a UX smell, A symptom that perhaps working with this section of the UI has become unwieldy.
Perhaps you’ve not thought through the common operations on these models. Maybe you’re exposing too much of your underlying database structure to your users like virtually every CRM product ever?
Consider things generally regarded as elegant and useful (like Basecamp), and look at effectively they show you the items you want to work with.
Next time you’re building something, and you’re considering showing 500 receipt images, examine why you’re about to offer to your users a list you know they’ll never consume.