I am trying to embed a web react app in office 365 Outlook as a task pane Add-in without using Yeoman generator.
I built an empty React app (https://github.com/facebook/create-react-app#readme) and I downloaded a default mail manifest file (.xml) from the Office JS site(can see below). I can successfully sideload itas a custom Add-in and it successfully displayed on the ribbon, but when I try to display it as a task pane. It threw this error:
ADD-IN ERROR: We can't open this add-in from localhost
I have tried the solution here: https://docs.microsoft.com/en-us/office/troubleshoot/office-suite-issues/cannot-open-add-in-from-localhost to add a local loopback exemption, but it still doesn't work.
I am not sure what the problem exactly is. I tried many different manifest files and this is one of them: The default mail manifest file (.xml) from Office JS site:
<?xml version="1.0" encoding="utf-8"?>
<OfficeApp xmlns=
"http://schemas.microsoft.com/office/appforoffice/1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="MailApp">
<!--IMPORTANT! Id must be unique for each add-in. If you copy this manifest ensure that you change this id to your own GUID. -->
<Id>971E76EF-D73E-567F-ADAE-5A76B39052CF</Id>
<Version>1.0</Version>
<ProviderName>Microsoft</ProviderName>
<DefaultLocale>en-us</DefaultLocale>
<DisplayName DefaultValue="YouTube"/>
<Description DefaultValue=
"Watch YouTube videos referenced in the e-mails you
receive without leaving your email client.">
<Override Locale="fr-fr" Value="Visualisez les vidéos
YouTube références dans vos courriers électronique
directement depuis Outlook."/>
</Description>
<!-- Change the following lines to specify -->
<!-- the web server that hosts the icon files. -->
<IconUrl DefaultValue="https://contoso.com/assets/icon-64.png" />
<HighResolutionIconUrl DefaultValue="https://contoso.com/assets/hi-res-icon.png" />
<SupportUrl DefaultValue="[Insert the URL of a page that provides support information for the app]" />
<Hosts>
<Host Name="Mailbox" />
</Hosts>
<Requirements>
<Sets DefaultMinVersion="1.1">
<Set Name="Mailbox" />
</Sets>
</Requirements>
<FormSettings>
<Form xsi:type="ItemRead">
<DesktopSettings>
<!-- Change the following line to specify -->
<!-- the web server that hosts the HTML file. -->
<SourceLocation DefaultValue=
"https://webserver/YouTube/YouTube_read_desktop.htm" />
<RequestedHeight>216</RequestedHeight>
</DesktopSettings>
<TabletSettings>
<!-- Change the following line to specify -->
<!-- the web server that hosts the HTML file. -->
<SourceLocation DefaultValue=
"https://webserver/YouTube/YouTube_read_tablet.htm" />
<RequestedHeight>216</RequestedHeight>
</TabletSettings>
</Form>
<Form xsi:type="ItemEdit">
<DesktopSettings>
<!-- Change the following line to specify -->
<!-- the web server that hosts the HTML file. -->
<SourceLocation DefaultValue=
"https://webserver/YouTube/YouTube_compose_desktop.htm" />
</DesktopSettings>
<TabletSettings>
<!-- Change the following line to specify -->
<!-- the web server that hosts the HTML file. -->
<SourceLocation DefaultValue=
"https://webserver/YouTube/YouTube_compose_tablet.htm" />
</TabletSettings>
</Form>
</FormSettings>
<Permissions>ReadWriteItem</Permissions>
<Rule xsi:type="RuleCollection" Mode="Or">
<Rule xsi:type="RuleCollection" Mode="And">
<Rule xsi:type="RuleCollection" Mode="Or">
<Rule xsi:type="ItemIs" ItemType="Appointment" FormType="Read" />
<Rule xsi:type="ItemIs" ItemType="Message" FormType="Read" />
</Rule>
<Rule xsi:type="ItemHasRegularExpressionMatch"
PropertyName="BodyAsPlaintext" RegExName="VideoURL"
RegExValue=
"http://(((www\.)?youtube\.com/watch\?v=)|
(youtu\.be/))[a-zA-Z0-9_-]{11}" />
</Rule>
<Rule xsi:type="RuleCollection" Mode="Or">
<Rule xsi:type="ItemIs" ItemType="Appointment" FormType="Edit" />
<Rule xsi:type="ItemIs" ItemType="Message" FormType="Edit" />
</Rule>
</Rule>
</OfficeApp>