<!-- 
RSS generated by JIRA (9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b) at Mon Feb 12 05:44:07 CET 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Magnolia - Issue tracker</title>
    <link>https://jira.magnolia-cms.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-uk</language>    <build-info>
        <version>9.4.2</version>
        <build-number>940002</build-number>
        <build-date>19-01-2023</build-date>
    </build-info>


<item>
            <title>[MGNLFE-88] Support for Next.js</title>
                <link>https://jira.magnolia-cms.com/browse/MGNLFE-88</link>
                <project id="16792" key="MGNLFE">Magnolia Frontend Helpers</project>
                    <description>&lt;p&gt;User story:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;As a SPA developer, I can use Next.js in my React SPA, and there is clear documentation on how to do so.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Acceptance criteria:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Supports everything that is supported with our current React demos (including &lt;a href=&quot;https://git.magnolia-cms.com/projects/DEMOS/repos/minimal-headless-spa-demos/browse&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;minimal&lt;/a&gt; and &lt;a href=&quot;https://git.magnolia-cms.com/projects/DEMOS/repos/website-spa-demo/browse&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;the one used in free trials&lt;/a&gt;).&lt;/li&gt;
	&lt;li&gt;The SPA in the page editor is running on an external Nextjs server.&lt;/li&gt;
	&lt;li&gt;The SPA can be deployed to production on a Nextjs server.&lt;/li&gt;
	&lt;li&gt;SSR is supported&lt;/li&gt;
	&lt;li&gt;SSG is supported&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This is now demonstrated in the minimal demo project - See notes in readme for SSR and SSG.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://git.magnolia-cms.com/projects/DEMOS/repos/minimal-headless-spa-demos/browse&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.magnolia-cms.com/projects/DEMOS/repos/minimal-headless-spa-demos/browse&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(Also See basic sample project from &lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=bstaryga&quot; class=&quot;user-hover&quot; rel=&quot;bstaryga&quot;&gt;bstaryga&lt;/a&gt;:&#160;&lt;a href=&quot;https://github.com/bartoszstaryga/mgnl-spa-next-js&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/bartoszstaryga/mgnl-spa-next-js)&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
        <key id="94110">MGNLFE-88</key>
            <summary>Support for Next.js</summary>
                <type id="14" iconUrl="https://jira.magnolia-cms.com/secure/viewavatar?size=xsmall&amp;avatarId=10895&amp;avatarType=issuetype">Story</type>
                                            <priority id="3" iconUrl="https://jira.magnolia-cms.com/images/icons/priorities/major.svg">Major</priority>
                        <status id="6" iconUrl="https://jira.magnolia-cms.com/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are not closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="1">Fixed</resolution>
                                        <assignee username="bstaryga">Bartosz Staryga</assignee>
                                    <reporter username="czimmermann">Christopher Zimmermann</reporter>
                        <labels>
                    </labels>
                <created>Wed, 16 Dec 2020 09:44:20 +0100</created>
                <updated>Fri, 17 Dec 2021 11:28:07 +0100</updated>
                            <resolved>Fri, 17 Dec 2021 11:26:34 +0100</resolved>
                                                    <fixVersion>1.2.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>7</watches>
                                                    <progress percentage="100">
                                    <originalProgress>
                                                    <row percentage="0" backgroundColor="#89afd7"/>
                                                    <row percentage="100" backgroundColor="transparent"/>
                                            </originalProgress>
                                                    <currentProgress>
                                                    <row percentage="100" backgroundColor="#51a825"/>
                                                    <row percentage="0" backgroundColor="#ec8e00"/>
                                            </currentProgress>
                            </progress>
                                    <aggregateprogress percentage="100">
                                    <originalProgress>
                                                    <row percentage="0" backgroundColor="#89afd7"/>
                                                    <row percentage="100" backgroundColor="transparent"/>
                                            </originalProgress>
                                                    <currentProgress>
                                                    <row percentage="100" backgroundColor="#51a825"/>
                                                    <row percentage="0" backgroundColor="#ec8e00"/>
                                            </currentProgress>
                            </aggregateprogress>
                                                    <timespent seconds="28800">1d</timespent>
                                <comments>
                            <comment id="271702" author="czimmermann" created="Sat, 7 Aug 2021 15:10:35 +0200"  >&lt;p&gt;&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=bstaryga&quot; class=&quot;user-hover&quot; rel=&quot;bstaryga&quot;&gt;bstaryga&lt;/a&gt;&#160;Could you help us out with this one? &lt;br/&gt;
 I think a good first step would be getting the&#160;&lt;a href=&quot;https://git.magnolia-cms.com/projects/DEMOS/repos/minimal-headless-spa-demos/browse&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;minimal&lt;/a&gt; demo running on Nextjs with this new production SPA External feature (even if the feature itself is still a little buggy).&#160;&lt;br/&gt;
 Or could make sense to start with the &lt;a href=&quot;https://git.magnolia-cms.com/projects/CLOUD/repos/cloud-page-headless-demo/browse&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;cloud-page-headless-demo&lt;/a&gt; for SaaS, but keep in mind that we do need a demo project that works without the SaaS first (like the &lt;a href=&quot;https://git.magnolia-cms.com/projects/DEMOS/repos/minimal-headless-spa-demos/browse&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;minimal&lt;/a&gt; one)- since the SaaS comes later!&lt;br/&gt;
 (cc: &lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=rsiska&quot; class=&quot;user-hover&quot; rel=&quot;rsiska&quot;&gt;rsiska&lt;/a&gt;, &lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=apchelintcev&quot; class=&quot;user-hover&quot; rel=&quot;apchelintcev&quot;&gt;apchelintcev&lt;/a&gt;)&lt;/p&gt;</comment>
                            <comment id="273311" author="bstaryga" created="Mon, 23 Aug 2021 16:03:24 +0200"  >&lt;p&gt;&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=czimmermann&quot; class=&quot;user-hover&quot; rel=&quot;czimmermann&quot;&gt;czimmermann&lt;/a&gt;&lt;br/&gt;
I have a basic setup for SSR and SSG here:&lt;br/&gt;
&lt;a href=&quot;https://git.magnolia-cms.com/projects/DEMOS/repos/minimal-headless-spa-demos/browse?at=refs%2Fheads%2Fnextjs&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.magnolia-cms.com/projects/DEMOS/repos/minimal-headless-spa-demos/browse?at=refs%2Fheads%2Fnextjs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Things that need to be still sorted for the renderer&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;no icons in green bars (I&apos;ve heard you already work on it &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/smile.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;)&lt;/li&gt;
	&lt;li&gt;no auto created areas nodes (I&apos;ve heard you already work on it &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/smile.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;)&lt;/li&gt;
	&lt;li&gt;iframe URL must contain pathname bit for child pages (&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=canh.nguyen&quot; class=&quot;user-hover&quot; rel=&quot;canh.nguyen&quot;&gt;canh.nguyen&lt;/a&gt; is already aware)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Once those 3 things are sorted &lt;b&gt;SSR&lt;/b&gt; is good to go.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SSG&lt;/b&gt; is bit more complex.&lt;br/&gt;
Next.js uses the concept of preview API to bypass SSG.&lt;br/&gt;
For us to support it we will have to allow to change how we build the preview iframe URL.&lt;/p&gt;

&lt;p&gt;&lt;ins&gt;For regular SSR we have&lt;/ins&gt;&lt;br/&gt;
In YAML url: &lt;a href=&quot;http://localhost:3000&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://localhost:3000&lt;/a&gt;&lt;br/&gt;
For root page iframe preview src will be &lt;a href=&quot;http://localhost:3000?mgnlPreview=false&amp;amp;mgnlChannel=desktop&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://localhost:3000?mgnlPreview=false&amp;amp;mgnlChannel=desktop&lt;/a&gt;&lt;br/&gt;
For &lt;b&gt;child-1&lt;/b&gt; page iframe preview src will be &lt;a href=&quot;http://localhost:3000/child-1?mgnlPreview=false&amp;amp;mgnlChannel=desktop&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://localhost:3000/child-1?mgnlPreview=false&amp;amp;mgnlChannel=desktop&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;ins&gt;For SSG we will need&lt;/ins&gt; (&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=apchelintcev&quot; class=&quot;user-hover&quot; rel=&quot;apchelintcev&quot;&gt;apchelintcev&lt;/a&gt; this will interest you)&lt;br/&gt;
In YAML url: &lt;a href=&quot;http://localhost:3000/api/preview&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://localhost:3000/api/preview&lt;/a&gt;&lt;br/&gt;
For root page iframe preview src will be &lt;a href=&quot;http://localhost:3000/api/preview?mgnlPreview=false&amp;amp;mgnlChannel=desktop&amp;amp;slug=/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://localhost:3000/api/preview?mgnlPreview=false&amp;amp;mgnlChannel=desktop&amp;amp;slug=/&lt;/a&gt;&lt;br/&gt;
For &lt;b&gt;child-1&lt;/b&gt; page iframe preview src will be &lt;a href=&quot;http://localhost:3000/api/preview?mgnlPreview=false&amp;amp;mgnlChannel=desktop&amp;amp;slug=/child-1&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://localhost:3000/api/preview?mgnlPreview=false&amp;amp;mgnlChannel=desktop&amp;amp;slug=/child-1&lt;/a&gt;&lt;br/&gt;
So moving the page pathname from iframe src to query param slug.&lt;/p&gt;

</comment>
                            <comment id="273323" author="czimmermann" created="Mon, 23 Aug 2021 16:35:17 +0200"  >&lt;p&gt;Thank you! Cool.&lt;/p&gt;

&lt;p&gt;[[&lt;span class=&quot;error&quot;&gt;&amp;#91;...pathname&amp;#93;&lt;/span&gt;].js|https://git.magnolia-cms.com/projects/DEMOS/repos/minimal-headless-spa-demos/commits/4da76f79a786a7b225cbc71306d828270dc05d8f#spa/nextjs-minimal/pages/%5B%5B...pathname%5D%5D.js]&#160;looks redundant with ssg_[&lt;span class=&quot;error&quot;&gt;&amp;#91;...pathname&amp;#93;&lt;/span&gt;].js - are those &quot;lib&quot; files just for reference, or were you moving in direction that [&lt;span class=&quot;error&quot;&gt;&amp;#91;...pathname&amp;#93;&lt;/span&gt;].js uses those libs? I didn&apos;t look too closely yet - maybe I miss somethjing.&lt;/p&gt;</comment>
                            <comment id="273329" author="bstaryga" created="Mon, 23 Aug 2021 17:08:30 +0200"  >&lt;p&gt;Both files are there for reference. Either ones content  needs to be copy to pages/[&lt;span class=&quot;error&quot;&gt;&amp;#91;&#8230;pathname&amp;#93;&lt;/span&gt;].js depending on what approach you&#8217;d like to use. This file is the only difference between approaches so I did not wanna create new next project. The &#8220;what to do&#8221; will be explained in readme &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/smile.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;</comment>
                            <comment id="273346" author="apchelintcev" created="Tue, 24 Aug 2021 07:54:22 +0200"  >&lt;p&gt;&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=bstaryga&quot; class=&quot;user-hover&quot; rel=&quot;bstaryga&quot;&gt;bstaryga&lt;/a&gt;thanks a lot for this! Couple of questions:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;about preview mode: so the secure token shenanigans can be skipped altogether (described as step one &lt;a href=&quot;https://nextjs.org/docs/advanced-features/preview-mode&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;here&lt;/a&gt;). The context path management pushed to &quot;slug&quot; is indeed smth we need to account for. However, the complexity imo is in the fact that we need to support it for several similar systems, which may have different ways of facilitating this functionality (so some definition based approach would be desired I guess).&lt;/li&gt;
	&lt;li&gt;do you know from the top of your head about the mechanics of the &lt;tt&gt;getStaticPaths&lt;/tt&gt; function - is it called only once per build? I see that in your demo implementation, it just basically walks the whole SPA sub-tree, does it have to be this way? As a side note here - the URL management is completely on the middle-ware side, so if we&apos;d want to e.g. somehow have pages for our &lt;tt&gt;activities&lt;/tt&gt; app/CT, we&apos;d need to add an &lt;tt&gt;if path matches some /.../activities/&lt;/tt&gt; clause and a query to an endpoint different to the nav one, right?&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="273367" author="bstaryga" created="Tue, 24 Aug 2021 08:53:24 +0200"  >&lt;p&gt;&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=apchelintcev&quot; class=&quot;user-hover&quot; rel=&quot;apchelintcev&quot;&gt;apchelintcev&lt;/a&gt;&lt;br/&gt;
&lt;b&gt;Token&lt;/b&gt;&lt;br/&gt;
Yep it can be skipped &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/smile.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; It is purely in code of response handling inside next to check against it.&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-javascript&quot;&gt;
&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (req.query.secret !== &lt;span class=&quot;code-quote&quot;&gt;&apos;MY_SECRET_TOKEN&apos;&lt;/span&gt; || !req.query.slug) {
    &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; res.status(401).json({ message: &lt;span class=&quot;code-quote&quot;&gt;&apos;Invalid token&apos;&lt;/span&gt; })
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;So it is definitely nice to have, but not a must &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/smile.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;

&lt;p&gt;I agree that each SSG system might do previews differently. &lt;a href=&quot;https://www.gatsbyjs.com/docs/how-to/local-development/running-a-gatsby-preview-server/#rolling-your-own-preview&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Gatsby does sth with spinning preview server&lt;/a&gt; (not many docs around it).&lt;/p&gt;

&lt;p&gt;Some form or felixibitly of the iframe src building would be nice. It would then allow adding different things to that URL e.g. token &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/tongue.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;getStaticPaths&lt;/b&gt;&lt;br/&gt;
This function needs to return all paths that need to be built during generation.&lt;br/&gt;
It needs to look like:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-javascript&quot;&gt;
[
{ params: { pathname: [] },
{ params: { pathname: [&lt;span class=&quot;code-quote&quot;&gt;&apos;contact&apos;&lt;/span&gt;] },
{ params: { pathname: [&lt;span class=&quot;code-quote&quot;&gt;&apos;contact&apos;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&apos;contact-child&apos;&lt;/span&gt;] }
...
]
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;How is that list achieved it&apos;s fully up to us.&lt;br/&gt;
I just reused the existing navigation endpoint to build such an array.&lt;br/&gt;
If I had e.g. list of posts on the stories app, I would create a new endpoint to get those paths too and combined both lists together.&lt;/p&gt;
</comment>
                            <comment id="279409" author="czimmermann" created="Tue, 12 Oct 2021 22:55:27 +0200"  >&lt;p&gt;&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=bstaryga&quot; class=&quot;user-hover&quot; rel=&quot;bstaryga&quot;&gt;bstaryga&lt;/a&gt;&#160;I updated the nextjs branch to point to new FEHelpers and added routeTemplate to templates, but did not see it working yet. &lt;a href=&quot;https://git.magnolia-cms.com/projects/DEMOS/repos/minimal-headless-spa-demos/commits/e311e665f107922f16224860f4c93859c57d871b&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.magnolia-cms.com/projects/DEMOS/repos/minimal-headless-spa-demos/commits/e311e665f107922f16224860f4c93859c57d871b&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Find a zip of the JARS you need attached to this ticket.&#160;&lt;br/&gt;
Get a 6.2.13-snapshot webapp and replace jars as needed.&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
mgnl jumpstart -s -m 6.2.13
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;(I did DXCore with no demo... but It should work on CE in theory.)&lt;/p&gt;</comment>
                            <comment id="279580" author="bstaryga" created="Wed, 13 Oct 2021 17:18:54 +0200"  >&lt;p&gt;&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=czimmermann&quot; class=&quot;user-hover&quot; rel=&quot;czimmermann&quot;&gt;czimmermann&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=apchelintcev&quot; class=&quot;user-hover&quot; rel=&quot;apchelintcev&quot;&gt;apchelintcev&lt;/a&gt;&lt;br/&gt;
I pushed updated state to branch:&lt;br/&gt;
&lt;a href=&quot;https://git.magnolia-cms.com/projects/DEMOS/repos/minimal-headless-spa-demos/browse?at=refs%2Fheads%2Fnextjs&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.magnolia-cms.com/projects/DEMOS/repos/minimal-headless-spa-demos/browse?at=refs%2Fheads%2Fnextjs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SSR&lt;/b&gt;&lt;br/&gt;
LM - nextjs-ssr-minimal-lm&lt;br/&gt;
SPA - nextjs-ssr-minimal&lt;br/&gt;
To run navigate to spa and run `npm run build &amp;amp;&amp;amp; npm start`.&lt;br/&gt;
It will spin up Next.js with SSR.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SSG&lt;/b&gt;&lt;br/&gt;
LM - nextjs-ssg-minimal-lm&lt;br/&gt;
SPA - nextjs-ssg-minimal&lt;br/&gt;
To run navigate to spa and run `npm run build &amp;amp;&amp;amp; npm start`.&lt;br/&gt;
It will spin up Next.js with API for preview iframe.&lt;br/&gt;
To build static sites run `npm run build &amp;amp;&amp;amp; npm run export`.&lt;/p&gt;

&lt;p&gt;A few more TO-DO&apos;s, but it&apos;s more wrapping up, for me:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;add languages&lt;/li&gt;
	&lt;li&gt;add navigation&lt;/li&gt;
	&lt;li&gt;add readme&lt;/li&gt;
	&lt;li&gt;we should have some example of adding a webhook on publishing to trigger SSG &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/smile.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="279682" author="bstaryga" created="Thu, 14 Oct 2021 11:36:05 +0200"  >&lt;p&gt;Found a blocker: &lt;a href=&quot;https://jira.magnolia-cms.com/browse/SPARE-3&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://jira.magnolia-cms.com/browse/SPARE-3&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="281211" author="bstaryga" created="Tue, 26 Oct 2021 12:20:13 +0200"  >&lt;p&gt;FYI &lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=czimmermann&quot; class=&quot;user-hover&quot; rel=&quot;czimmermann&quot;&gt;czimmermann&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;add languages&lt;/li&gt;
	&lt;li&gt;&lt;del&gt;add navigation&lt;/del&gt;&lt;/li&gt;
	&lt;li&gt;&lt;del&gt;add readme&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Scream when languages are available to be used/tested. &lt;/p&gt;</comment>
                            <comment id="282231" author="bstaryga" created="Tue, 2 Nov 2021 10:50:35 +0100"  >&lt;p&gt;&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=mdrapela&quot; class=&quot;user-hover&quot; rel=&quot;mdrapela&quot;&gt;mdrapela&lt;/a&gt;/&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=czimmermann&quot; class=&quot;user-hover&quot; rel=&quot;czimmermann&quot;&gt;czimmermann&lt;/a&gt; How can I test the latest version with language switcher? Could you guys provide me with the jars I need to use, please? &lt;br/&gt;
Once I have that I will finish and merge the examples in minimal examples repo and will let you know what things to look at in repos.&lt;/p&gt;</comment>
                            <comment id="282515" author="bstaryga" created="Wed, 3 Nov 2021 13:56:18 +0100"  >&lt;p&gt;&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=rsiska&quot; class=&quot;user-hover&quot; rel=&quot;rsiska&quot;&gt;rsiska&lt;/a&gt;/&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=canh.nguyen&quot; class=&quot;user-hover&quot; rel=&quot;canh.nguyen&quot;&gt;canh.nguyen&lt;/a&gt; question I have for lang switcher.&lt;br/&gt;
I can use:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
routeTemplate: &lt;span class=&quot;code-quote&quot;&gt;&apos;/{{language}}/{{@path}}&apos;&lt;/span&gt;
as well as:
routeTemplate: &lt;span class=&quot;code-quote&quot;&gt;&apos;/{language}/{{@path}}&apos;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;


&lt;p&gt;So for language, I can have 1 or 2 curly brackets, for @path not.&lt;br/&gt;
Why both works? Missing some consistency here &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/tongue.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;</comment>
                            <comment id="282524" author="apchelintcev" created="Wed, 3 Nov 2021 14:16:48 +0100"  >&lt;p&gt;&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=bstaryga&quot; class=&quot;user-hover&quot; rel=&quot;bstaryga&quot;&gt;bstaryga&lt;/a&gt; I suppose that&apos;s cause in case of path the slashes need to be escaped (the double brace semantics iiuc), am I right &lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=canh.nguyen&quot; class=&quot;user-hover&quot; rel=&quot;canh.nguyen&quot;&gt;canh.nguyen&lt;/a&gt;?&lt;/p&gt;</comment>
                            <comment id="282586" author="bstaryga" created="Wed, 3 Nov 2021 18:25:04 +0100"  >&lt;p&gt;What do you say guys in example repo and in docs we would use double? To keep it consistent and not confuse people why do sometimes we have it one way or another?&lt;/p&gt;</comment>
                            <comment id="282640" author="canh.nguyen" created="Thu, 4 Nov 2021 09:41:53 +0100"  >&lt;p&gt;The double braces will not encode the content. In case you need to use &lt;b&gt;path&lt;/b&gt; as a parameter, or other parameters that have special characters like space, we need to escape the content.&lt;/p&gt;

&lt;p&gt;For example, if you have a routeTemplate like:&lt;/p&gt;

&lt;p&gt;&apos;?title={{&lt;tt&gt;title&lt;/tt&gt;}}&apos;&#160;&lt;/p&gt;

&lt;p&gt;With title is &quot;Hello World&quot;, the generated URL is like&#160;&quot;http://foo.bar/?title=Hello&#160;World&quot; so the URL is broken.&lt;/p&gt;

&lt;p&gt;And if we configure routeTemplate:&#160;&apos;?title={title}&apos;, the URL should be &quot;http://foo.bar?title=Hello+World&quot;&lt;/p&gt;</comment>
                            <comment id="282647" author="bstaryga" created="Thu, 4 Nov 2021 10:07:03 +0100"  >&lt;p&gt;&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=canh.nguyen&quot; class=&quot;user-hover&quot; rel=&quot;canh.nguyen&quot;&gt;canh.nguyen&lt;/a&gt; thanks for the clarification &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/smile.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;br/&gt;
&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=mdrapela&quot; class=&quot;user-hover&quot; rel=&quot;mdrapela&quot;&gt;mdrapela&lt;/a&gt; so if we had this clearly in docs what is one { for and what is two {{ for would be brilliant.&lt;br/&gt;
I will put this and the other info in the &lt;a href=&quot;https://jira.magnolia-cms.com/browse/MGNLFE-111&quot; title=&quot;DOC: Use Next.js in your React SPA&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MGNLFE-111&quot;&gt;&lt;del&gt;MGNLFE-111&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Anyway, I have added the language switching to demos and created PR.&lt;br/&gt;
&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=czimmermann&quot; class=&quot;user-hover&quot; rel=&quot;czimmermann&quot;&gt;czimmermann&lt;/a&gt; and &lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=canh.nguyen&quot; class=&quot;user-hover&quot; rel=&quot;canh.nguyen&quot;&gt;canh.nguyen&lt;/a&gt; I guess this is for you:&lt;br/&gt;
&lt;a href=&quot;https://git.magnolia-cms.com/projects/DEMOS/repos/minimal-headless-spa-demos/pull-requests/17/overview&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.magnolia-cms.com/projects/DEMOS/repos/minimal-headless-spa-demos/pull-requests/17/overview&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I would appreciate a decent test on this.&lt;/p&gt;</comment>
                            <comment id="282648" author="bstaryga" created="Thu, 4 Nov 2021 10:08:25 +0100"  >&lt;p&gt;BTW What will be the pages app required to run this as this will not land in 6.2.13?&lt;br/&gt;
I&apos;d like to put this as a note in README.md &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/smile.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;</comment>
                            <comment id="282658" author="bstaryga" created="Thu, 4 Nov 2021 10:22:47 +0100"  >&lt;p&gt;And another question can url and routeTemplate be set in site def (not as prototype)?&lt;/p&gt;</comment>
                            <comment id="288431" author="czimmermann" created="Fri, 17 Dec 2021 11:25:23 +0100"  >&lt;p&gt;NextJS SSR and SSG have been demonstrated to work with Visual SPA Editor.&lt;/p&gt;

&lt;p&gt;This is done in this demonstration project: &lt;a href=&quot;https://git.magnolia-cms.com/projects/DEMOS/repos/minimal-headless-spa-demos/browse&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.magnolia-cms.com/projects/DEMOS/repos/minimal-headless-spa-demos/browse&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See the new README sections for SSR and SSG.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10160">
                    <name>Relates</name>
                                                                <inwardlinks description="relates to">
                                                        </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10020">
                    <name>dependency</name>
                                            <outwardlinks description="depends upon">
                                        <issuelink>
            <issuekey id="83660">PAGES-238</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="102100">PAGES-488</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10050">
                    <name>documentation</name>
                                                                <inwardlinks description="to be documented by">
                                        <issuelink>
            <issuekey id="102110">MGNLFE-111</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="85620" name="external-spa-pd-jars-6-2-13.zip" size="837349" author="czimmermann" created="Wed, 13 Oct 2021 08:25:34 +0200"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_14166" key="com.okapya.jira.checklist:checklist">
                        <customfieldname>Acceptance criteria</customfieldname>
                        <customfieldvalues>
                            
        <checklist>
        <![CDATA[
                            




                
                                    <div class="o-completion" style="display: flex; flex-shrink: 0;"><span  class="aui-lozenge aui-lozenge-complete" style="font-size: 12px; font-weight: normal; display: flex; flex-direction: row; align-items: center;" ><span style="padding-right: 4px; vertical-align: middle;"><svg width="15" height="15" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg" fill="white"><path clip-rule="evenodd" d="m10.41037,3.42544l-7.86501,0c-0.72395,0 -1.31084,0.58688 -1.31084,1.31084l0,7.86508c0,0.7239 0.58689,1.3108 1.31084,1.3108l7.86501,0c0.724,0 1.3109,-0.5869 1.3109,-1.3108l0,-7.86508c0,-0.72396 -0.5869,-1.31084 -1.3109,-1.31084zm-7.86501,-0.65542c-1.08593,0 -1.96626,0.88032 -1.96626,1.96626l0,7.86508c0,1.0859 0.88033,1.9662 1.96626,1.9662l7.86501,0c1.086,0 1.9663,-0.8803 1.9663,-1.9662l0,-7.86508c0,-1.08594 -0.8803,-1.96626 -1.9663,-1.96626l-7.86501,0z" fill-rule="evenodd"/><path d="m5.09049,10.18526l-1.82767,-1.82766l-0.78479,0.78479l2.61246,2.61246l5.38758,-5.38754l-0.78483,-0.78479l-4.60275,4.60274z"/></svg></span><span>Empty</span></span></div>
                        ]]>
    </checklist>


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10111" key="com.atlassian.jira.toolkit:reporterdomain">
                        <customfieldname>Company</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>magnolia-cms.com</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10031" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Mon, 9 Aug 2021 15:17:04 +0200</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_12730" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_14151" key="com.atlassian.jira.toolkit:message">
                        <customfieldname>Docu info</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10246" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PAGES-414</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10061" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comm is not jira-dev</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10071" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last participant</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>czimmermann</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_13136" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            2 years, 8 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10020" key="com.atlassian.jira.toolkit:attachments">
                        <customfieldname>Number of attachments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10150" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname>Number of comments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>19.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>apchelintcev</customfieldvalue>
            <customfieldvalue>bstaryga</customfieldvalue>
            <customfieldvalue>canh.nguyen</customfieldvalue>
            <customfieldvalue>czimmermann</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_10833" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|y05bg6:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10244" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10245" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="1500">HL &amp; LD 37</customfieldvalue>
    <customfieldvalue id="1507">HL &amp; LD 38</customfieldvalue>
    <customfieldvalue id="1513">HL &amp; LD 39</customfieldvalue>
    <customfieldvalue id="1522">HL &amp; LD 40</customfieldvalue>
    <customfieldvalue id="1527">HL &amp; LD 41</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10242" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Story Points</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>3.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_14168" key="com.okapya.jira.checklist:checklist">
                        <customfieldname>Task DoD</customfieldname>
                        <customfieldvalues>
                            
        <checklist>
        <![CDATA[
                            




                
                        
        <div style="margin-bottom: 8px;">
                            <div class="o-completion" style="display: flex; flex-shrink: 0;"><span title="All items are completed" class="aui-lozenge aui-lozenge-success" style="font-size: 12px; font-weight: normal; display: flex; flex-direction: row; align-items: center;" ><span style="padding-right: 4px; vertical-align: middle;"><svg width="15" height="15" viewBox="0 0 15 15" fill="white" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M8.44414 2.77002H2.54536C1.45943 2.77002 0.579102 3.65034 0.579102 4.73628V12.6013C0.579102 13.6873 1.45943 14.5676 2.54536 14.5676H10.4104C11.4963 14.5676 12.3767 13.6873 12.3767 12.6013V6.70259H11.7212V12.6013C11.7212 13.3253 11.1344 13.9122 10.4104 13.9122H2.54536C1.8214 13.9122 1.23452 13.3253 1.23452 12.6013V4.73628C1.23452 4.01232 1.8214 3.42544 2.54536 3.42544H8.44414V2.77002Z" /><path d="M5.09049 10.1853L3.26282 8.3576L2.47803 9.14239L5.09049 11.7549L10.478 6.36731L9.69323 5.58252L5.09049 10.1853Z" /><path d="M14.4013 4.06384L12.9712 3.18904L14.4013 2.31423C14.4259 2.29915 14.4435 2.27493 14.4503 2.24685C14.457 2.21876 14.4523 2.18915 14.4373 2.16455L14.0171 1.47762C13.9858 1.42635 13.9187 1.41019 13.8674 1.44154L12.5022 2.27667V0.676237C12.5022 0.61615 12.4535 0.567383 12.3934 0.567383H11.5883C11.5282 0.567383 11.4794 0.61615 11.4794 0.676237V2.27667L10.1142 1.44159C10.0628 1.41024 9.99587 1.42635 9.96452 1.47768L9.54429 2.16461C9.52927 2.18921 9.52459 2.21881 9.53134 2.2469C9.53809 2.27498 9.55572 2.2992 9.58032 2.31428L11.0105 3.18904L9.58032 4.06384C9.55572 4.07887 9.53809 4.10314 9.53134 4.13117C9.52459 4.15931 9.52927 4.18892 9.54429 4.21352L9.96452 4.90039C9.99587 4.95166 10.0628 4.96788 10.1142 4.93653L11.4794 4.1014V5.70183C11.4794 5.76192 11.5282 5.81069 11.5883 5.81069H12.3934C12.4535 5.81069 12.5022 5.76192 12.5022 5.70183V4.10145L13.8674 4.93648C13.9187 4.96783 13.9858 4.95166 14.0171 4.90045L14.4374 4.21352C14.4524 4.18892 14.4571 4.15931 14.4503 4.13123C14.4436 4.10309 14.4259 4.07892 14.4013 4.06384Z" /></svg></span><span>6/6</span></span></div>
                    
            <div class="checklist-progress-bar-wrapper" style="">
        <div class="checklist-progress-bar" style="position: relative; width: 100%; background-color: #cccccc; margin-bottom: 2px; margin-top: 5px;">
                        <div class="checklist-progress" style="display: block; float: none; width: 100%; height: 2px; background: #14892c;">
                            </div>
        </div>
    </div>
        </div>
    
                                    <div style="display: flex; align-items: flex-start; padding: 0; margin-left: 12px; float: none; font-size: 14px;">
                                                                <span style="padding-right: 5px; align-self: flex-start;">
                                <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" class="checked"><path d="m21.530642,5.91574l-2.18201,-1.33473l2.18193,-1.33473c0.03753,-0.023 0.06444,-0.05996 0.07473,-0.10281c0.0103,-0.04285 0.00316,-0.08802 -0.01976,-0.12555l-0.64117,-1.04808c-0.04774,-0.07822 -0.15013,-0.10288 -0.22836,-0.05505l-2.08286,1.27419l0,-2.44184c0,-0.09168 -0.0744,-0.16609 -0.16608,-0.16609l-1.22844,0c-0.09168,0 -0.16608,0.07441 -0.16608,0.16609l0,2.44184l-2.08294,-1.27411c-0.07839,-0.04783 -0.18053,-0.02325 -0.22836,0.05506l-0.64117,1.04807c-0.02292,0.03753 -0.03006,0.08271 -0.01976,0.12556c0.01029,0.04285 0.0372,0.0798 0.07473,0.1028l2.18201,1.33465l-2.18201,1.33473c-0.03753,0.02292 -0.06444,0.05996 -0.07473,0.10273c-0.0103,0.04293 -0.00316,0.0881 0.01976,0.12564l0.64117,1.04799c0.04783,0.07822 0.14997,0.10297 0.22836,0.05514l2.08294,-1.2742l0,2.44185c0,0.09167 0.0744,0.16608 0.16608,0.16608l1.22844,0c0.09168,0 0.16608,-0.07441 0.16608,-0.16608l0,-2.44177l2.08294,1.27403c0.07823,0.04783 0.18062,0.02317 0.22837,-0.05497l0.64116,-1.04807c0.02292,-0.03754 0.03006,-0.08271 0.01977,-0.12556c-0.01022,-0.04293 -0.03721,-0.0798 -0.07474,-0.10281z" fill="#778899" /><path clip-rule="evenodd" d="m12.4779,3.94141l-9.03649,0c-1.65686,0 -3,1.34315 -3,3.00001l0,12c0,1.6568 1.34314,3 3,3l11.99999,0c1.6569,0 3,-1.3432 3,-3l0,-9.01487c-0.1928,0.02079 -0.3886,0.03146 -0.5869,0.03146c-0.9504,0 -1.8435,-0.24504 -2.6197,-0.6754l0.2066,0.20658l-8.0813,8.08133l-3.91869,-3.9187l1.17718,-1.1772l2.74151,2.7415l6.7567,-6.75675c-1.0305,-0.98505 -1.6725,-2.37332 -1.6725,-3.91151c0,-0.20501 0.0114,-0.40736 0.0336,-0.60645z" fill="#778899" fill-rule="evenodd" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span style="text-decoration: line-through;">
                                                        <span>Doc/release notes changes? Comment present?</span>

                        </span>
                    </div>
                                                                    <span style="padding-right: 1px; white-space: nowrap;">
                                                        
                                                        
                                                                                </span>
                                    </div>
                                                <div style="display: flex; align-items: flex-start; padding: 0; margin-left: 12px; float: none; font-size: 14px;">
                                                                <span style="padding-right: 5px; align-self: flex-start;">
                                <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" class="checked"><path d="m21.530642,5.91574l-2.18201,-1.33473l2.18193,-1.33473c0.03753,-0.023 0.06444,-0.05996 0.07473,-0.10281c0.0103,-0.04285 0.00316,-0.08802 -0.01976,-0.12555l-0.64117,-1.04808c-0.04774,-0.07822 -0.15013,-0.10288 -0.22836,-0.05505l-2.08286,1.27419l0,-2.44184c0,-0.09168 -0.0744,-0.16609 -0.16608,-0.16609l-1.22844,0c-0.09168,0 -0.16608,0.07441 -0.16608,0.16609l0,2.44184l-2.08294,-1.27411c-0.07839,-0.04783 -0.18053,-0.02325 -0.22836,0.05506l-0.64117,1.04807c-0.02292,0.03753 -0.03006,0.08271 -0.01976,0.12556c0.01029,0.04285 0.0372,0.0798 0.07473,0.1028l2.18201,1.33465l-2.18201,1.33473c-0.03753,0.02292 -0.06444,0.05996 -0.07473,0.10273c-0.0103,0.04293 -0.00316,0.0881 0.01976,0.12564l0.64117,1.04799c0.04783,0.07822 0.14997,0.10297 0.22836,0.05514l2.08294,-1.2742l0,2.44185c0,0.09167 0.0744,0.16608 0.16608,0.16608l1.22844,0c0.09168,0 0.16608,-0.07441 0.16608,-0.16608l0,-2.44177l2.08294,1.27403c0.07823,0.04783 0.18062,0.02317 0.22837,-0.05497l0.64116,-1.04807c0.02292,-0.03754 0.03006,-0.08271 0.01977,-0.12556c-0.01022,-0.04293 -0.03721,-0.0798 -0.07474,-0.10281z" fill="#778899" /><path clip-rule="evenodd" d="m12.4779,3.94141l-9.03649,0c-1.65686,0 -3,1.34315 -3,3.00001l0,12c0,1.6568 1.34314,3 3,3l11.99999,0c1.6569,0 3,-1.3432 3,-3l0,-9.01487c-0.1928,0.02079 -0.3886,0.03146 -0.5869,0.03146c-0.9504,0 -1.8435,-0.24504 -2.6197,-0.6754l0.2066,0.20658l-8.0813,8.08133l-3.91869,-3.9187l1.17718,-1.1772l2.74151,2.7415l6.7567,-6.75675c-1.0305,-0.98505 -1.6725,-2.37332 -1.6725,-3.91151c0,-0.20501 0.0114,-0.40736 0.0336,-0.60645z" fill="#778899" fill-rule="evenodd" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span style="text-decoration: line-through;">
                                                        <span>Downstream builds green?</span>

                        </span>
                    </div>
                                                                    <span style="padding-right: 1px; white-space: nowrap;">
                                                        
                                                        
                                                                                </span>
                                    </div>
                                                <div style="display: flex; align-items: flex-start; padding: 0; margin-left: 12px; float: none; font-size: 14px;">
                                                                <span style="padding-right: 5px; align-self: flex-start;">
                                <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" class="checked"><path d="m21.530642,5.91574l-2.18201,-1.33473l2.18193,-1.33473c0.03753,-0.023 0.06444,-0.05996 0.07473,-0.10281c0.0103,-0.04285 0.00316,-0.08802 -0.01976,-0.12555l-0.64117,-1.04808c-0.04774,-0.07822 -0.15013,-0.10288 -0.22836,-0.05505l-2.08286,1.27419l0,-2.44184c0,-0.09168 -0.0744,-0.16609 -0.16608,-0.16609l-1.22844,0c-0.09168,0 -0.16608,0.07441 -0.16608,0.16609l0,2.44184l-2.08294,-1.27411c-0.07839,-0.04783 -0.18053,-0.02325 -0.22836,0.05506l-0.64117,1.04807c-0.02292,0.03753 -0.03006,0.08271 -0.01976,0.12556c0.01029,0.04285 0.0372,0.0798 0.07473,0.1028l2.18201,1.33465l-2.18201,1.33473c-0.03753,0.02292 -0.06444,0.05996 -0.07473,0.10273c-0.0103,0.04293 -0.00316,0.0881 0.01976,0.12564l0.64117,1.04799c0.04783,0.07822 0.14997,0.10297 0.22836,0.05514l2.08294,-1.2742l0,2.44185c0,0.09167 0.0744,0.16608 0.16608,0.16608l1.22844,0c0.09168,0 0.16608,-0.07441 0.16608,-0.16608l0,-2.44177l2.08294,1.27403c0.07823,0.04783 0.18062,0.02317 0.22837,-0.05497l0.64116,-1.04807c0.02292,-0.03754 0.03006,-0.08271 0.01977,-0.12556c-0.01022,-0.04293 -0.03721,-0.0798 -0.07474,-0.10281z" fill="#778899" /><path clip-rule="evenodd" d="m12.4779,3.94141l-9.03649,0c-1.65686,0 -3,1.34315 -3,3.00001l0,12c0,1.6568 1.34314,3 3,3l11.99999,0c1.6569,0 3,-1.3432 3,-3l0,-9.01487c-0.1928,0.02079 -0.3886,0.03146 -0.5869,0.03146c-0.9504,0 -1.8435,-0.24504 -2.6197,-0.6754l0.2066,0.20658l-8.0813,8.08133l-3.91869,-3.9187l1.17718,-1.1772l2.74151,2.7415l6.7567,-6.75675c-1.0305,-0.98505 -1.6725,-2.37332 -1.6725,-3.91151c0,-0.20501 0.0114,-0.40736 0.0336,-0.60645z" fill="#778899" fill-rule="evenodd" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span style="text-decoration: line-through;">
                                                        <span>Solution information and context easily available?</span>

                        </span>
                    </div>
                                                                    <span style="padding-right: 1px; white-space: nowrap;">
                                                        
                                                        
                                                                                </span>
                                    </div>
                                                <div style="display: flex; align-items: flex-start; padding: 0; margin-left: 12px; float: none; font-size: 14px;">
                                                                <span style="padding-right: 5px; align-self: flex-start;">
                                <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" class="checked"><path d="m21.530642,5.91574l-2.18201,-1.33473l2.18193,-1.33473c0.03753,-0.023 0.06444,-0.05996 0.07473,-0.10281c0.0103,-0.04285 0.00316,-0.08802 -0.01976,-0.12555l-0.64117,-1.04808c-0.04774,-0.07822 -0.15013,-0.10288 -0.22836,-0.05505l-2.08286,1.27419l0,-2.44184c0,-0.09168 -0.0744,-0.16609 -0.16608,-0.16609l-1.22844,0c-0.09168,0 -0.16608,0.07441 -0.16608,0.16609l0,2.44184l-2.08294,-1.27411c-0.07839,-0.04783 -0.18053,-0.02325 -0.22836,0.05506l-0.64117,1.04807c-0.02292,0.03753 -0.03006,0.08271 -0.01976,0.12556c0.01029,0.04285 0.0372,0.0798 0.07473,0.1028l2.18201,1.33465l-2.18201,1.33473c-0.03753,0.02292 -0.06444,0.05996 -0.07473,0.10273c-0.0103,0.04293 -0.00316,0.0881 0.01976,0.12564l0.64117,1.04799c0.04783,0.07822 0.14997,0.10297 0.22836,0.05514l2.08294,-1.2742l0,2.44185c0,0.09167 0.0744,0.16608 0.16608,0.16608l1.22844,0c0.09168,0 0.16608,-0.07441 0.16608,-0.16608l0,-2.44177l2.08294,1.27403c0.07823,0.04783 0.18062,0.02317 0.22837,-0.05497l0.64116,-1.04807c0.02292,-0.03754 0.03006,-0.08271 0.01977,-0.12556c-0.01022,-0.04293 -0.03721,-0.0798 -0.07474,-0.10281z" fill="#778899" /><path clip-rule="evenodd" d="m12.4779,3.94141l-9.03649,0c-1.65686,0 -3,1.34315 -3,3.00001l0,12c0,1.6568 1.34314,3 3,3l11.99999,0c1.6569,0 3,-1.3432 3,-3l0,-9.01487c-0.1928,0.02079 -0.3886,0.03146 -0.5869,0.03146c-0.9504,0 -1.8435,-0.24504 -2.6197,-0.6754l0.2066,0.20658l-8.0813,8.08133l-3.91869,-3.9187l1.17718,-1.1772l2.74151,2.7415l6.7567,-6.75675c-1.0305,-0.98505 -1.6725,-2.37332 -1.6725,-3.91151c0,-0.20501 0.0114,-0.40736 0.0336,-0.60645z" fill="#778899" fill-rule="evenodd" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span style="text-decoration: line-through;">
                                                        <span><strong>Tests</strong></span>

                        </span>
                    </div>
                                                                    <span style="padding-right: 1px; white-space: nowrap;">
                                                        
                                                        
                                                                                </span>
                                    </div>
                                                <div style="display: flex; align-items: flex-start; padding: 0; margin-left: 12px; float: none; font-size: 14px;">
                                                                <span style="padding-right: 5px; align-self: flex-start;">
                                <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" class="checked"><path d="m21.530642,5.91574l-2.18201,-1.33473l2.18193,-1.33473c0.03753,-0.023 0.06444,-0.05996 0.07473,-0.10281c0.0103,-0.04285 0.00316,-0.08802 -0.01976,-0.12555l-0.64117,-1.04808c-0.04774,-0.07822 -0.15013,-0.10288 -0.22836,-0.05505l-2.08286,1.27419l0,-2.44184c0,-0.09168 -0.0744,-0.16609 -0.16608,-0.16609l-1.22844,0c-0.09168,0 -0.16608,0.07441 -0.16608,0.16609l0,2.44184l-2.08294,-1.27411c-0.07839,-0.04783 -0.18053,-0.02325 -0.22836,0.05506l-0.64117,1.04807c-0.02292,0.03753 -0.03006,0.08271 -0.01976,0.12556c0.01029,0.04285 0.0372,0.0798 0.07473,0.1028l2.18201,1.33465l-2.18201,1.33473c-0.03753,0.02292 -0.06444,0.05996 -0.07473,0.10273c-0.0103,0.04293 -0.00316,0.0881 0.01976,0.12564l0.64117,1.04799c0.04783,0.07822 0.14997,0.10297 0.22836,0.05514l2.08294,-1.2742l0,2.44185c0,0.09167 0.0744,0.16608 0.16608,0.16608l1.22844,0c0.09168,0 0.16608,-0.07441 0.16608,-0.16608l0,-2.44177l2.08294,1.27403c0.07823,0.04783 0.18062,0.02317 0.22837,-0.05497l0.64116,-1.04807c0.02292,-0.03754 0.03006,-0.08271 0.01977,-0.12556c-0.01022,-0.04293 -0.03721,-0.0798 -0.07474,-0.10281z" fill="#778899" /><path clip-rule="evenodd" d="m12.4779,3.94141l-9.03649,0c-1.65686,0 -3,1.34315 -3,3.00001l0,12c0,1.6568 1.34314,3 3,3l11.99999,0c1.6569,0 3,-1.3432 3,-3l0,-9.01487c-0.1928,0.02079 -0.3886,0.03146 -0.5869,0.03146c-0.9504,0 -1.8435,-0.24504 -2.6197,-0.6754l0.2066,0.20658l-8.0813,8.08133l-3.91869,-3.9187l1.17718,-1.1772l2.74151,2.7415l6.7567,-6.75675c-1.0305,-0.98505 -1.6725,-2.37332 -1.6725,-3.91151c0,-0.20501 0.0114,-0.40736 0.0336,-0.60645z" fill="#778899" fill-rule="evenodd" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span style="text-decoration: line-through;">
                                                        <span><strong>FixVersion</strong> filled and not yet released</span>

                        </span>
                    </div>
                                                                    <span style="padding-right: 1px; white-space: nowrap;">
                                                        
                                                        
                                                                                </span>
                                    </div>
                                                <div style="display: flex; align-items: flex-start; padding: 0; margin-left: 12px; float: none; font-size: 14px;">
                                                                <span style="padding-right: 5px; align-self: flex-start;">
                                <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" class="checked"><rect fill="#778899" height="18" rx="3" width="18" x="0.44141" y="3.94141"/><path d="m7.375718,15.21006l-2.7415,-2.7415l-1.177187,1.17719l3.918687,3.91865l8.08131,-8.08127l-1.1772,-1.177192l-6.90411,6.904122z" fill="white" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span style="text-decoration: line-through;">
                                                        <span>Architecture Decision Record (<strong>ADR</strong>)</span>

                        </span>
                    </div>
                                                                    <span style="padding-right: 1px; white-space: nowrap;">
                                                        
                                                        
                                                                                </span>
                                    </div>
                                            ]]>
    </checklist>


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_14145" key="com.intenso.jira.issue-templates:issue-templates-customfield">
                        <customfieldname>Template</customfieldname>
                        <customfieldvalues>
                            


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_15131" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Time in Discovery</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10032" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time in Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_13933" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Urgency (resolution)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="15724"><![CDATA[Normal]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>