Skip to main content
/
/
/
Loading and navigating long lists

Loading and navigating long lists

Introduction

Use pagination for most lists. It keeps users oriented, supports filtering and sorting, and makes it easy to return to a known position. For small, bounded lists where the total number of items is low, load everything at once.

A load more button works well for browsing content like news pages and notifications, where a continuous view fits the way users read. Infinite scroll should almost never be used. Only consider it if you are explicitly building a feed, such as a social or news timeline.

PatternBest forAvoid when
PaginationTables, search results, admin lists, logsUsers need a continuous browsing experience
Load moreNews, notifications, comment threadsUsers need to navigate to a known position
Infinite scrollSocial or news feedsAlmost all other cases

Pagination

Pagination splits a result set into discrete pages. Users navigate between them using page numbers or previous/next controls.

When to use: Tables, search results, admin lists, audit logs, and any task-oriented data where users need to find, filter, sort, or act on specific items.

Key considerations:

  • Users always know where they are in the result set and can return to the same position after navigating away.
  • Works well alongside filtering, sorting, and bulk actions.
  • The URL should reflect the current page so links are shareable and the back button works as expected.

See the Pagination component for implementation guidance.

NamePositionStatus
Ørjan NylandGoalkeeperActive
Kristoffer AjerDefenderActive
Leo Skiri ØstigårdDefenderActive
Marcus Holmgren PedersenDefenderActive
Torbjørn HeggemDefenderActive
1 of 3

Load more

A load more button appends the next batch of results to the existing list. Users stay on one continuous page and control when more items are fetched.

When to use: News pages, notification feeds, comment threads, or similar content where a continuous view fits naturally and users are browsing rather than looking for something specific.

Key considerations:

  • Show a loading state on the button while the next batch is fetching.
  • The underlying API still uses pagination; this is purely a UI difference.

Button style: Use a neutral flat button and a downward arrow icon to the left of the button text. Center it below the content. This keeps the button visible without making it compete with the actual content.

Latest news

New security features rolling out across all services
18 Jun 2025
Meet the team behind Bifrost
15 Jun 2025
Intility expands its Oslo office
10 Jun 2025

Infinite scroll

Infinite scroll automatically loads the next batch of results as the user scrolls toward the bottom of the list.

Avoid infinite scroll

Infinite scroll should not be used in most applications. It makes it harder to understand the total result set, reach the footer, return to an earlier position, and use the list with a keyboard or screen reader.

Only use it if you are explicitly building a feed, such as a news feed or social timeline, where continuous discovery is the entire point of the feature.

Key considerations:

  • There is no reliable way to return to a specific position after navigating away.
  • The page footer becomes difficult or impossible to reach.
  • Keyboard and screen reader users may have a poor experience.

Best practices

  • Load all items when the list is small and bounded. Don't paginate a list of 12 items.
  • Use pagination by default. When in doubt, paginate.
  • Use load more for browsing content like news and notifications, not for task-oriented data.
  • Avoid infinite scroll unless you are building a feed. Don't choose it because it looks modern.