The Previewer is a developer-time tool. Use it for every iteration of the external app before committing to a Connected App registration.
- Host the external Canvas App
Deploy the external web app to a publicly-reachable HTTPS URL (a local tunnel or staging URL works for development).
- Open the Canvas App Previewer
Setup, search for Canvas App Previewer. Paste the Canvas App URL.
- Configure the preview context
Set the record ID, user, and any expected context attributes. The Previewer constructs a signed payload from these values.
- Run the preview and debug
Click Preview. The Previewer renders the Canvas App inside an iframe. Use browser dev tools to debug the embedded app and the signed payload it receives.
- Register the Connected App for production
Once preview validates, register the Canvas App through a Connected App in Setup. Configure scopes, callback URL, signed-request settings, and assign access to the right users.
- Skipping the Previewer and registering directly as a Connected App lengthens debug cycles significantly.
- Cross-origin iframe issues hide until embedding. The Previewer reveals them; standalone testing of the external app does not.
- Signed-request validation failures trace to clock skew or Consumer Secret mismatches. Both show up clearly in Previewer logs.
- New Salesforce development should default to Lightning Web Components, not Canvas Apps. Only use Canvas for legitimately external-hosted UI needs.