I built a Power Apps form to submit items to a SharePoint list, but some fields randomly fail to save or overwrite existing data with blanks. I’ve double‑checked the form’s Update properties and the OnSubmit formula, but I can’t find what’s wrong. What could cause this inconsistent saving behavior and how can I reliably fix it so all fields submit correctly every time
This is almost always about how the form is submitting or how cards are bound, not SharePoint randomly misbehaving.
Things I would check step by step:
-
Check the DataSource and Item
- Select the EditForm control.
- DataSource should be your list.
- Item should be something like:
If(EditMode, Gallery.Selected, Defaults(YourList)) - If Item points to the wrong record or a blank record, fields overwrite with blanks.
-
Make sure you use SubmitForm, not Patch and SubmitForm together
- In the button OnSelect, keep it simple:
SubmitForm(EditForm1) - Remove extra Patch calls or ResetForm calls that trigger before data saves.
- Do not wrap SubmitForm in a ResetForm before it.
- In the button OnSelect, keep it simple:
-
Check each card’s Update property
- For TextInput cards: Update should be TextInputX.Text.
- For Dropdowns: Update should be DropdownX.Selected or DropdownX.Selected.Value (depending on column type).
- For Yes/No: Update should be ToggleX.Value.
- If Update is blank or points to a control that was deleted or renamed, that field saves as blank.
- Compare a working field and a failing field side by side.
-
Confirm the DataField matches the column internal name
- Select the data card.
- Check DataField property. It must match the SharePoint column internal name, not the display name if they differ.
- If you renamed columns in SharePoint after building the app, Power Apps sometimes keeps the old binding, then it looks random when saving.
-
Check Required and Default in SharePoint vs Power Apps
- In SharePoint, see if the column is Required.
- In Power Apps, if you hide a required field or its Update returns blank, SubmitForm can behave oddly, or other fields look like they did not save.
- For required fields you hide, set a valid Default and a static Update value.
-
Remove or fix logic in OnSuccess and OnFailure
- OnSuccess of the form, keep it simple while debugging:
Notify(‘Saved’) - If you have logic like ResetForm(EditForm1) or Navigate to another screen too early, you might think data is not saved, or overwrites come from a second submit.
- OnSuccess of the form, keep it simple while debugging:
-
Turn on Error handling and test
- After SubmitForm(EditForm1), use:
If(
EditForm1.Error <> ‘’,
Notify(EditForm1.Error, NotificationType.Error)
) - This shows if SharePoint rejects some fields.
- After SubmitForm(EditForm1), use:
-
Watch for concurrent edits
- If multiple users edit the same item and your Item property always refers to Gallery.Selected, someone might be editing an older version.
- Use Forms.Mode = FormMode.New for new items and FormMode.Edit with a specific record for edits.
Quick test to isolate:
- Create a new screen with a new edit form bound to the same list.
- Include only 3 or 4 fields that fail.
- Use a simple button:
SubmitForm(Form1) - If it works here, the issue is with your custom logic on the original screen.
If you post your OnSelect formula of the submit button and one example of a broken card’s Update and DataField, people can usually spot the problem fast.
Sounds like you’re hitting one of those “Power Apps is totally fine, you are the bug” situations.
@kakeru already covered the usual suspects (Update props, DataField, SubmitForm vs Patch), so I’ll throw in the less obvious stuff that has bitten me:
-
Multiple forms or duplicate controls updating the same field
Check if:- You have more than one EditForm bound to the same list on the screen.
- You copied & pasted cards between forms and left both versions on the screen.
Sometimes an “invisible” or off‑screen form/card is still submitting and writing blanks because its Update is empty.
-
Hidden controls still driving the Update
Example:- You used to have a TextInput for a column, then switched to a Dropdown, but the card’s Update is still pointing to the old TextInput (which you hid or deleted).
Result: the card’s Update ends up blank at runtime, so SharePoint gets blanks randomly.
Quick check: temporarily set the card’sDisplayModeto Edit and re‑insert the card from the fields pane for that column. Compare the auto‑generated Update with yours.
- You used to have a TextInput for a column, then switched to a Dropdown, but the card’s Update is still pointing to the old TextInput (which you hid or deleted).
-
OnVisible or OnStart logic silently overwriting fields
Look at:- Screen
OnVisible - App
OnStart
If you have something like:
UpdateContext({varRecord: Defaults(YourList)})or a
Reset(EditForm1)orReset(TextInputX)firing at the wrong time, it can clear controls right before or right afterSubmitFormruns.
Debug trick: comment out allReset(...),UpdateContext(...)andSet(...)that touch the form’s fields and test again. - Screen
-
Use the form’s LastSubmit and Valid properties to see what actually went out
Add a test label and set:Text = JSON(EditForm1.LastSubmit, JSONFormat.IndentFour)Submit the form and see if the “randomly blank” fields are already blank in
LastSubmit.- If
LastSubmitis blank: the issue is in the form / Update props / your logic. - If
LastSubmitis correct but SharePoint shows blanks: then it might actually be a column type / lookup / choice mismatch or a SharePoint validation rule killing the value.
- If
-
Column type mismatches that “seem” to work
A sneaky one:- You bind a text input directly to a Choice, Lookup, or Person column, using
.Textinstead of.Selectedor the full record.
Some submissions “work”, others silently fail or get wiped, especially with multi‑selects.
For multi‑choice / multi‑lookup, make sure Update returns a table of records, not a string.
- You bind a text input directly to a Choice, Lookup, or Person column, using
-
Concurrency & stale records, but not in the usual way
I kind of disagree a bit with the “random” label others use. It’s usually not random; it’s stale data.
If you:- Load a record into a context variable on screen load
- Bind the form
Itemto that variable and never refresh it
Another user edits the item, your next submit can overwrite fields with whatever your local copy had (including blanks).
Test: setItemdirectly to aLookUp(YourList, ID = Param('ID'))or useRefresh(YourList)before navigating into edit mode.
-
Turn on the experimental “Formula-level error management” and log errors
In Settings > Upcoming features > Experimental, enable formula‑level error management (if you haven’t already).
AfterSubmitForm(EditForm1), check:If( !EditForm1.Valid, Notify( Concatenate( 'Form invalid. Error: ', EditForm1.Error ), NotificationType.Error ) )Sometimes a validation error on one field prevents that field from saving, while others update, which feels random.
-
Test with a completely clean, auto‑generated form
I know people hate hearing “rebuild it,” but for debugging it’s gold:- New screen
- Insert > Form > Edit form
- Bind to same list
- Add exactly the problem fields
- Use default
SubmitForm(Form1)
If everything works there, your issue is not SharePoint and not the list. It’s something custom in your original screen: extra formulas, context vars, or a rogue Reset.
If you’re up for it, paste the exact OnSelect of the submit button and the full Update formula + DataField for one “randomly blank” card. Nine times out of ten, the bug is in a single weird expression you forgot you ever wrote.