Executive Summary
Who This Is For
Use this if you own a canvas app gallery connected to SharePoint or Microsoft Lists and users are saying they cannot find the right item.
This is not a guide to enterprise search. It is a way to choose the least misleading first pattern for one gallery, then write down what it finds, what it does not find, and what still needs testing.
The Short Answer
Start with the job the user is trying to do, not the word on the search box.
For most SharePoint-backed galleries, the safer first move is:
Filter(
Requests,
StartsWith(Title, txtSearch.Text)
)
Use that kind of pattern when users know the beginning of a title, name, or reference text and the SharePoint column supports the delegated prefix check.
Use Filter for exact matches, status filters, date ranges, owner filters, and combined conditions.
Use Search() only when users truly need contains-anywhere matching and you are willing to document the boundary. In a SharePoint gallery, a search that works on a small local batch can still miss records later if Power Apps cannot delegate the query.
Decision Guide
| User need | Prefer | Why | Boundary to document |
|---|---|---|---|
| Users type the first few letters of a title, name, or short text value. | Filter with StartsWith | It matches the beginning of text and can be delegated for suitable SharePoint text columns. | Blank input behaviour, chosen fields, and App checker warning status. |
| Users choose a status, owner, date, category, or exact reference. | Filter | It is clearer for equality, ranges, and combined conditions. | SharePoint complex fields need careful subfield checks. Do not assume every Choice, Lookup, or Person pattern delegates. |
| Users know the exact SharePoint ID or request number. | Filter with equality | Exact matching is more honest than text search. | SharePoint ID delegation is safest for equality, not broad numeric comparisons. Validate user input before comparing. |
| Users expect a word to match anywhere inside a text field. | Search() only with a written boundary | It is easy to read and matches text anywhere in specified columns. | Treat it as small-data or explicitly bounded for SharePoint unless current Studio warnings and connector docs prove the exact app is safe. |
| Users need one record, not a gallery list. | LookUp | It returns the first matching record. | Use it for one-record lookup, not a broad browseable gallery. |
| Users want every field searched like a search engine. | Redesign the expectation | A basic SharePoint gallery formula is not universal full-text search. | Pick named searchable fields or move the requirement to a different search architecture. |
Delegation And Performance Caveats
Delegation is the main risk. If Power Apps cannot delegate the formula to SharePoint, it only processes a limited local set of records. The default is 500 records and the app setting can be raised to 2,000, but raising the limit is not the same as proving the gallery finds every matching item.
For SharePoint-backed galleries, keep these boundaries visible:
StartsWithis a good candidate for text-prefix search on suitable SharePoint Text columns.- SharePoint complex fields need subfield checks. Person fields have narrower delegable subfield support than makers often expect.
StartsWithis not a safe assumption for Choice or Lookup subfields.- SharePoint system fields generally should not be treated as reliable delegation targets.
Notdoes not delegate to SharePoint.- SharePoint indexes can help list filtering performance, but they do not repair a nondelegable Power Fx formula.
DelayOutput = true,DelayItemLoading, andLoadingSpinnercan make the app feel better while users type or wait. They do not prove the search is complete.AllItemsCountcounts loaded gallery items. Do not use it as proof of total matching source records.
Practical Formula Starting Points
Use real data-source, control, and column names. Treat these as starting points, not universal copy/paste promises.
Text prefix search:
Filter(
Requests,
StartsWith(Title, txtSearch.Text)
)
Text prefix search with an optional status filter:
Filter(
Requests,
StartsWith(Title, txtSearch.Text) &&
(IsBlank(ddStatus.Selected.Value) || Status.Value = ddStatus.Selected.Value)
)
Exact request number:
Filter(
Requests,
RequestNumber = Value(txtRequestNumber.Text)
)
Contains-anywhere search with an explicit boundary:
Search(
Requests,
txtSearch.Text,
Title
)
Power Apps Studio has changed accepted Search column-name syntax across versions. Use the syntax Studio accepts in your app, then check App checker and delegation warnings before telling users the gallery search is safe.
Checklist Before You Trust It
| Check | Pass condition |
|---|---|
| Lookup job named | The decision note says prefix, exact match, filter, or contains-anywhere. |
| Fields named | The note lists the fields included and the fields users may wrongly expect to be searched. |
| Column types checked | SharePoint Text, Number, Choice, Lookup, Person, DateTime, ID, or another type is recorded for each field. |
| Formula pattern chosen | The pattern matches the lookup job, not just the label on the search box. |
| Delegation checked | App checker warning status is recorded as none, resolved, accepted with boundary, or fail. |
| Empty input handled | A blank box does not leave users staring at an unexplained gallery. |
| No-result state handled | The message says what was searched and what the user should try next. |
| Named records tested | At least one expected hit and one expected no-result case are tested. |
| Large-list risk tested | A record outside the local row-limit risk is tested where feasible, or the limitation is written down. |
| Final claim bounded | The maker does not claim full-text, app-wide, future-data, or enterprise-search correctness. |
Recommended Move
Write a one-page decision note for the gallery before you change too much at once.
Use this structure:
| Decision note field | What to write |
|---|---|
| User lookup job | What the user is trying to find and whether they know the start, exact value, or any word. |
| Chosen pattern | Filter, Filter + StartsWith, Search, or LookUp. |
| Data source and gallery | The SharePoint list or Microsoft List and the gallery name. |
| Fields searched or filtered | The exact columns and subfields used. |
| Fields excluded | Anything users may expect but the formula does not search. |
| Delegation result | App checker status and any accepted warning. |
| Test records | Named records that passed, failed, or could not be tested. |
| User-facing message | The no-result or scope wording users will see. |
| Final status | Pass, partial pass, fail, or owner review needed. |
If the note cannot honestly say what the gallery searches and where the boundary is, the pattern is not ready to present as fixed.
Evidence Notes
Use Microsoft documentation to trust the function mechanics and SharePoint delegation boundaries. Do not use it as proof that your exact app, list schema, or tenant data will behave safely without testing.
- Microsoft Power Fx documentation supports the difference between
Filter,Search,LookUp, andStartsWith. It does not choose the right user experience for your gallery. - Microsoft delegation guidance supports the row-limit risk: nondelegable formulas can return incomplete results from large data sources. It does not prove which named records your app will miss.
- Microsoft SharePoint connector documentation supports the need to check operation and data type together. It does not make every Person, Choice, Lookup, system field, or transformed text formula safe.
- Gallery, text input, indexing, and Monitor documentation support useful diagnostics and performance improvements. They do not prove search correctness.
- The safest claim this Briefing supports is one tested SharePoint or Microsoft Lists gallery pattern with named fields, recorded warnings, and named-record tests. It does not support full-text, multi-list, app-wide, future-data, or enterprise-search claims.