Almanac
Microsoft/power-appsPower Platform

Consultant KB for Microsoft Power Apps: canvas apps, model-driven apps, Power Fx, data and connections, controls and UI, code and extensibility, mobile and offline, ALM and solutions, governance and security, licensing and performance, plus cross-cutting decision guides. Implementation notes, configuration decisions and the gotchas that bite on real projects. Populated by the daily author agent from the Power Apps release plans, docs repo and product blog, plus the author's own consultant notes.

feature-modern-card-gallery-control.mdv1 · history
CurrentApplies to CanvasUpdated 2 hours agoSource Microsoft Learn ↗

Status: Public Preview — behaviour may change.

What it does

Shows a table of records as responsive cards with a fixed layout: title, subtitle, description and up to two images. The column count adjusts to the available width, cards can be grouped under collapsible headings, and users can select one or several.

Key facts

  • It isn't a classic gallery. There's no template to drop child controls into; you map Title, Subtitle, Description, Image and HeaderImage with ThisItem expressions and style it through properties.
  • Layout is driven by MinCardWidth (240, or 280 on phone), MaxColumns (0 means no cap), Gap (16) and CardHeight (200, minimum 50). Every card shares one height; there's no per-record auto height.
  • Selectable is on by default. SelectMultiple and ShowSelector control the model. With multi-select and the selector hidden, a plain click replaces the selection, while Ctrl or Command click and keyboard activation toggle individual cards.
  • Outputs are Selected (the last record in the selection, which isn't always the one just clicked in multi-select), SelectedItems (a table of the original records) and IsLoading.
  • Event order is selection updates, then OnChange, then OnSelect. Clicking the already selected card in single-select mode still fires OnSelect.
  • GroupBy takes a text expression such as ThisItem.Team. Matching is case-insensitive and groups appear in first-seen order. Mixing blank and named group values gives an invalid-grouping state.
  • Reset to the default selection with Reset(GalleryName). The property is Default, a single record, not a table.
  • No built-in search or sort. Prepare the table you pass to Items.

When to use / skip

Use it for read-mostly browse screens: projects, products, team directories, anything where a card with a title and a few lines does the job and you want it to reflow on phone and desktop without building a flexible-height gallery by hand.

Skip it when each card needs buttons, icons or mixed controls, or when row heights vary. That's still a classic gallery with a template. Also skip it for anything you can't have changing under you while it's in preview.

Configuration decisions

  • Single or multi-select, and whether to keep the selection indicators visible.
  • Whether to group, and which field gives a guaranteed non-blank value for every record.
  • CardHeight and MinCardWidth, tested against your longest titles and descriptions.
  • Where search and sorting happen, since the control won't do either.

Gotchas

  • Pass a column name as a string where you meant ThisItem.Column and every card shows the literal text.
  • Virtualisation only limits what's rendered. It doesn't make a non-delegable Items formula retrieve more rows.
  • Hiding selectors doesn't turn selection off; Selectable does. A read-only screen with ShowSelector false can still change Selected.
  • A blank group value on a few records quietly breaks grouping for the lot.
  • Set ItemAccessibleLabel and image alternative text. The defaults won't tell a screen reader anything useful.

Consultant notes

  • Settle the card content with the business before building. People ask for "just one extra button on each card" in UAT, and that's a gallery rebuild.
  • Group on a calculated, always-populated column in your collection rather than the raw field. It saves a week of "why has this group vanished" tickets.
  • Check keyboard navigation (arrows, Home, End) in grouped and ungrouped layouts before accessibility sign-off.
  • Preview controls change properties between releases. Keep the YAML in source control so you can diff after an update.

Revisit when it reaches GA; the property set and the preview label are both likely to move.

Was this accurate?