Publishing & deploying a form

How publish works, what changes for end users, and the rollback story.

When you click Publish, your form becomes the active form for that list, the SPFx form customizer renders your design instead of SharePoint's default.

What publish does

  1. Validates the form definition against the schema validator (frontmatter-style sanity check)
  2. Writes the new definition to the site's site assets (the location the form customizer reads from at runtime)
  3. Marks the new version as active; previous versions become archived
  4. Returns control to the designer with a "Published" confirmation

End users see the new form on next page load, there's no per-list invalidation delay. SharePoint's CDN caches the SPFx bundle itself, not your form definition, so changes propagate fast.

What end users see

For the list with the new form:

  • NewForm.aspx, your design replaces the default New form
  • EditForm.aspx, your design replaces the default Edit form
  • DispForm.aspx, your design replaces the default Display form (with read-only treatment)

For every other list, nothing changes. SharePoint Forms365 is per-list, not per-site.

Drafts vs published

Saving in the designer creates drafts. Drafts don't affect end users, only the last published version is rendered. Preview always shows the current draft, so you can iterate freely without worrying about half-finished changes leaking to users.

Rolling back

Every published version is retained. To roll back:

  1. Open the form in the designer
  2. History menu → Revert to version
  3. Pick the version to restore. It becomes a new draft.
  4. Click Publish to make it active.

There's no destructive rollback, you can always restore any prior version. The oldest 50 published versions are kept; older ones are aged out.

Deploying across environments (dev → test → prod)

For tenants with separate dev / test / prod environments:

  1. Author in dev. Test thoroughly.
  2. Use Export → JSON definition from the designer.
  3. In the target environment, open the equivalent list and choose + New form → Import JSON.
  4. Adjust any environment-specific URLs (lookup target lists, API endpoints) in the imported form.
  5. Publish.

For repeated promotions, store the JSON in source control alongside your other DevOps artefacts.