<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Frontity Framework</title>
    <description>The latest articles on Forem by Frontity Framework (@frontity).</description>
    <link>https://forem.com/frontity</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F815%2Fbfd19ac7-aa50-42b8-9c1a-724c2cad6df5.png</url>
      <title>Forem: Frontity Framework</title>
      <link>https://forem.com/frontity</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/frontity"/>
    <language>en</language>
    <item>
      <title>Moving to Frontity: Diariomotor Case Study</title>
      <dc:creator>Reyes Martínez</dc:creator>
      <pubDate>Tue, 18 May 2021 12:56:11 +0000</pubDate>
      <link>https://forem.com/frontity/moving-to-frontity-diariomotor-case-study-3e60</link>
      <guid>https://forem.com/frontity/moving-to-frontity-diariomotor-case-study-3e60</guid>
      <description>&lt;h2&gt;
  
  
  About Diariomotor
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.diariomotor.com/"&gt;Diariomotor&lt;/a&gt; is a digital publication which in-depth provides coverage of the automotive world, featuring news, reviews, opinion articles and Formula 1.&lt;/p&gt;

&lt;p&gt;Founded in 2005 by Óscar Miguel and Daniel Seijo with the goal of combining their passions for cars and technology, Diariomotor has evolved over the years into one of the leading automotive publications in Spain.&lt;/p&gt;

&lt;p&gt;In 2020, a particularly tough year for this industry because of the pandemic, it reached over &lt;strong&gt;131 million page views&lt;/strong&gt;. That is between 10 and 12 million page views each month on average.&lt;/p&gt;

&lt;p&gt;Diariomotor runs two separate websites powered by WordPress and Frontity under the same domain: &lt;a href="https://www.diariomotor.com/"&gt;Diariomotor&lt;/a&gt; and &lt;a href="https://www.diariomotor.com/competicion/"&gt;Diariomotor Competición&lt;/a&gt;. The second one is a WordPress blog dedicated solely to providing news and information about motorsports.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Simplifying web development and maintenance
&lt;/h4&gt;

&lt;p&gt;Prior to using Frontity, Diaromotor had up to three different versions of its website.&lt;/p&gt;

&lt;p&gt;Besides a desktop version with its custom layout, it had a mobile theme powered by an external publisher platform which showed news and regular posts, but which omitted a customized section called &lt;a href="https://www.diariomotor.com/marcas/"&gt;'Coches'&lt;/a&gt;. This section, which contains 'cards' (custom post types) with information about car brands and prices and which is crucial to Diariomotor's project, wasn't supported by the publisher platform they were using, hence requiring them to have a separate mobile version for it.&lt;/p&gt;

&lt;p&gt;Within this scenario, the team was grappling with ongoing development challenges and suffering from inefficient workflows which restricted agility. One of the priorities at Diariomotor was to unify and simplify the development and maintenance of their websites.&lt;/p&gt;

&lt;h4&gt;
  
  
  Taking back control of the code
&lt;/h4&gt;

&lt;p&gt;The team at Diariomotor has a strong culture of iterating, experimenting, and innovating. They frequently look for and try new ways of interaction, content formats, and campaigns to learn what works best and helps boost Diariomotor's growth. When implementing new ideas, the team likes to have an exhaustive control over the code changes and to track the impact of those changes on analytics. They analyze the before and after pictures of even the smallest changes.&lt;/p&gt;

&lt;p&gt;The main issue was that the team no longer had complete control over its code: they were dependent on a third-party platform for everything related to their mobile website. This publisher platform could make unexpected changes to the code without prior notice. The consequences of the proprietary lock-in were sometimes costly, especially when something was broken or compromised, and their metrics were affected. In addition, the development team was required to open support tickets in order to make any changes or improvements to their own mobile website.&lt;/p&gt;

&lt;p&gt;These were all frustrating problems that added unnecessary time and pain to the team's workflow. They soon realized that this solution wasn't the most optimal for their needs. Moreover, it hindered the flexibility and speed they needed to experiment, adjust and make changes as new requirements and ideas emerged.&lt;/p&gt;

&lt;h4&gt;
  
  
  Focusing on performance
&lt;/h4&gt;

&lt;p&gt;At Diariomotor, where the revenue model is based on advertising, site speed and performance are two critical factors to its success. As such, the team is constantly searching for the best ways to optimize them, and provide a great news experience for their readers.&lt;/p&gt;

&lt;p&gt;Besides a solution that would enable them to tackle the above issues, the team at Diariomotor wanted a modern tech stack with a strong performance-oriented approach which would allow them to get the best possible results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adopting Frontity
&lt;/h2&gt;

&lt;p&gt;At the end of 2019, Diariomotor CTO Javier Serrano began leading the migration of Diariomotor with the goal of overcoming the challenges they were having with their legacy tech stack.&lt;/p&gt;

&lt;p&gt;He had known about Frontity since its initial release and had already looked into it well before the migration. When considering which solution to move to, Javier found the framework very easy to get started with, despite not being familiar with React, and decided to run some tests with it.&lt;/p&gt;

&lt;p&gt;After a few months of learning and testing, he had enough confidence in Frontity to migrate Diariomotor to a modern frontend environment. Rather than starting a greenfield project, the development team liked the idea of building their application using an open source framework which could connect to WordPress and could easily be extended to fit their needs.&lt;/p&gt;

&lt;p&gt;From kickoff to launch, the project led by Javier took a little over a year. The team rolled out the migration in two main phases. They started by moving the motorsports blog &lt;a href="http://diariomotor.com/competicion"&gt;Diariomotor Competición&lt;/a&gt; to Frontity and launched it in March 2020. Nine months later, they managed to complete the migration of the &lt;a href="http://diariomotor.com"&gt;Diariomotor.com&lt;/a&gt; site. Both sites are hosted in &lt;a href="https://www.stackscale.com/"&gt;Stackscale&lt;/a&gt;, which has support for WordPress and Node.js.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://frontity.org/wp-content/uploads/2021/04/diariomotor-showcase.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MP5M9CUp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://frontity.org/wp-content/uploads/2021/04/diariomotor-showcase.png" alt="Diariomotor.com Screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Diariomotor now uses &lt;a href="https://docs.frontity.org/learning-frontity/settings#multiple-sites"&gt;one Frontity multisite installation&lt;/a&gt; for the two websites. This enabled the team to simplify the diverse structure of the legacy tech stack, and to unify everything under just one project consisting of a single codebase.&lt;/p&gt;

&lt;p&gt;The new sites take advantage of such Frontity functionalities as the &lt;a href="https://api.frontity.org/frontity-packages/collections-packages/hooks/infinite-scroll-hooks"&gt;Infinite Scroll hooks&lt;/a&gt; and the &lt;a href="https://api.frontity.org/frontity-plugins/rest-api-head-tags"&gt;REST API - Head Tags&lt;/a&gt; package to add support for the All in One SEO WordPress plugin.&lt;/p&gt;

&lt;p&gt;In addition, the dev team made use of the &lt;a href="https://docs.frontity.org/learning-frontity/code-splitting"&gt;Code Splitting&lt;/a&gt; feature supported by Frontity to split large libraries and load them only when needed (on demand), thereby avoiding ending up with a large bundle and improving the performance of the application.&lt;/p&gt;

&lt;p&gt;In order to integrate third-party services, such as Google Analytics and Comscore, they adapted several Frontity packages to their own requirements.&lt;/p&gt;

&lt;p&gt;Thanks to Frontity's extensibility Diariomotor can reuse all these packages across their sites, helping them reduce both development time and maintenance workloads. Moreover, whenever they need to add new functionality or expand the capabilities of Frontity, they can use any of the existing Frontity and npm packages without having to build them from the ground up.&lt;/p&gt;

&lt;p&gt;Because of its impact on SEO and UX, there was a final requirement the team at Diariomotor needed to address after the migration: the WordPress redirects. These are key to help catch and correct incorrect URLs. Since last February, Frontity &lt;a href="https://docs.frontity.org/guides/redirections-with-frontity"&gt;supports this feature&lt;/a&gt; out of the box, allowing developers to configure and handle both client-side and server-side WordPress redirects quite easily. This helped Diariomotor set up the necessary redirects quickly, and take one more concern off the table.&lt;/p&gt;

&lt;p&gt;Going forward, they are interested in taking advantage of the &lt;a href="https://community.frontity.org/t/amp-package/388"&gt;Google AMP package&lt;/a&gt; for Frontity (currently in development).&lt;/p&gt;

&lt;h4&gt;
  
  
  The two layer cache system
&lt;/h4&gt;

&lt;p&gt;One of the things that Javier found particularly useful and that he values most about Frontity is the ability to have independent cache invalidation strategies for the WordPress REST API and the Frontity application, impacting positively both on performance and on the server load.&lt;/p&gt;

&lt;p&gt;For a better understanding, let's explain how this two layer cache system works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Both the WordPress REST API and the HTML generated by Frontity are aggressively cached.&lt;/li&gt;
&lt;li&gt; When the team deploys a new version of the site, which can happen several times a day, they only invalidate the HTML cache, but not the REST API cache.&lt;/li&gt;
&lt;li&gt; The Frontity application uses the REST API to get the necessary data, but those requests never hit WordPress, they hit the REST API cache, which means that generating the new HTML is really fast and cheap.&lt;/li&gt;
&lt;li&gt; Finally, both the REST API and the HTML caches are invalidated selectively when a post is created or updated, which means that any change in the data is instantly reflected in the frontend.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The result of this two-layer system is that the WordPress load is reduced by several orders of magnitude.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Everything is as fast and as performant as possible.&lt;/li&gt;
&lt;li&gt;  The server load is as low as possible.&lt;/li&gt;
&lt;li&gt;  Content updates are instantly reflected in the frontend.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This technique is similar to static site generators in the sense the HTML and REST API assets are only generated once and then served from a cache. The main difference is that the generation of those assets happens on the fly, instead of at build time, so this technique has no penalty for large sites such as Diariomotor, which has almost 500.000 URLs indexed by Google.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key benefits and results
&lt;/h2&gt;

&lt;p&gt;Diariomotor needed to migrate an existing production project, a challenge that comes with its own difficulties. But the challenge was even greater considering that the team had no previous experience with React.&lt;/p&gt;

&lt;p&gt;Frontity not only took all of their problems off the table but also made the whole learning process easier. It enabled Diariomotor to adopt a modern frontend architecture effectively, eliminating time-consuming maintenance and development workstreams, and freeing the team to focus on performance and growth. Plus, they have taken back control of their project's code.&lt;/p&gt;

&lt;p&gt;Apart from the ease of getting started with the framework, Javier found the support of the Frontity team and the forum resources especially helpful throughout the migration.&lt;/p&gt;

&lt;p&gt;The improved &lt;strong&gt;developer experience&lt;/strong&gt; is one of the biggest benefits that Diariomotor has gained from using the framework, allowing them to develop faster, to have more productive workflows, and to avoid common pitfalls.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"While working on this project I found many complex things that Frontity simplified and made easy. For example, the handlers make it really easy to make complex calls. Or not having to deal with the state manager, just managing it with &lt;a href="https://docs.frontity.org/guides/react-basic#state-manager-frontity-connect"&gt;Frontity Connect&lt;/a&gt; is magic."&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Javier Serrano, Diariomotor CTO.&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Along with a great developer experience, Javier highlighted the &lt;strong&gt;flexibility&lt;/strong&gt; Frontity has brought to their frontend development, especially the ability to create, and to experiment with, components and libraries easily. The team has regained the power to explore and implement new formats and campaigns with agility and speed.&lt;/p&gt;

&lt;h4&gt;
  
  
  Core Web Vitals improvements
&lt;/h4&gt;

&lt;p&gt;In addition to the above advantages, since moving to Frontity Diariomotor has observed significant improvements in performance and in its Core Web Vitals metrics.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://web.dev/vitals/"&gt;Core Web Vitals&lt;/a&gt; are a set of metrics introduced by Google that quantify key aspects of the user experience such as load time, interactivity, and the stability of content as it loads.&lt;/p&gt;

&lt;p&gt;This is great news for Diariomotor since these page experience signals are becoming a ranking factor for search results and a criterion to appear in Google Top Stories in &lt;a href="https://developers.google.com/search/blog/2021/04/more-details-page-experience"&gt;mid-June 2021&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The following screenshots, which have been taken from Diaromotor's public Chrome UX Report, show real user experience data on Diariomotor based on three main metrics: Largest Contentful Paint (LCP), First Input Delay (FID), and Cumulative Layout Shift (CLS).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Largest Contentful Paint (LCP)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://web.dev/lcp/"&gt;LCP&lt;/a&gt; measures the perceived load speed.&lt;/p&gt;

&lt;p&gt;If we compare January 2020 (legacy site) vs. January 2021 (with Frontity), Diariomotor has seen a 4.2% increase in the number of indexed URLs which have a 'good' LCP score (they take 2.5 seconds or less to load). More interesting is the fact that the number of pages that score a poor LCP have been reduced by 55.9%.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://frontity.org/wp-content/uploads/2021/04/LCP-Diariomotor-1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ESG-D521--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://frontity.org/wp-content/uploads/2021/04/LCP-Diariomotor-1.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First Input Delay&lt;/strong&gt; &lt;strong&gt;(FID)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;According to web.dev, the &lt;a href="https://web.dev/fid/"&gt;FID&lt;/a&gt; metric helps measure users' first impression of the site's interactivity and responsiveness.&lt;/p&gt;

&lt;p&gt;In January 2021, 94.3% of Diariomotor's pages were classified as 'good' (FID was 100 milliseconds or less). In comparison to the same period last year they have observed a 72.2% decrease in pages classified as 'poor FID'.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://frontity.org/wp-content/uploads/2021/04/FID-Diariomotor.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3bshqefr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://frontity.org/wp-content/uploads/2021/04/FID-Diariomotor.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cumulative Layout Shift (CLS)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://web.dev/cls/"&gt;CLS&lt;/a&gt; metric takes into account the visual stability of a page.&lt;/p&gt;

&lt;p&gt;Comparing January 2020 (legacy site) vs. January 2021 (with Frontity) again, Diariomotor has experienced a significant increase (128.7%) in the number of pages with a good CLS score (0.1 or less). On the other hand, pages classified as 'poor' have been reduced by 48.8%.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://frontity.org/wp-content/uploads/2021/04/CLS-Diariomotor-1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bKNBs5Vb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://frontity.org/wp-content/uploads/2021/04/CLS-Diariomotor-1.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With these improvements, Diariomotor is already in a favorable position to work on further performance optimizations and provide their visitors with a great user experience.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Now with Frontity we have one code (installation) for both websites, a fully responsive site and we have already seen performance improvements without doing anything special. Plus, the developer experience is great, maintaining the code is much easier."&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Javier Serrano, Diariomotor CTO.&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Diariomotor is no longer stuck with the legacy tech stack that made their websites hard to maintain and difficult to improve.&lt;/p&gt;

&lt;p&gt;Migrating to Frontity has allowed Javier and his team to steer clear of the previous headaches and drive the evolution of Diariomotor, putting them on the path to both better performance of their application and more productivity from their team.&lt;/p&gt;




&lt;p&gt;This case study was prepared based on an interview with Javier Serrano, CTO at Diariomotor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thank you to all the Diariomotor team&lt;/strong&gt; for bringing their expertise and experience around the table and for contributing to make Frontity better by providing feedback, testing features, and reporting bugs among many other things.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>react</category>
      <category>frontity</category>
      <category>casestudy</category>
    </item>
    <item>
      <title>Case Study: Migrating Aleteia to Frontity</title>
      <dc:creator>Reyes Martínez</dc:creator>
      <pubDate>Tue, 23 Feb 2021 17:25:14 +0000</pubDate>
      <link>https://forem.com/frontity/case-study-migrating-aleteia-to-frontity-4moo</link>
      <guid>https://forem.com/frontity/case-study-migrating-aleteia-to-frontity-4moo</guid>
      <description>&lt;h1&gt;
  
  
  Background
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://aleteia.org/"&gt;Aleteia&lt;/a&gt; is an online Catholic publication launched in 2013 and currently distributed in seven languages (English, French, Portuguese, Spanish, Italian, Polish and Slovenian).&lt;/p&gt;

&lt;p&gt;With more than 670,000 subscribers to their newsletter and more than 4 million fans on Facebook, Aleteia reaches over 13 million unique visitors and draws 40 million page views per month, making it &lt;strong&gt;the most popular Catholic website in the world&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://frontity.org/wp-content/uploads/2021/02/aleteia-numbers-finalasset.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lDNSkaYl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://frontity.org/wp-content/uploads/2021/02/aleteia-numbers-finalasset-1024x259.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In May 2020 Andrea Romano, Chief Technology Officer at Aleteia, contacted us to let us know that his team was discussing the opportunity to migrate all their websites to &lt;a href="https://frontity.org/"&gt;Frontity&lt;/a&gt;. Both the digital publishing industry and user behavior have evolved quickly during the last years. They wanted a &lt;strong&gt;performant, flexible, and modern stack&lt;/strong&gt; to improve their web experience and meet today's users expectations.&lt;/p&gt;

&lt;p&gt;Although it's been only a few months since they finished the migration to Frontity, we wanted to talk with Andrea to know how it went and how Frontity has helped them so far.&lt;/p&gt;

&lt;h1&gt;
  
  
  Project needs
&lt;/h1&gt;

&lt;p&gt;After Google’s algorithm core changes as well as Facebook’s strategy to give less organic post visibility on the news feed, Aleteia's global traffic wasn’t growing as expected at the beginning of 2020. Andrea and his team identified some areas of improvement, and one the biggest one was related to web performance and SEO.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Site speed is a ranking factor, and it’s especially critical for mobile pages. Slow websites have a lower number of conversions, a lower number of page views per visit, and higher bounce rates. Essentially, a slow site means people will bail because no one has the patience to wait for a website to load."&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Andrea Romano, CTO at Aleteia.&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We met Andrea in late 2018, when he approached us to learn more about our previous product (Frontity PRO) and how it could positively impact on Aleteia's performance and UX. Since then, the idea of building a React theme has been hanging over his head.&lt;/p&gt;

&lt;p&gt;The traffic drop made the &lt;strong&gt;need for a modern web app&lt;/strong&gt; a priority. Google just announced &lt;a href="https://webmasters.googleblog.com/2020/05/evaluating-page-experience.html"&gt;new metrics&lt;/a&gt; to evaluate how users perceive the experience of interacting with a web page, and they were also worried that their website could be penalized in the future. It was time to update the tech stack to correspond to the team needs.&lt;/p&gt;

&lt;p&gt;While their previous stack was stable, it lacked &lt;strong&gt;flexibility&lt;/strong&gt;. In order to improve the overall web experience, Andrea aimed to move Aleteia to a modern frontend which they could have more control over while maintaining the WordPress backend. They also needed something that would integrate well with all the services used by Aleteia.&lt;/p&gt;

&lt;p&gt;Lastly, they wanted a technology partner who could support them during the process. We have been in contact with Andrea for some time now. He already knew the benefits that Frontity brings for digital publishers as well as our dedication to help them succeed.&lt;/p&gt;

&lt;p&gt;When the time came to make a decision on the frontend stack, Frontity and our team just gave them the confidence they needed.&lt;/p&gt;

&lt;h1&gt;
  
  
  Approach
&lt;/h1&gt;

&lt;p&gt;Andrea's first approach for upgrading Aleteia's website was to develop a whole new custom theme in React using Frontity. However, as any greenfield project of this magnitude, they quickly realised that this was going to require a longer time frame.&lt;/p&gt;

&lt;p&gt;In order to address some of the above concerns quickly, the development team finally decided to put their efforts into migrating their WordPress theme to Frontity first. This would help simplify the process.&lt;/p&gt;

&lt;p&gt;As soon as we knew about their decision we connected Andrea with &lt;a href="https://orballo.dev/"&gt;Eduardo Campaña&lt;/a&gt;, who formerly worked at Frontity. They hired him as a freelancer to work on the project along with their two in-house engineers, who were new to Frontity.&lt;/p&gt;

&lt;p&gt;According to Andrea, Eduardo's help and guidance was fundamental in their transition to Frontity. He enabled the team to quickly get up and running with the framework and its development practices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In just a couple of months, they managed to complete the migration of all their websites.&lt;/strong&gt; That is seven websites in total (one per language), including the implementation of several packages to integrate their analytics and ads partners, as well as their GDPR and web push notifications services.&lt;/p&gt;

&lt;p&gt;Frontity's extensibility and its package management interface made this integration more efficient and allowed the team to continue using their preferred services.&lt;/p&gt;

&lt;p&gt;Aleteia's &lt;strong&gt;current tech stack&lt;/strong&gt; is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  WordPress multisite as backend for managing the content.&lt;/li&gt;
&lt;li&gt;  One &lt;a href="https://docs.frontity.org/learning-frontity/settings#multiple-sites"&gt;Frontity multisite installation&lt;/a&gt; which serves the content from their websites.&lt;/li&gt;
&lt;li&gt;  WordPress VIP Go enterprise hosting platform with Node.js support.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://frontity.org/wp-content/uploads/2021/02/aleteia-showcase.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mnhdTwew--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://frontity.org/wp-content/uploads/2021/02/aleteia-showcase.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
You can visit Aleteia's main website at [aleteia.org](https://aleteia.org/).



&lt;p&gt;Right now, Andrea and his team are working on adding premium content for paid subscriptions. They will keep adding progressive enhancements and features to Aleteia during the next months.&lt;/p&gt;

&lt;p&gt;Among the reasons for choosing Frontity, Andrea's particular emphasis was on the &lt;strong&gt;support and expertise from our team&lt;/strong&gt;. "We didn't choose Frontity only for technological reasons. One of the key factors which convinced us to use it was the team behind it, because they gave us a sense of real support" he said. Andrea also recognised that the fact of &lt;a href="https://frontity.org/blog/announcing-frontitys-e1m-funding-round-with-automattic-and-k-fund/"&gt;being invested by Automattic&lt;/a&gt; was a plus that reaffirmed his confidence in the project.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I truly believe in the people. If the team is well prepared, I trust in what they are building. And the people who work at Frontity is what makes it unique."&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Andrea Romano, CTO at Aleteia.&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Outcomes
&lt;/h1&gt;

&lt;p&gt;Frontity brings a lot of advantages that go beyond performance, SEO, and scalability. A &lt;strong&gt;great developer experience&lt;/strong&gt; when it comes to creating a more complex UI among the top ones.&lt;/p&gt;

&lt;p&gt;Going for WordPress and Frontity in the stack ensured that Aleteia doesn't spend time re-inventing the wheel and that they get the best possible results in the short term.&lt;/p&gt;

&lt;h3&gt;
  
  
  A seamless migration
&lt;/h3&gt;

&lt;p&gt;Frontity helped the migration run smoothly, which allowed Aleteia's team to &lt;strong&gt;reduce the development time to two months&lt;/strong&gt; and accomplish their goals in a very short period of time.&lt;/p&gt;

&lt;p&gt;While they still have bigger plans with the framework, switching to Frontity was already a great first step in evolving their website, and it helped them cut the time it takes to migrate seven editions.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Everything went smoothly and in just a couple of months we were able to publish all the websites. I recommend using Frontity because it significantly helps minimize the development time. The product is solid and stable."&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Andrea Romano, CTO at Aleteia.&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  A powerful, extensible frontend stack
&lt;/h3&gt;

&lt;p&gt;Aleteia now uses the latest in frontend technologies and provides a greater overall user experience.&lt;/p&gt;

&lt;p&gt;They are armed with a performant website that is easier to maintain, allows them to handle iterations easily, and gives them room to implement new features and third-party integrations as new requirements emerge.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"&lt;strong&gt;One of the best things about Frontity is that it's very flexible&lt;/strong&gt;. Even a complex website like Aleteia, with seven editions and different packages between them, is quite easy to tweak."&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Eduardo Campaña, developer in the Aleteia project.&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In addition, because Frontity is rendered dynamically, it makes it a great fit for medium and large scale publishers like Aleteia with a lot of content that might change rapidly, giving them a great power and reliability when it comes to frequent and real-time updates.&lt;/p&gt;

&lt;h3&gt;
  
  
  The same robust editorial experience
&lt;/h3&gt;

&lt;p&gt;Lastly, moving to Frontity meant no interruption to Aleteia’s publishing workflow. This is especially important for teams that produce many pieces of content every day, as even the smallest impact on their workflow can pay dearly.&lt;/p&gt;

&lt;p&gt;With the new decoupled approach only the development team at Aleteia works directly with Frontity, leaving the content editors to continue working in WordPress as if nothing had changed.&lt;/p&gt;




&lt;p&gt;We are proud to see what Aleteia has accomplished in such a short time. &lt;strong&gt;Special thanks to Andrea Romano and his team&lt;/strong&gt; for taking the time to share their story with us, and for contributing to make Frontity better with their feedback.&lt;/p&gt;

&lt;p&gt;This project has allowed even a closer collaboration between both teams, and we look forward to growing together.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>react</category>
      <category>frontity</category>
      <category>casestudy</category>
    </item>
    <item>
      <title>Announcing a New Version of the Frontity Docs</title>
      <dc:creator>JuanMa</dc:creator>
      <pubDate>Mon, 22 Feb 2021 17:03:18 +0000</pubDate>
      <link>https://forem.com/frontity/announcing-a-new-version-of-the-frontity-docs-5ah4</link>
      <guid>https://forem.com/frontity/announcing-a-new-version-of-the-frontity-docs-5ah4</guid>
      <description>&lt;p&gt;Documentation is one of our &lt;strong&gt;key priorities&lt;/strong&gt; here at Frontity and we want it to be the best possible resource for the community.&lt;/p&gt;

&lt;p&gt;Since the formation of the Frontity Developer Relations team almost one year ago, Michael and I (JuanMa) have been analyzing and &lt;a href="https://community.frontity.org/t/frontity-learning-experience-learning-journey/2662"&gt;consulting&lt;/a&gt; with the rest of the team and with the community about how the documentation could be improved and made more effective.&lt;/p&gt;

&lt;p&gt;After several months of work, we're excited to announce that &lt;strong&gt;we have revamped the documentation&lt;/strong&gt; to bring you more helpful resources and improve your experience with Frontity.&lt;/p&gt;

&lt;p&gt;In addition to the &lt;a href="https://frontity.org/blog/learn-frontity-with-our-new-step-by-step-tutorial/"&gt;recently announced&lt;/a&gt; step-by-step tutorial, we've published a new API reference site and reorganised the docs across three different sites:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://tutorial.frontity.org/"&gt;Step-by-step tutorial&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://docs.frontity.org/"&gt;Conceptual understanding / Guides&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://api.frontity.org/"&gt;API Reference&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before explaining these changes in detail, let us tell you more about the reasons behind them. If you can't wait to see what's new, feel free to jump ahead to this section.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why are we making these changes?
&lt;/h1&gt;

&lt;p&gt;The goal of the changes we've made is to provide you with the most useful information in the most appropriate context as and when you need it. The new structure will make it easier for you to understand and consume the information presented in the documentation, and will also make it easier for you to find and apply the knowledge in your own projects.&lt;/p&gt;

&lt;p&gt;Following the analysis and the various conversations we had we detected that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  We lacked a good tutorial that could guide any developer interested in learning Frontity through the process of creating a theme from scratch whilst also covering the most important features of a Frontity project.&lt;/li&gt;
&lt;li&gt;  We needed to separate out two types of documentation that were mixed together in the same place:

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;API Reference docs&lt;/strong&gt;: these are more detailed and technical explanations that can be easily used as a reference when developing a Frontity project.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Guides docs&lt;/strong&gt;: these are practical and theoretical explanations that could help our users to fully understand the potential of Frontity and that could guide them in the development of their projects.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After arriving at these conclusions we decided to &lt;strong&gt;split the documentation&lt;/strong&gt; across three different sites that represent the distinct purposes or functions that good documentation should fulfil, namely: tutorial, reference, and conceptual understanding.&lt;/p&gt;

&lt;p&gt;Previously all the information was lumped together in one place, making it hard to find the precise bit of information that you needed, or to distinguish between what was intended to be conceptual understanding and what was intended to be reference.&lt;/p&gt;

&lt;h1&gt;
  
  
  What's new?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  New structure with separate sections
&lt;/h3&gt;

&lt;p&gt;The new structure of the documentation will provide you with three separate sections, each of them can be found under a separate sub-domain of frontity.org:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Tutorial → &lt;code&gt;[tutorial.frontity.org](https://tutorial.frontity.org/)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  Conceptual understanding / Guides → &lt;code&gt;[docs.frontity.org](https://docs.frontity.org/)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  API Reference → &lt;code&gt;[api.frontity.org](https://api.frontity.org/)&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;1. Tutorial&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Found under the &lt;code&gt;tutorial&lt;/code&gt; sub-domain this is our recently published step-by-step guide. This is the site to visit if you're new to Frontity and looking to learn how to develop sites using Frontity, or if you've previously worked with Frontity but feel that your knowledge is fragmented or incomplete.&lt;/p&gt;

&lt;p&gt;The tutorial teaches web development with Frontity in a progressive and sequential way. It is primarily a didactic resource. You can learn more about it in this &lt;a href="https://frontity.org/blog/learn-frontity-with-our-new-step-by-step-tutorial/"&gt;blog post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Docs / Guides&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This section can be found under the &lt;code&gt;docs&lt;/code&gt; sub-domain where all the documentation previously resided. This is where you should go if you want to deepen your conceptual understanding of how Frontity works and how a Frontity project should be implemented.&lt;/p&gt;

&lt;p&gt;As well as theoretical information, such as Frontity architecture, you can also find some practical guides here. For example how to &lt;a href="https://docs.frontity.org/deployment"&gt;deploy a Frontity site&lt;/a&gt; or &lt;a href="https://docs.frontity.org/guides/troubleshooting"&gt;troubleshoot your Frontity project&lt;/a&gt;. Some practical how-to's will also be coming to this section in the near future.&lt;/p&gt;

&lt;p&gt;In addition to the above we have here useful introductions to &lt;a href="https://docs.frontity.org/guides/javascript-basics"&gt;JavaScript/ES6&lt;/a&gt; and &lt;a href="https://docs.frontity.org/guides/react-basic"&gt;React&lt;/a&gt; in case you need to get up to speed with these.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. API Reference&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The API Reference is where you go when you want to look up a specific piece of information that you need in order to implement your Frontity project in the most efficient and effective way. This section will primarily be used by those developers who know what they are looking for and need to find it quickly.&lt;/p&gt;

&lt;p&gt;This section can be found under the &lt;code&gt;api&lt;/code&gt; sub-domain. Read on to learn more about this newest addition to the documentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  New API Reference site
&lt;/h3&gt;

&lt;p&gt;Whereas the step-by-step tutorial is focused on learning Frontity, the focus of the &lt;a href="https://api.frontity.org/"&gt;API Reference&lt;/a&gt; is instead on providing technical information and detailed descriptions of the tools available for a Frontity project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://frontity.org/wp-content/uploads/2021/02/api-reference-site-asset.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zEkcf19d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://frontity.org/wp-content/uploads/2021/02/api-reference-site-asset.png" alt="Screenshot of the API Reference site"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We've divided the content into four primary sections: CLI, Packages, Themes, and WordPress Plugins.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Frontity CLI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Almost every Frontity project will start in the terminal at the command prompt. &lt;a href="https://api.frontity.org/frontity-cli"&gt;This section&lt;/a&gt; is where you'll find comprehensive information about the commands, and the command line options, provided by the Frontity CLI that you can use to create, run and build your Frontity projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Packages&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://api.frontity.org/frontity-packages"&gt;Packages&lt;/a&gt; are the building blocks of your Frontity project. They're NPM packages which implement specific logic required by the project. Included here are references for Frontity core, the source package (&lt;code&gt;@frontity/wp-source&lt;/code&gt;), the router package (&lt;code&gt;@frontity/tiny-router&lt;/code&gt;), amongst others.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Themes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In reality a Frontity theme is just a special instance of a Frontity package. At root everything is a package when you're working with Frontity.&lt;/p&gt;

&lt;p&gt;However most developers working on a Frontity project will primarily be working on a theme. We have therefore afforded the built-in themes (&lt;code&gt;@frontity/mars-theme&lt;/code&gt; and &lt;code&gt;@frontity/twentytwenty-theme&lt;/code&gt;) their own &lt;a href="https://api.frontity.org/frontity-themes"&gt;dedicated section&lt;/a&gt; of the API Reference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WordPress Plugins&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In order to get the most from headless WordPress there will be times when you will want to add functionality to the backend server. At these times you will need to install a PHP-based WordPress Plugin.&lt;/p&gt;

&lt;p&gt;Oftentimes Frontity plugins will extend the REST API to provide additional content that you can use in your Frontity project. Information on using and configuring these plugins in WordPress, and consuming the data in Frontity, can be found in &lt;a href="https://api.frontity.org/frontity-plugins"&gt;this section&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  We're not done yet...
&lt;/h1&gt;

&lt;p&gt;This is just &lt;strong&gt;the beginning of several improvements&lt;/strong&gt; we plan to add to the documentation.&lt;/p&gt;

&lt;p&gt;Over the last year the DevRel team have been working on what we refer to as the "Frontity Learning Experience". Work on this led us to consider what might be the best way to explain and present the knowledge required to work with Frontity.&lt;/p&gt;

&lt;p&gt;The result of this research was that we derived &lt;a href="https://community.frontity.org/t/documentation-2-0-structure/3382"&gt;certain conclusions&lt;/a&gt; regarding what content was needed by Frontity developers, and what was the best way to structure it. The continuing implementation of these results will be the DevRel team's top priority during the current calendar year.&lt;/p&gt;




&lt;p&gt;Keen to dig in? Great! Check out the new docs and &lt;a href="https://community.frontity.org/t/announcing-a-new-version-of-the-frontity-docs/4061"&gt;let us know what you think&lt;/a&gt; of the new structure.&lt;/p&gt;

&lt;p&gt;Contributions to improve the documentation are always welcome. The Frontity docs are housed on GitHub and you can &lt;strong&gt;suggest changes and improvements&lt;/strong&gt; at any time by following these &lt;a href="https://github.com/frontity/docs/blob/master/CONTRIBUTING.md"&gt;contributing guidelines&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>react</category>
      <category>webdev</category>
      <category>frontity</category>
    </item>
    <item>
      <title>Learn Frontity with the New Step-by-Step Tutorial</title>
      <dc:creator>Michael Burridge</dc:creator>
      <pubDate>Mon, 08 Feb 2021 15:31:09 +0000</pubDate>
      <link>https://forem.com/frontity/learn-frontity-with-our-new-step-by-step-tutorial-1g9e</link>
      <guid>https://forem.com/frontity/learn-frontity-with-our-new-step-by-step-tutorial-1g9e</guid>
      <description>&lt;p&gt;We’re delighted to announce Frontity's new step-by-step tutorial, a learning resource designed to guide you through the creation of a Frontity project from start to finish.&lt;/p&gt;

&lt;p&gt;The goal of the tutorial is to provide you with a deep and solid understanding of web development with Frontity.&lt;/p&gt;

&lt;p&gt;It can be found at &lt;a href="https://tutorial.frontity.org/"&gt;tutorial.frontity.org&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the step-by-step tutorial?
&lt;/h2&gt;

&lt;p&gt;The Frontity step-by-step tutorial is a progressive sequence of lessons that takes you &lt;strong&gt;from the absolute basics to a solid understanding&lt;/strong&gt; of Frontity, how it works, and how to develop themes and other functionality with Frontity.&lt;/p&gt;

&lt;p&gt;The tutorial is designed for those developers who are newcomers to Frontity. However, it will also be extremely useful for those who may have been developing with Frontity for a while but who feel that they lack a complete and wholistic understanding of working with Frontity, who feel that their knowledge is instead fragmented and incomplete.&lt;/p&gt;

&lt;p&gt;Each lesson in the tutorial builds on what was learned before and so it is intended that you should work through the course in the order in which it is presented.&lt;/p&gt;

&lt;p&gt;Upon completion of the tutorial you will have gained a comprehensive understanding of working with Frontity, thereby enabling you to approach the development of a Frontity project with confidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why are we launching this tutorial?
&lt;/h2&gt;

&lt;p&gt;There are many third party blog posts introducing Frontity available on the web, such as &lt;a href="https://css-tricks.com/frontity-is-react-for-wordpress/"&gt;this one&lt;/a&gt;, &lt;a href="https://softwareengineeringdaily.com/2020/11/24/frontity-bringing-react-to-wordpress/"&gt;this one&lt;/a&gt;, or &lt;a href="https://blog.logrocket.com/getting-started-with-frontity/"&gt;this one&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Although these are great introductory posts, they usually cover little more than installing Frontity and configuring it to connect to a WordPress site as its data source.&lt;/p&gt;

&lt;p&gt;We also have the &lt;a href="https://docs.frontity.org/getting-started"&gt;Getting Started guide&lt;/a&gt; and the &lt;a href="https://docs.frontity.org/"&gt;documentation&lt;/a&gt;, which help you jump straight into code and configure Frontity to your needs, but &lt;strong&gt;there was a need for a more comprehensive guide&lt;/strong&gt; to learn and understand Frontity in a structured and progressive way.&lt;/p&gt;

&lt;p&gt;The lack of such of a comprehensive guide meant that developers learned to work with Frontity in a piecemeal kind of way, checking the documentation in one situation, consulting a code sample in another, or asking in the &lt;a href="https://community.frontity.org/"&gt;community forum&lt;/a&gt; when they got stuck.&lt;/p&gt;

&lt;p&gt;Developers therefore frequently felt a bit lost, or as though they were figuring things out as they went along rather than coding confidently with the feeling that they knew what they were doing.&lt;/p&gt;

&lt;p&gt;The goal of this tutorial is to help developers who are working with Frontity to have that confidence and to be self-sufficient as they work on their projects, by providing them with a solid understanding of what they are doing, and why.&lt;/p&gt;

&lt;h2&gt;
  
  
  What can you expect from it?
&lt;/h2&gt;

&lt;p&gt;You will learn to work with Frontity by building a fully working Frontity theme, starting from scratch.&lt;/p&gt;

&lt;p&gt;While pre-built themes are available, such as the bundled &lt;code&gt;mars-theme&lt;/code&gt; and &lt;code&gt;twentytwenty-theme&lt;/code&gt;, or a &lt;a href="https://www.npmjs.com/search?q=frontity%20theme"&gt;variety of third party themes&lt;/a&gt;, the best way to develop a solid understanding of Frontity is by building a theme from the ground up.&lt;/p&gt;

&lt;p&gt;Many developers have learned to work with Frontity in an ad-hoc and experimental way by hacking one of these pre-built themes.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The tutorial teaches and reinforces best practice by showing you how to build a theme from scratch.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Starting from the very basics by installing Frontity and creating a theme package, the tutorial goes on to create a fully-featured and functional theme, that is also pleasingly styled.&lt;/p&gt;

&lt;p&gt;Along the way a number of different topics are covered, from listing posts, to displaying posts and pages, to styling the project and adding interactivity. The tutorial even shows how to make a Frontity project SEO friendly, refines the theme with some finishing touches, and demonstrates how to use Custom Post Types.&lt;/p&gt;

&lt;p&gt;As you work through the course you can compare your code at each stage with the &lt;a href="https://github.com/frontity-demos/tutorial-hello-frontity/tags"&gt;corresponding commit&lt;/a&gt; in &lt;a href="https://github.com/frontity-demos/tutorial-hello-frontity"&gt;this repo&lt;/a&gt;, so you'll always be sure that you're on the right track.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://frontity.org/wp-content/uploads/2021/02/frontity-tutorial-screenshot02.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XZVh6mqU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://frontity.org/wp-content/uploads/2021/02/frontity-tutorial-screenshot02.png" alt="Table of contents of the step-by-step tutorial."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Theoretical topics are also covered, so that you will develop an understanding of the structure of Frontity's "state" and the prescribed method of accessing data in that state.&lt;/p&gt;

&lt;p&gt;The finished project is then deployed to a live server so that you can not only show off your achievement to the world, but also use it as the basis for your own project. Yes indeed, the project developed during the tutorial can be considered a "starter theme" that you can go on to build upon and make your own.&lt;/p&gt;

&lt;p&gt;A preview of the finished site and the final version of the code can be seen in &lt;a href="https://codesandbox.io/s/github/frontity-demos/tutorial-hello-frontity"&gt;this CodeSandbox&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;Ready to get started? Great! Check out the new tutorial at &lt;a href="https://tutorial.frontity.org/"&gt;tutorial.frontity.org&lt;/a&gt; and do let us know what you think of it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Frontity's step-by-step tutorial docs is housed on GitHub - you can suggest changes and improvements at any time by following these &lt;a href="https://github.com/frontity/docs/blob/master/CONTRIBUTING.md"&gt;contributing guidelines&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>react</category>
      <category>frontity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Introducing the Frontity Public Roadmap Page</title>
      <dc:creator>Reyes Martínez</dc:creator>
      <pubDate>Fri, 22 Jan 2021 09:24:59 +0000</pubDate>
      <link>https://forem.com/frontity/introducing-the-frontity-public-roadmap-page-4hpb</link>
      <guid>https://forem.com/frontity/introducing-the-frontity-public-roadmap-page-4hpb</guid>
      <description>&lt;p&gt;We're excited to share with you the &lt;a href="https://frontity.org/roadmap/"&gt;Frontity Roadmap page&lt;/a&gt;: a new page where you can learn more about Frontity's public roadmap and how to keep track of the framework updates.&lt;/p&gt;

&lt;h3&gt;
  
  
  A step towards more transparency
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://frontity.org/blog/frontity-2020-a-year-in-review/#framework-updates"&gt;During last year&lt;/a&gt; we shipped more than 20 releases, including features and packages to make adding functionality to your Frontity projects easier. We also improved the &lt;a href="https://community.frontity.org/c/feature-discussions/33"&gt;Feature Discussions&lt;/a&gt; category of the community forum to explain the meaning of each feature status.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://frontity.org/wp-content/uploads/2021/01/feature-discussions-states.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7McuL6kd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://frontity.org/wp-content/uploads/2021/01/feature-discussions-states-1024x513.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However, we know that it was still not easy to keep track of what we're going to be shipping. We have to admit that there is room for improvement in the way we communicate the roadmap and what you can expect from Frontity.&lt;/p&gt;

&lt;p&gt;The main goal of having this page is to share our internal planning for features development and &lt;strong&gt;give as much visibility as possible&lt;/strong&gt;. We're aware that with more transparency into what we're building, Frontity users, partners, and agencies can also plan better.&lt;/p&gt;

&lt;p&gt;We're continuously improving Frontity and shipping new features with &lt;strong&gt;a strong focus on quality&lt;/strong&gt;. The Roadmap page will be maintained and reviewed on a quarterly basis accordingly. It contains the features we're working on to release in the coming months, and the "why" behind each (the goals those new features are addressing).&lt;/p&gt;

&lt;h3&gt;
  
  
  Why a mid-term roadmap
&lt;/h3&gt;

&lt;p&gt;A long-term roadmap is usually a less specific plan that paints a picture of where the product might go. While our vision and product strategy is clear, we cannot give precise dates nor guarantee specific features in the long-term.&lt;/p&gt;

&lt;p&gt;A short or mid-term roadmap is not 100% fixed either. Obviously things happen and priorities may shift. As an open-source project, there are also bugs and issues that need to be fixed on a regular basis. However, we feel that it's a more accurate roadmap, with a summary of real and tangible goals that will help give the community greater visibility into what's next.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's coming in Frontity
&lt;/h3&gt;

&lt;p&gt;As you can see from the &lt;a href="https://frontity.org/roadmap/#2021-roadmap"&gt;new page&lt;/a&gt;, during the next months we'll be focused on features such as the server extensibility, the Frontity WordPress plugin, and the version 2.0 of the &lt;code&gt;source&lt;/code&gt; package, among others.&lt;/p&gt;

&lt;p&gt;All of them will bring significant developer experience improvements. Others are specifically designed to improve the framework core. We believe this will ease the development and integration of other Frontity packages in the future.&lt;/p&gt;

&lt;p&gt;The Frontity roadmap is the result of an &lt;strong&gt;ongoing discovery and prioritization process&lt;/strong&gt; that involves user interviews and feedback from publishers, partners, and those who use the product.&lt;/p&gt;

&lt;p&gt;If you are a Frontity user and want to help shape the roadmap, please feel free to join the &lt;a href="https://community.frontity.org/"&gt;community forum&lt;/a&gt; and share your feedback and suggestions with us. We are constantly looking for ways to make the experience with Frontity the best it can be, so we highly value all input.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stay in the loop
&lt;/h3&gt;

&lt;p&gt;Apart from the roadmap, we also included some resources where you can keep track of our work, stay informed about what's new, and get involved. In summary:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feature Discussions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These are &lt;a href="https://community.frontity.org/c/feature-discussions/33"&gt;conversations&lt;/a&gt; where we research and discuss the implementations of a feature. The idea of each FD is to give you more information and details about a feature and its &lt;a href="https://community.frontity.org/c/feature-discussions/l/latest?board=default"&gt;status&lt;/a&gt;. They are public so everyone is welcome to join in and share feedback. You also can suggest new features by opening a new topic, or vote for those which you are most interested in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Releases&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In general, you can expect a new release every 15 days, although this time may vary slightly depending on the features which need to be finished. To be notified when new releases or features are out, you can subscribe to the &lt;a href="https://community.frontity.org/c/framework-development/releases/44"&gt;Releases&lt;/a&gt; forum category or to the '&lt;a href="https://community.frontity.org/c/feature-discussions/released/40"&gt;Released&lt;/a&gt;' tag instead (this way you will be only notified of the features that are tagged as 'released').&lt;/p&gt;

&lt;p&gt;Alternatively, in order to stay up-to-date with the most important updates, community projects, and content surrounding the framework, you can always &lt;a href="https://frontity.org/#newsletter"&gt;subscribe&lt;/a&gt; to the newsletter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sprints&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The dev team organizes their work in sprints of 4 weeks, and divides it into specific tasks. To know what they are currently working on, take a look at the &lt;a href="https://github.com/orgs/frontity/projects"&gt;GitHub boards&lt;/a&gt; or at the summary of the sprint that's in progress in the &lt;a href="https://community.frontity.org/c/framework-development/sprints/43"&gt;community forum&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;We hope you can have more visibility on upcoming features with the new Roadmap page, and that it helps you build successful projects with Frontity.&lt;/p&gt;

&lt;p&gt;If you have any questions or comments about the Roadmap page, feel free to share them &lt;a href="https://community.frontity.org/t/blog-post-introducing-the-frontity-roadmap-page/3844"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>react</category>
      <category>frontity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Frontity 2020: A Year in Review</title>
      <dc:creator>Reyes Martínez</dc:creator>
      <pubDate>Mon, 28 Dec 2020 13:41:48 +0000</pubDate>
      <link>https://forem.com/frontity/frontity-2020-a-year-in-review-5106</link>
      <guid>https://forem.com/frontity/frontity-2020-a-year-in-review-5106</guid>
      <description>&lt;p&gt;Here we are at the end of 2020, and what a year it's been!&lt;/p&gt;

&lt;p&gt;Despite the circumstances and the challenges that we've all faced over recent months, we feel lucky that our work hasn't been negatively impacted by the pandemic.&lt;/p&gt;

&lt;p&gt;2020 has actually been &lt;strong&gt;an exciting and busy year for Frontity&lt;/strong&gt;. We're proud of what we and Frontity's amazing community have accomplished so far. Before the New Year, we wanted to take a look back over some of our biggest updates and the milestones that shaped 2020 for us. Let's get into them!&lt;/p&gt;

&lt;h2&gt;
  
  
  Framework updates
&lt;/h2&gt;

&lt;p&gt;Over the course of the last year we've shipped more than 20 releases.&lt;/p&gt;

&lt;p&gt;To start the year we rolled out the 1.0 version of the &lt;a href="https://frontity.org/blog/introducing-twenty-twenty-frontity-theme/"&gt;Twenty Twenty Frontity Theme&lt;/a&gt;, with pagination, proper status codes, and other CSS improvements.&lt;/p&gt;

&lt;p&gt;Apart from addressing many other improvements we also continued to make adding functionality to your Frontity projects easier by releasing different &lt;strong&gt;packages and features&lt;/strong&gt;, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://community.frontity.org/t/support-for-yoast-plugin-rest-api-fields/2626/28"&gt;Frontity Yoast Package&lt;/a&gt;, which adds support for the REST API output of Yoast SEO plugin (14.0 or newest versions).&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://community.frontity.org/t/wordpress-comments-package/1267/89"&gt;WordPress Comments Package&lt;/a&gt;, to support native WordPress comments.&lt;/li&gt;
&lt;li&gt;  First beta version of both the &lt;a href="https://community.frontity.org/t/google-ad-manager/1587/9"&gt;Google Ad Manager Package&lt;/a&gt; and the &lt;a href="https://community.frontity.org/t/smart-adserver/1586/10"&gt;Smart AdServer Package&lt;/a&gt;, both of which allow you to integrate ads from these servers with Frontity really easily.&lt;/li&gt;
&lt;li&gt;  New &lt;a href="https://docs.frontity.org/api-reference-1/frontity-components#link"&gt;&lt;code&gt;&amp;lt;Link&amp;gt;&lt;/code&gt; component&lt;/a&gt; and the &lt;a href="https://docs.frontity.org/api-reference-1/frontity-components#auto-prefetch"&gt;auto-prefetch feature&lt;/a&gt; to easily speed up navigation (a huge thank you to &lt;a href="https://github.com/nicholasio"&gt;@nicholasio&lt;/a&gt; for this contribution!).&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://docs.frontity.org/api-reference-1/frontity-analytics"&gt;Analytics Packages&lt;/a&gt;, to add Google Analytics, Google Tag Manager, and Comscore to your Frontity projects.&lt;/li&gt;
&lt;li&gt;  Beta version of the &lt;a href="https://community.frontity.org/t/infinite-scroll-hooks/2055"&gt;infinite scroll feature&lt;/a&gt; (thanks to &lt;a href="https://github.com/orballo"&gt;@orballo&lt;/a&gt; for his work and improvements on this hook!).&lt;/li&gt;
&lt;li&gt;  A &lt;a href="https://docs.frontity.org/api-reference-1/frontity#slot"&gt;&lt;code&gt;Slot&lt;/code&gt; component&lt;/a&gt; which can be used to fulfil the "Slot and Fill" pattern.&lt;/li&gt;
&lt;li&gt;  A &lt;a href="https://docs.frontity.org/api-reference-1/frontity-components#switch"&gt;&lt;code&gt;Switch&lt;/code&gt; component&lt;/a&gt; to improve the routing between pages.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://community.frontity.org/t/frontity-release-rest-api-head-tags-plugin-and-package/1069"&gt;REST API - Head Tags Plugin and Package&lt;/a&gt;, to add the meta tags generated by some of the most popular WordPress SEO plugins to the REST API output and get automatically all the data in Frontity.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As part of the upcoming Frontity PHP plugin, we also created a &lt;strong&gt;Proof of Concept&lt;/strong&gt; of the &lt;a href="https://community.frontity.org/t/frontity-php-plugin/3619#embedded-mode"&gt;Frontity Embedded Mode&lt;/a&gt; with &lt;a href="https://community.frontity.org/t/frontity-release-preview-support-in-the-embedded-proof-of-concept/3031"&gt;post preview support&lt;/a&gt;. This offers a new way to use WordPress and Frontity together under the same domain by embedding the React theme. By using this mode, you don't have to worry about all those things which are difficult to replicate in a traditional headless setup (like instant cache invalidation, CORS, or redirections, among many other benefits).&lt;/p&gt;

&lt;p&gt;In addition, we released new &lt;a href="https://docs.frontity.org/guides"&gt;guides&lt;/a&gt; and demos, improved the documentation, and we also introduced &lt;a href="https://www.youtube.com/playlist?list=PLC9teX20GdrTBeOzSwE-bFW-MbBEUwowS"&gt;Frontity Talks&lt;/a&gt;. Frontity Talks is a series of videos created by our DevRel team to demonstrate and explain a variety of different topics related to Frontity.&lt;/p&gt;

&lt;p&gt;Last but not least, we launched a brand new &lt;a href="https://github.com/frontity/frontity.org"&gt;frontity.org&lt;/a&gt; website this year. Built with &lt;strong&gt;Gutenberg and Frontity&lt;/strong&gt;, this was a great opportunity for us to learn more about the new WordPress editor and leverage its strengths. Mario, our Product Manager, recently published this &lt;a href="https://frontity.org/blog/connecting-gutenberg-and-frontity/"&gt;blog post&lt;/a&gt; in order to share the process we followed and all the things we learned from the experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We've got some exciting things planned for 2021&lt;/strong&gt;. There are already some features on the horizon, such as server extensibility, version 2.0 of the &lt;code&gt;source&lt;/code&gt; package, and Frontity hooks, all of which will bring significant developer experience improvements. We'll be following up with our roadmap for the coming months soon!&lt;/p&gt;

&lt;p&gt;Thank you for contributing code, helping improve the documentation, giving us feedback, helping answer questions in the community, or simply for just using the framework. This has enabled much of the progress we've made this year.&lt;/p&gt;

&lt;h2&gt;
  
  
  Company updates
&lt;/h2&gt;

&lt;p&gt;In April, we &lt;a href="https://frontity.org/blog/announcing-frontitys-e1m-funding-round-with-automattic-and-k-fund/"&gt;announced&lt;/a&gt; a &lt;strong&gt;€1M funding round with Automattic and K Fund&lt;/strong&gt;. Frontity was born around the idea of building great web experiences with WordPress and React easily. Getting financial backing has allowed us to invest more effort in helping deliver on our mission, and make the project sustainable.&lt;/p&gt;

&lt;p&gt;We also started to collaborate with a number of WordPress hosting companies to make it easier to deploy your Frontity websites on your preferred hosting platform. &lt;a href="https://pantheon.io/decoupled-cms"&gt;Pantheon's new Decoupled&lt;/a&gt; &lt;a href="https://pantheon.io/decoupled-cms"&gt;&lt;/a&gt; &lt;a href="https://pantheon.io/decoupled-cms"&gt;Bridge&lt;/a&gt; is a good example in this direction. Here's a &lt;a href="https://youtu.be/p7Ow0jCahu4"&gt;quick demo&lt;/a&gt; of how this solution works with Frontity.&lt;/p&gt;

&lt;p&gt;In October, we launched a &lt;a href="https://frontity.org/partners/"&gt;partnership program&lt;/a&gt; to collaborate and join forces with various WordPress agencies. 10up, one of the largest WordPress-centric agencies in the world, was the &lt;a href="https://frontity.org/blog/announcing-our-new-partnership-with-10up/"&gt;first partner to join in&lt;/a&gt;. We can't wait to do more together!&lt;/p&gt;

&lt;p&gt;To end the year, Frontity was featured in Runa Capital's &lt;a href="https://runacap.com/ross-index/"&gt;ROSS Index&lt;/a&gt; as one of the fastest-growing open-source startups for Q3 2020.&lt;/p&gt;

&lt;h2&gt;
  
  
  Community
&lt;/h2&gt;

&lt;p&gt;In the last year, we've seen more than 40,000 NPM downloads and 1200 stars on &lt;a href="https://github.com/frontity/frontity"&gt;GitHub&lt;/a&gt;. Also, more than &lt;strong&gt;500 members&lt;/strong&gt; have joined the &lt;a href="https://community.frontity.org/"&gt;community forum&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You have built some beautiful Frontity starter themes, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://github.com/awsmin/f1"&gt;F1 Starter Theme&lt;/a&gt; (by AWSM)&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/alexadark/frontity-starter-theme"&gt;Frontity Starter Theme&lt;/a&gt; (by Alexandra Spalato)&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/Matnard/frontity-dimension-theme"&gt;Frontity Dimension Theme&lt;/a&gt; (by Mathieu Mencé)&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/chakra-ui/frontity-chakra-ui-theme"&gt;Frontity Chakra Theme&lt;/a&gt; (by Segun Adebayo)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And also many, many other &lt;strong&gt;awesome projects&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://frontity.org/showcase/"&gt;Showcase Page&lt;/a&gt; includes examples from big online publications such as &lt;a href="https://frontity.org/blog/case-study-migrating-aleteia-to-frontity/"&gt;Aleteia&lt;/a&gt; and &lt;a href="https://frontity.org/blog/diariomotor-case-study/"&gt;Diariomotor&lt;/a&gt; to personal projects. Go check them out if you haven't yet!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://frontity.org/showcase/"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WkcviOfH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://frontity.org/wp-content/uploads/2020/12/showcase-page.png" alt="Screenshot of the Showcase page "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But that's not all. During the last 12 months, you have written blog posts and guides, made video tutorials, and helped spread the word about the framework around the globe.&lt;/p&gt;

&lt;p&gt;So far we have seen &lt;strong&gt;talks about Frontity in six different countries&lt;/strong&gt;! We're grateful for all these amazing contributions from the community. Please keep them coming! 🙌&lt;/p&gt;

&lt;p&gt;Our team also had the chance to get involved in online gatherings with the WordPress community and with other open-source communities this year. Because of the growth of online events, we could attend and speak at many local meetups and conferences from around the world, including WordCamp Europe, JSNation Live, WordCamp Los Angeles, and WordCamp Colombia.&lt;/p&gt;

&lt;p&gt;We gave 14 talks, hosted 2 workshops, and supported the JavaScript for WordPress Conference and JSNation Live as sponsors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Looking Forward to 2021
&lt;/h2&gt;

&lt;p&gt;We couldn't have done all this without you helping us out in such a multitude of ways. Thank you so much for being part of Frontity and for all your support over the past year. 💙&lt;/p&gt;

&lt;p&gt;We are excited to be kicking off a new year and can't wait to share with you all that we have planned for it!&lt;/p&gt;

&lt;p&gt;Happy New Year from all of us at Frontity! See you in 2021!&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>react</category>
      <category>frontity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Connecting Gutenberg and Frontity</title>
      <dc:creator>SantosGuillamot</dc:creator>
      <pubDate>Fri, 27 Nov 2020 09:37:40 +0000</pubDate>
      <link>https://forem.com/frontity/connecting-gutenberg-and-frontity-35e3</link>
      <guid>https://forem.com/frontity/connecting-gutenberg-and-frontity-35e3</guid>
      <description>&lt;p&gt;This is a written version of the &lt;em&gt;"Connecting Gutenberg and Frontity: A Case Study"&lt;/em&gt; talk that I gave at the &lt;a href="https://javascriptforwp.com/conference/" rel="noopener noreferrer"&gt;2020 JavaScript for WordPress Conference&lt;/a&gt;. You can find the slides &lt;a href="https://drive.google.com/file/d/1o4hZ8hscnY8WmUERXDbXE45IVsk8tn7E/view" rel="noopener noreferrer"&gt;here&lt;/a&gt; and watch the full talk on &lt;a href="https://www.youtube.com/watch?v=5EIqBfD_LTY" rel="noopener noreferrer"&gt;Youtube&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=5EIqBfD_LTY" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fimg.youtube.com%2Fvi%2F5EIqBfD_LTY%2F0.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gutenberg (also known as the block editor) is already being used by many WordPress users. Rolled into WordPress 5.0, it has reinvented the experience of creating and managing content in WordPress.&lt;/p&gt;

&lt;p&gt;In this talk, we walk you through the process we followed to rebuild our website (&lt;a href="https://frontity.org/" rel="noopener noreferrer"&gt;frontity.org&lt;/a&gt;) with Gutenberg and Frontity. We share all the challenges and lessons learnt, and what we considered to be the best approach to solve them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Table of contents
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Why use Gutenberg and Frontity together?
&lt;/li&gt;
&lt;li&gt;Goals of the process&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Connecting Gutenberg and Frontity&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
How did we implement it?

&lt;ol&gt;
&lt;li&gt;Adapting Frontity to Gutenberg&lt;/li&gt;
&lt;li&gt;Block patterns&lt;/li&gt;
&lt;li&gt;Template parts&lt;/li&gt;
&lt;li&gt;@frontity/html2react&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusions&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
What went well
&lt;/li&gt;
&lt;li&gt;Lessons learnt and next steps&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;h1&gt;
  
  
  Why use Gutenberg and Frontity together?
&lt;/h1&gt;

&lt;p&gt;As you already know, WordPress as a publishing tool is great. That is one of the main reasons why it's widely used for different websites. In addition, Gutenberg opened a new paradigm which is revolutionizing the way we build, edit, and publish online. Its goal is to make the publishing experience even easier. &lt;/p&gt;

&lt;p&gt;By using Gutenberg with a React framework like Frontity, you can benefit from the best of these two worlds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffrontity.org%2Fwp-content%2Fuploads%2F2020%2F11%2FWhy-Gutenberg-and-Frontity.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffrontity.org%2Fwp-content%2Fuploads%2F2020%2F11%2FWhy-Gutenberg-and-Frontity.png" alt="Why Gutenberg and Frontity asset"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First, you will get a great &lt;strong&gt;editing experience&lt;/strong&gt; thanks to WordPress and Gutenberg. Frontity allows you to maintain the publishing workflow with all the awesome functionalities that are already made for the WordPress editor.&lt;/p&gt;

&lt;p&gt;On the other hand, because Frontity is based on React, you will be able to create more complex user interfaces while having a &lt;strong&gt;great developer experience&lt;/strong&gt;. In the same way that WordPress usage is increasing each year and is the most popular CMS, React is becoming a popular library for taking over front-end development.&lt;/p&gt;

&lt;p&gt;Lastly, thanks to Frontity's unique approach, combining WordPress and React has never been easier. The framework deals with all the setup needed like Babel, WebPack, the WordPress REST API, the routing... so that you can focus on building your React theme.&lt;/p&gt;

&lt;p&gt;If you are interested in knowing more about why Frontity can be a great fit for your project as well as our vision, take a look at this &lt;a href="https://www.youtube.com/watch?v=9OkLcgxNSLo" rel="noopener noreferrer"&gt;introductory talk about the framework&lt;/a&gt; that our co-founder Pablo gave at the JavaScript for WordPress Conference.&lt;/p&gt;

&lt;h1&gt;
  
  
  Goals of the process
&lt;/h1&gt;

&lt;p&gt;Before starting the migration, we defined the project's goals and requirements that we needed to keep in mind during the whole process. This helped us prioritize and make other decisions later.&lt;/p&gt;

&lt;h4&gt;
  
  
  Explain Frontity better
&lt;/h4&gt;

&lt;p&gt;After discontinuing the development of Frontity PRO (our previous product) in order to focus on Frontity Framework, we hadn't updated our website to reflect the changes to the product. We felt that the new framework wasn't being properly explained. We had been working on new features which were not mentioned in the homepage, and some of the benefits of using Frontity weren't clearly expressed. For these reasons, our first and main goal was to redesign the whole website to explain everything better and start getting more traction.&lt;/p&gt;

&lt;h4&gt;
  
  
  Make everything editable from Gutenberg
&lt;/h4&gt;

&lt;p&gt;Sometimes when developing a website, you are tempted to hardcode specific parts of the content or layout that you don't plan to update frequently. An example could be the header or the footer of a website. This can be even more tempting in a headless setup, where some aspects might be a bit more difficult to implement.&lt;/p&gt;

&lt;p&gt;In our case, we wanted the marketing team or any other member of the team to be able to easily change the website's copy, or to add or delete sections in the future without having to rely on the dev team. Such flexibility was an essential requirement for us. In the end, this is what a CMS like WordPress is for, right?&lt;/p&gt;

&lt;h4&gt;
  
  
  Create new pages easily
&lt;/h4&gt;

&lt;p&gt;This is closely related to the previous point: we wanted the ability to create new pages in an easy way. Not just simple pages, but also more complex ones in which we could reuse different layout elements. We thought that, with a proper implementation, we should be able to build nice landing pages just by reusing some patterns of the homepage.&lt;/p&gt;

&lt;p&gt;We knew this was going to be another requirement at some point (for building the &lt;a href="https://frontity.org/partner/10up/" rel="noopener noreferrer"&gt;10up partner page&lt;/a&gt; or similar ones, for example). And again, we didn't want anyone to have to depend on the dev team to do this.&lt;/p&gt;

&lt;h4&gt;
  
  
  Find the best way to connect Gutenberg and Frontity
&lt;/h4&gt;

&lt;p&gt;&lt;span&gt;Frontity aims to solve all the challenges that a headless setup may cause. For this reason, we want to ensure that Frontity's integration with the WordPress block editor is as smooth as possible. This was the perfect opportunity to understand it better, learn from our own experience, and work on solutions for any issue&lt;/span&gt; we might encounter.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connecting Gutenberg and Frontity
&lt;/h3&gt;

&lt;h1&gt;
  
  
  How did we implement it?
&lt;/h1&gt;

&lt;p&gt;We based the implementation on 4 important aspects and reasons.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Adapting Frontity to Gutenberg&lt;/strong&gt;. This allowed us to use the block editor just as it is.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Block patterns&lt;/strong&gt;. This enabled us to reuse layout elements in different parts of the website easily.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Template parts&lt;/strong&gt;. This made it possible to edit common elements that are used in all pages (e.g. the header or footer).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;@frontity/html2react&lt;/strong&gt;. This allowed us to add React logic to any HTML element we wanted.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  1. Adapting Frontity to Gutenberg
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1.1. How Gutenberg works?
&lt;/h3&gt;

&lt;p&gt;In order to find the best way to connect Frontity and Gutenberg, we had to understand first how Gutenberg works:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffrontity.org%2Fwp-content%2Fuploads%2F2020%2F11%2FGutenberg-flow-vertical.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffrontity.org%2Fwp-content%2Fuploads%2F2020%2F11%2FGutenberg-flow-vertical.png" alt="Gutenberg flow asset"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add any block from the WordPress editor&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Just as they do in any WordPress site, users can create their desired layout using the block editor. They first select the blocks they are going to use, and then define their specific properties. There are Gutenberg blocks for almost everything, and each block has different properties. For example, the paragraph block has a property to change the text colour, and in the image block you'll find properties to change the image's size or alignment. Similarly with the video block, which has different properties to change the controls or activate the autoplay functionality.&lt;/p&gt;

&lt;p&gt;In our case, we didn't find anything that we couldn't already do with the built-in Gutenberg blocks. This means that we didn't have to create any custom blocks for our website, which made the implementation much easier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gutenberg outputs the HTML adding some classes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once the user saves a post, Gutenberg outputs the HTML and adds different classes to match each block's properties defined by the user. It doesn't output the block attributes but valid HTML.&lt;/p&gt;

&lt;p&gt;This is important because, in the end, both Gutenberg and React are basically just HTML. In other words, we don't have to link each block with React. The Gutenberg HTML, with the classes it adds, is available in the REST API and is fetched by Frontity automatically. This allows Frontity to work with it in the same way it works with any common post. It doesn't require any further integration. We just have to add React logic to the HTML elements we want.&lt;/p&gt;

&lt;p&gt;This is an example of the image block, aligned to the right:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;figure class="wp-block-image alignright size-large"&amp;gt;
  &amp;lt;img
    src="..."
    class="wp-image-6616"
    alt="AWSM F1 Frontity Theme screenshot"
    ...
  /&amp;gt;
&amp;lt;/figure&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Gutenberg adds two css files to match that classes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In order to match the layout defined in the editor, Gutenberg creates two css files which add the logic to style the post. Since Frontity is already getting the HTML from the REST API, this is great because we just have to add these files in our Frontity theme to match the classes output in the HTML. From there, Gutenberg is already supported, and we simply have to add React logic to the HTML elements we want.&lt;/p&gt;

&lt;p&gt;This would be the css that matches the previous example:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.wp-block-image .alignright {
  float: right;
  margin-left: 1em;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;There are two exceptions that are not included in these files: colour palette and font sizes.&lt;/p&gt;

&lt;p&gt;In Gutenberg, you can define a &lt;a href="https://developer.wordpress.org/block-editor/developers/themes/theme-support/#block-color-palettes" rel="noopener noreferrer"&gt;theme palette&lt;/a&gt; (a set of colours) in order to select your own colours in the block editor. Gutenberg will create the new class &lt;code&gt;has-$slug-color&lt;/code&gt; but this won't be included in the theme.css and style.css. So we have to make it match from within Frontity. We can add our own colours by adding this simple snippet to WordPress:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;add_action( 'after_setup_theme', 'prefix_register_colors' );
function prefix_register_colors() {
    add_theme_support(
        'editor-color-palette', array(
            /* Frontity colors */
            array(
                'name'  =&amp;gt; esc_html__( 'Frontity', 'nude' ),
                'slug' =&amp;gt; 'frontity',
                'color' =&amp;gt; '#1f38c5',
            ),
            array(
                'name'  =&amp;gt; esc_html__( 'Primary', 'nude' ),
                'slug' =&amp;gt; 'primary',
                'color' =&amp;gt; '#0f1c64',
            ),
        )
    );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The same happens with the different &lt;a href="https://developer.wordpress.org/block-editor/developers/themes/theme-support/#block-font-sizes" rel="noopener noreferrer"&gt;font sizes&lt;/a&gt;. You can define your own set of font sizes to replace the default ones, and Gutenberg will add the class &lt;code&gt;has-$slug-font-size&lt;/code&gt; with this simple snippet:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;add_theme_support( 'editor-font-sizes', array(
    array(
        'name'      =&amp;gt; __( 'Large', 'nude' ),
        'shortName' =&amp;gt; __( 'L', 'nude' ),
        'size'      =&amp;gt; 20,
        'slug'      =&amp;gt; 'large'
    ),
    array(
        'name'      =&amp;gt; __( 'Medium', 'nude' ),
        'shortName' =&amp;gt; __( 'M', 'nude' ),
        'size'      =&amp;gt; 16,
        'slug'      =&amp;gt; 'medium'
    ),
    array(
        'name'      =&amp;gt; __( 'Small', 'nude' ),
        'shortName' =&amp;gt; __( 'S', 'nude' ),
        'size'      =&amp;gt; 14,
        'slug'      =&amp;gt; 'small'
    )
) );
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Imagine we have a paragraph, then we change the font size to &lt;em&gt;medium&lt;/em&gt; and we select the &lt;em&gt;frontity&lt;/em&gt; color, previously included in our theme palette. Gutenberg will output something like this:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;p class="has-medium-font-size has-frontity-color has-text-color&amp;gt;
  My formatted paragraph
&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  1.2. How to adapt Frontity to this workflow
&lt;/h3&gt;

&lt;p&gt;Knowing this, in order to integrate Gutenberg in your Frontity project you just have to add the styling logic which is lacking, as the HTML output by Gutenberg will be available in the REST API.&lt;/p&gt;

&lt;p&gt;This is how we did it. First, we added the content of the theme.css and the style.css files that Gutenberg creates. The content of both files is available in the &lt;a href="https://plugins.trac.wordpress.org/browser/gutenberg/tags/9.2.1/build/block-library" rel="noopener noreferrer"&gt;SVN repository&lt;/a&gt;, and you can select any version of Gutenberg you are using. Once we had this logic, we created these two css files in &lt;a href="https://github.com/frontity/frontity.org/tree/dev/packages/frontity-org-theme/src/components/styles/gutenberg" rel="noopener noreferrer"&gt;our Frontity theme&lt;/a&gt;, and we imported them into the &lt;a href="https://github.com/frontity/frontity.org/blob/dev/packages/frontity-org-theme/src/components/index.tsx" rel="noopener noreferrer"&gt;index.js file&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { connect, css, Global, Head, styled } from "frontity";
...
import gutenbergStyle from "./styles/gutenberg/style.css";
import gutenbergTheme from "./styles/gutenberg/theme.css";

const Theme = ({ state }) =&amp;gt; {
  const data = state.source.get(state.router.link);

  return (
    &amp;lt;&amp;gt;
      &amp;lt;Global styles={css(gutenbergStyle)} /&amp;gt;
      &amp;lt;Global styles={css(gutenbergTheme)} /&amp;gt;
      ...
    &amp;lt;/&amp;gt;
  );
};

export default connect(Theme);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;After doing this, everything added from Gutenberg was supported except the colours and the font-sizes. As previously mentioned, we had defined our own colour palette and font-sizes.&lt;/p&gt;

&lt;p&gt;In order to match the different colours we had created, the first step we took was to add them to Frontity state as well. To do so, we added them to &lt;code&gt;state.theme.colors&lt;/code&gt; in the &lt;a href="https://github.com/frontity/frontity.org/blob/dev/packages/frontity-org-theme/src/state/index.ts#L5-L17" rel="noopener noreferrer"&gt;index.ts file&lt;/a&gt; of our theme. Now they were accessible from any part of our Frontity project. Apart from this, we created two processors (explained later): one for the &lt;a href="https://github.com/frontity/frontity.org/blob/dev/packages/frontity-org-theme/src/processors/text-color.tsx" rel="noopener noreferrer"&gt;text-color&lt;/a&gt;, and other for the &lt;a href="https://github.com/frontity/frontity.org/blob/dev/packages/frontity-org-theme/src/processors/background-color.tsx" rel="noopener noreferrer"&gt;background-color&lt;/a&gt; that extracts the colour which is used and, looking into &lt;code&gt;state.theme.colors&lt;/code&gt;, adds the css needed for this.&lt;/p&gt;

&lt;p&gt;Moreover, we created a new util named &lt;a href="https://github.com/frontity/frontity.org/blob/dev/packages/frontity-org-theme/src/utils/index.ts#L3-L16" rel="noopener noreferrer"&gt;addAlpha&lt;/a&gt; (used in these processors) to add opacity to these colours if a specific class is matched. This isn't supported by Gutenberg yet, so we decided to implement it ourselves.&lt;/p&gt;

&lt;p&gt;On the other hand, to match the font-sizes, we added the css we wanted for the specific classes. We did it using a &lt;a href="https://github.com/frontity/frontity.org/blob/dev/packages/frontity-org-theme/src/processors/paragraph.ts#L26-L36" rel="noopener noreferrer"&gt;processor&lt;/a&gt;, but this can be done directly in the css files:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.has-small-font-size {
    font-size: 14px;
    line-height: 20px;
}

.has-medium-font-size {
    font-size: 16px;
    line-height: 24px;
}

.has-small-font-size {
    font-size: 20px;
    line-height: 32px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;And that's it. Now that we had connected Gutenberg and Frontity, we just needed to add the React logic to the HTML elements we wanted.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Block patterns
&lt;/h2&gt;

&lt;p&gt;From the Gutenberg side, we realised that we were using the same layouts in different parts of the website. We wanted to be able to reuse them in an easy way, not only for the existing pages but also for future ones. After some research, we decided to use &lt;a href="https://developer.wordpress.org/block-editor/developers/block-api/block-patterns/" rel="noopener noreferrer"&gt;Block Patterns&lt;/a&gt; for this purpose.&lt;/p&gt;

&lt;p&gt;Block patterns are basically a group of Gutenberg blocks that have been combined together to create a page layout. Once you have created a block pattern, it can be reused throughout your website. That is, you can combine different blocks with different properties, create a pattern and placed it anywhere you like. Then you will only have to change the content within it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffrontity.org%2Fwp-content%2Fuploads%2F2020%2F11%2FBlock-patterns.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffrontity.org%2Fwp-content%2Fuploads%2F2020%2F11%2FBlock-patterns.png" alt="Block Patterns asset"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A good example of a block pattern can be found in the &lt;a href="https://frontity.org/#why-frontity" rel="noopener noreferrer"&gt;"Why Frontity?"&lt;/a&gt; section. As you can see, all the feature items follow the same pattern: they have an icon with a squared background, a heading 4, and a paragraph with medium font size. Instead of building each item from scratch, we created a block pattern with the required properties and reused it to list each of the different features.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.1. How to create block patterns
&lt;/h3&gt;

&lt;p&gt;Here's the code that you can include in your &lt;code&gt;functions.php&lt;/code&gt; or in a Code Snippet. However, for a more detailed explanation, please check the &lt;a href="https://developer.wordpress.org/block-editor/developers/block-api/block-patterns/" rel="noopener noreferrer"&gt;Block Patterns documentation&lt;/a&gt;.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?php

register_block_pattern(
   'pattern-slug',
   array(
       'title'   =&amp;gt; __( 'Pattern name' ),
       'content' =&amp;gt; '...Gutenberg HTML...',
   )
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;After adding this simple function, the patterns that you've created will appear in the Gutenberg editor. In order to create the HTML, what we did first was to create the patterns using the visual editor. Then we changed the properties that we needed. Once we had considered them finished, we switched from the visual to the code editor and copied and pasted the HTML. Doing things this way made everything much easier.&lt;/p&gt;

&lt;p&gt;For this you don't have to do anything in your Frontity project. This only affects the Gutenberg editing experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.2. How to use them
&lt;/h3&gt;

&lt;p&gt;Once we had created the patterns, it was really easy to use them in the Gutenberg editor. On the same button that you use to add blocks there's a new tab named Patterns where you can find the ones that were previously defined.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffrontity.org%2Fwp-content%2Fuploads%2F2020%2F11%2FAdd-block-patterns-1024x810.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffrontity.org%2Fwp-content%2Fuploads%2F2020%2F11%2FAdd-block-patterns-1024x810.png" alt="How to add block patterns asset"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Template parts
&lt;/h2&gt;

&lt;p&gt;The Gutenberg plugin in its experimental version creates a new Custom Post type named &lt;a href="https://developer.wordpress.org/block-editor/tutorials/block-based-themes/#what-is-needed-to-create-a-block-based-theme" rel="noopener noreferrer"&gt;Template Parts&lt;/a&gt;, which is an important part of &lt;a href="https://developer.wordpress.org/block-editor/tutorials/block-based-themes/" rel="noopener noreferrer"&gt;block-based themes&lt;/a&gt;. We decided to use it for the common elements on every page, such as the footer or the header.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffrontity.org%2Fwp-content%2Fuploads%2F2020%2F11%2FTemplate-parts.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffrontity.org%2Fwp-content%2Fuploads%2F2020%2F11%2FTemplate-parts.png" alt="Template parts asset"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As they are a CPT, we can edit them just as we do with any other post or page, and WordPress then outputs the content in the REST API. For example, if we create a Template Part for the footer using WordPress, we can fetch the content in this endpoint: &lt;a href="https://frontity.org/wp-json/wp/v2/template-parts?slug=footer" rel="noopener noreferrer"&gt;https://frontity.org/wp-json/wp/v2/template-parts?slug=footer&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;After creating all the template parts that we needed, the next step was to fetch them in our Frontity app and make sure they were available for every page. In order to achieve this, we had to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;a href="https://github.com/frontity/frontity.org/blob/dev/frontity.settings.js#L26-L35" rel="noopener noreferrer"&gt;Include the Template Parts CPT&lt;/a&gt; in the &lt;code&gt;frontity.settings.js&lt;/code&gt; file. As we're including &lt;code&gt;/blog/&lt;/code&gt; for the post permalinks, we had to add that as well.&lt;/li&gt;
&lt;li&gt; &lt;a href="https://github.com/frontity/frontity.org/blob/dev/packages/frontity-org-theme/src/state/index.ts#L20-L26" rel="noopener noreferrer"&gt;Create an array&lt;/a&gt; in the &lt;code&gt;index.js&lt;/code&gt; file of our theme to define all the template parts that we wanted to fetch.&lt;/li&gt;
&lt;li&gt; &lt;a href="https://github.com/frontity/frontity.org/blob/dev/packages/frontity-org-theme/src/actions.ts#L5-L9" rel="noopener noreferrer"&gt;Create a Frontity action&lt;/a&gt; to fetch all these template parts &lt;a href="https://docs.frontity.org/learning-frontity/actions#beforessr-server-only-__" rel="noopener noreferrer"&gt;Before Server Side Rendering&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At this point, our Frontity state already had the content of all the template parts. Now we just had to create the React components that would consume this content. For example, we created &lt;a href="https://github.com/frontity/frontity.org/blob/dev/packages/frontity-org-theme/src/components/footer.tsx" rel="noopener noreferrer"&gt;the &lt;code&gt;&amp;lt;Footer /&amp;gt;&lt;/code&gt; component&lt;/a&gt; for the footer template part.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. @frontity/html2react
&lt;/h2&gt;

&lt;p&gt;Finally, in order to add React logic to just the HTML elements where we wanted to create a more complex interface, we used the &lt;a href="https://docs.frontity.org/api-reference-1/frontity-html2react" rel="noopener noreferrer"&gt;&lt;code&gt;@frontity/html2react&lt;/code&gt; package&lt;/a&gt;. This package not only parses all the HTML content, but also allows you to hook into any HTML element that you want to extend or modify.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffrontity.org%2Fwp-content%2Fuploads%2F2020%2F11%2Fhtml2react-vertical.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffrontity.org%2Fwp-content%2Fuploads%2F2020%2F11%2Fhtml2react-vertical.png" alt="html2react asset"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It does this based on two important aspects: &lt;strong&gt;nodes&lt;/strong&gt; and &lt;strong&gt;processors&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.1. html2react nodes
&lt;/h3&gt;

&lt;p&gt;Nodes are the JavaScript objects the package returns once you have hooked into an HTML element with all the information about it. Let's imagine we have this small piece of HTML and we hook into it:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div class="wp-block-group jsforwp"&amp;gt;
   &amp;lt;h4&amp;gt;Heading&amp;lt;/h4&amp;gt;
   &amp;lt;p&amp;gt;Paragraph&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;What we are going to get in our React app is this object:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
 "type": "element",
 "component": "div",
 "props": { "className": "wp-block-group jsforwp" },
 "children": [ 
   { heading-object },
   { paragraph-object }
 ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;As you can see, all the information about the HTML element is still available. We have the HTML tag and all its attributes, so we can do whatever we want. We even have the children object and, although it's not included here because it's a simple example, we could find the properties of the parent attribute as well.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.2. html2react processors
&lt;/h3&gt;

&lt;p&gt;Processors are the place where you specify which HTML element you want to hook into, and how you want to modify it. For a deeper explanation, please take a look at &lt;a href="https://docs.frontity.org/api-reference-1/frontity-html2react#create-your-own-processors" rel="noopener noreferrer"&gt;our docs&lt;/a&gt;. Below is a very quick summary:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;name&lt;/strong&gt;: just the name of the processor.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;priority&lt;/strong&gt;: this allows you to select which processors should run before the others.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;test&lt;/strong&gt;: this is the function to select which HTML elements you want to hook into. It's basically an &lt;em&gt;if&lt;/em&gt; statement. If &lt;code&gt;test&lt;/code&gt; is true, then the processor runs.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;processor&lt;/strong&gt;: this is the function where you apply any modification you want. Here you can change the styles, add new children, or change it into a full React component for example.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's a quick example based on the previous case. Here we are telling our app: if you find an element with the class "jsforwp", then run the processor. And in the processor function we are making some changes.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const jsforwp = {
 name: "jsforwp",
 priority: 10,
 test: ({ node }) =&amp;gt;
   node.type === "element" &amp;amp;&amp;amp;
   node.props?.className?.split(" ").includes("jsforwp"),
 processor: ({ node }) =&amp;gt; {
   //Change styles
   node.props.css = css`background: blue;`;

   //Add a new children
   node.children.unshift(Logo);

   //Substitute it for a React Component
   node.component = NewJSforWP

   return node;
 },
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  4.3. Use cases
&lt;/h3&gt;

&lt;p&gt;The above approaches allowed us to add React logic to any element in the content, which is pretty powerful. Let's take a look at some examples on our own website.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lazy load&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In order to improve the performance, we decided to lazy load the heavier elements like videos, iframes, or tweets. This way we don't load them until the user is close to reach them when scrolling. Instead of doing this with PHP, we did it with html2react. For example, we created a &lt;a href="https://github.com/frontity/frontity.org/blob/dev/packages/frontity-org-theme/src/processors/lazy-video.ts" rel="noopener noreferrer"&gt;processor&lt;/a&gt; that hooks onto any video element, and swaps it for a React component that uses a Frontity hook to lazy load it.&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { Element,Processor } from "@frontity/html2react/types";

import LazyVideo from "../components/lazy-video";

export const lazyVideo: Processor&amp;lt;Element&amp;gt; = {
  name: "lazy-video",
  test: ({ node }) =&amp;gt; node.type === "element" &amp;amp;&amp;amp; node.component === "video",
  processor: ({ node }) =&amp;gt; {
    node.component = LazyVideo;

    return node;
  },
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;You can see above that we are importing the &lt;code&gt;&amp;lt;LazyVideo /&amp;gt;&lt;/code&gt; component. This is basically the same HTML we received but using the &lt;a href="https://docs.frontity.org/api-reference-1/frontity-hooks#hooks" rel="noopener noreferrer"&gt;&lt;code&gt;useInView&lt;/code&gt; hook&lt;/a&gt;, where we are not loading the video until we are 600px above it:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import useInView from "@frontity/hooks/use-in-view";
import React from "react";

const LazyVideo = ({ children, ...props }) =&amp;gt; {
  const { ref, inView } = useInView({
    rootMargin: "600px",
    triggerOnce: true,
  });

  return (
    &amp;lt;&amp;gt;
      &amp;lt;video ref={ref} {...(inView &amp;amp;&amp;amp; props)}&amp;gt;
        {children}
      &amp;lt;/video&amp;gt;
    &amp;lt;/&amp;gt;
  );
};

export default LazyVideo;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Web browser layout&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We decided to add a top bar to some elements of the website to make it look as if the element is inside a web browser window. This was useful for images or iframes for example, and prevented us from having to create it for every element.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffrontity.org%2Fwp-content%2Fuploads%2F2020%2F11%2FWeb-browser-iframe--1024x386.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffrontity.org%2Fwp-content%2Fuploads%2F2020%2F11%2FWeb-browser-iframe--1024x386.png" alt="Web browser iframe asset"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The top, grey bar and the three dots, which simulate the browser window, aren't added to the image or the iframe directly. Instead, we added this HTML with React by creating &lt;a href="https://github.com/frontity/frontity.org/blob/dev/packages/frontity-org-theme/src/processors/web-browser.tsx" rel="noopener noreferrer"&gt;this processor&lt;/a&gt;:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import TopBar from "../components/window-top-bar";

export const webBrowser = {
  name: "web-browser",
  test: ({ node }) =&amp;gt;
    node.type === "element" &amp;amp;&amp;amp;
    node.props?.className?.split(" ").includes("has-browser-window"),

  processor: ({ node }) =&amp;gt; {
    const topFrame: Element = {
      type: "element",
      component: TopBar,
      props: {},
      // we need to pass empty props, because other processors might
      // expect `.props` to exist
    };

    node.children.unshift(topFrame);

    ...

    return node;
  },
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;As you can see, we added the component &lt;code&gt;&amp;lt;TopBar /&amp;gt;&lt;/code&gt; to the children array. And if you take a look at &lt;a href="https://github.com/frontity/frontity.org/blob/dev/packages/frontity-org-theme/src/components/window-top-bar.tsx" rel="noopener noreferrer"&gt;the component&lt;/a&gt;, you also will see that we just added the HTML for the bar and the dots with some styles:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { css, styled } from "frontity";
import React from "react";

const Dot = styled.span`
  display: inline-block;
  width: 9px;
  height: 9px;
  margin-left: 5px;
  border-radius: 100%;
  background-color: rgba(15, 28, 100, 0.2);
  vertical-align: baseline;
  margin-top: 12px;
`;

const WindowTopBar = () =&amp;gt; (
  &amp;lt;div
    css={css`
      height: 32px;
      padding-left: 10px;
    `}
  &amp;gt;
    &amp;lt;Dot /&amp;gt;
    &amp;lt;Dot /&amp;gt;
    &amp;lt;Dot /&amp;gt;
  &amp;lt;/div&amp;gt;
);

export default WindowTopBar;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Now we have the possibility to add this window effect to any element by adding the class &lt;code&gt;has-browser-window&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;We are following a similar approach for the buttons and links on our website. Apart from reusing them in different sections, we wanted to display the Frontity monogram logo before the text.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffrontity.org%2Fwp-content%2Fuploads%2F2020%2F11%2FFrontity-buttons-and-links.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffrontity.org%2Fwp-content%2Fuploads%2F2020%2F11%2FFrontity-buttons-and-links.png" alt="Frontity buttons and links asset"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since we didn't want to have to add it manually to each button and link from within Gutenberg, we instead created a processor to deal with this. &lt;a href="https://github.com/frontity/frontity.org/blob/dev/packages/frontity-org-theme/src/processors/links-buttons.tsx" rel="noopener noreferrer"&gt;This processor&lt;/a&gt; adds the Frontity monogram by default unless we add another icon from Gutenberg or specify that we don't want an icon.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Terminal&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is another example (more complex than the previous ones) of how we used use JavaScript with Gutenberg. If you take a look at the different code blocks that we have, they all look similar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffrontity.org%2Fwp-content%2Fuploads%2F2020%2F11%2FStyled-components-example.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffrontity.org%2Fwp-content%2Fuploads%2F2020%2F11%2FStyled-components-example.png" alt="Styled components example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apart from adding the layout in a similar way to the previous example, we're using a JavaScript library named &lt;a href="https://prismjs.com/" rel="noopener noreferrer"&gt;Prism&lt;/a&gt; for the syntax highlighting. Rather than defining the colors for each piece of code from Gutenberg, it's Prism.js which takes care of this and makes sure they look similar. It works with any code block.&lt;/p&gt;

&lt;p&gt;And you can go even further. For example, we're using another React library, &lt;a href="https://www.npmjs.com/package/react-typist" rel="noopener noreferrer"&gt;react-typist&lt;/a&gt;, to load the terminal letter by letter in the homepage's hero. While the commands are editable from WordPress, the effect is made with React (with one of the multiple npm packages that are available).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Newsletter&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the last example and probably the most complex one of our website. At the bottom of each page, we included a form to subscribe to the &lt;a href="https://frontity.org/#newsletter" rel="noopener noreferrer"&gt;Frontity newsletter&lt;/a&gt;. We also did this with React rather than PHP.&lt;/p&gt;

&lt;p&gt;If you fill out the first form (the email address field), a second form will be loaded and then the "Thank you" message. This is connected with our Google Tag Manager account and the email services. Although the form's content is editable from WordPress, the logic to manage all this was, again, made with React.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusions
&lt;/h3&gt;

&lt;h1&gt;
  
  
  What went well
&lt;/h1&gt;

&lt;p&gt;In general, we were able to achieve most of our goals. Knowing that the main purpose was to explain Frontity better, we considered it a success and are happy with the end result. In addition, the design implementation was great. Here are some of our conclusions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✔️&lt;/strong&gt; &lt;strong&gt;Gutenberg features were really helpful&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Although we had already worked with Gutenberg, there were many different use cases to address in this migration and we were somewhat concerned about it. However, some of Gutenberg's latest features, such as the Block Patterns or the Template Parts, were really helpful in connecting Gutenberg with Frontity and facilitated much of the process.&lt;/p&gt;

&lt;p&gt;✔️ &lt;strong&gt;We managed to make everything editable from WordPress&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We can now edit everything from the WordPress editor. Even the command lines, the header or the footer (which in many websites are hardcoded) are editable in our case. This is great because it allows us to leverage the great editing experience and all the benefits of Gutenberg while using Frontity.&lt;/p&gt;

&lt;p&gt;✔️ &lt;strong&gt;Creating new pages is easy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is related to the previous point too. Creating new landing pages from scratch, or reusing the block patterns and styles that were already created for the homepage, is pretty easy now. In addition, we don't have to rely on the development team to make these changes. A couple of great examples are the &lt;a href="https://frontity.org/about-us/" rel="noopener noreferrer"&gt;About Us&lt;/a&gt; page and the &lt;a href="https://frontity.org/partner/10up/" rel="noopener noreferrer"&gt;10up Partner&lt;/a&gt; page, both of which we built afterwards without coding anything.&lt;/p&gt;

&lt;p&gt;Here's a quick demo of how we created a new page from scratch:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=5EIqBfD_LTY" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fimg.youtube.com%2Fvi%2F5EIqBfD_LTY%2F0.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✔️ &lt;strong&gt;There was nothing that we couldn't do&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In Frontity PRO, our previous product for big publishers, we had already tested this approach and the &lt;code&gt;@frontity/html2react&lt;/code&gt; package worked great. But there were a lot of new, different use cases this time that hadn't been developed before. The good news is that, after creating many diverse processors, we were able to do everything with the built-in Gutenberg blocks and html2react. There are still things to improve and there might be use cases that we didn't cover for sure, but the experience has been great so far.&lt;/p&gt;

&lt;h1&gt;
  
  
  Lessons learnt and next steps
&lt;/h1&gt;

&lt;p&gt;1. In some parts, we struggled to deal with the CSS that Gutenberg adds as well as to overwrite its styles. One of the things that might be causing this problem is that we add all the css directly to our Frontity app. We would like to work on a Frontity - Gutenberg package that deals with the CSS and solves this. This would allow you to select the Gutenberg plugin version styles that you want to import and add the css used in each page. There's an open conversation about this in this &lt;a href="https://community.frontity.org/t/gutenberg-css/480" rel="noopener noreferrer"&gt;Feature Discussion&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;2. We decided to use html2react processors for too many things. In the end, using them for every single Gutenberg block that we wanted to modify doesn't seem right. Writing processors for adding styles to HTML classes feels strange, like an extra step between CSS and HTML. If we start a similar process again, we would consider if some of these processors could be moved to global css.  &lt;/p&gt;

&lt;p&gt;Apart from this, it would be great to have some generic processors for basic tasks, like adding styles. Also for improving the Html2React API by adding a better way to select elements and modify them. We might want to add higher abstractions for common uses cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CSS-only processors&lt;/strong&gt;: if we feel that adding css with the processors is the proper approach, it would be useful to have a nicer API while keeping everything hackable. We are already talking about this &lt;a href="https://community.frontity.org/t/better-class-name-tests-in-processors/966" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Transform parent-child HTML nodes into parent-child React components&lt;/strong&gt;: this would ease the way we add React logic to some elements. There's an ongoing conversation &lt;a href="https://community.frontity.org/t/gutenberg-frontity-integration/1467" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reuse processors between different projects&lt;/strong&gt;: sometimes there are interesting processors that could be reused in different projects. For example, the way we are importing the Prism.js library for the code blocks, could be useful for other users. We are also discussing about the best way to share them &lt;a href="https://community.frontity.org/t/how-to-share-html2react-processors/3069" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;3. Gutenberg is still in an early stage and we had to code functionalities which might be solved by the block editor in the future. For example, the util we created for adding opacity to the colors it's something that could be added from Gutenberg.&lt;/p&gt;

&lt;p&gt;4. Finally, we want Frontity to be updated with all the upcoming Gutenberg functionalities. Some of its latest features, such as the Block Patterns or the Template Parts, have already been very useful for us. We will keep track of the updates and continue exploring the best way to integrate them with Frontity.  &lt;/p&gt;

&lt;p&gt;Actually, we are currently researching the &lt;a href="https://developer.wordpress.org/block-editor/tutorials/block-based-themes/" rel="noopener noreferrer"&gt;block-based themes&lt;/a&gt; and the Full Site Editing experience the Gutenberg team is working on. We really like what they are achieving, and it would be really powerful to integrate Frontity with a block-based theme.&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing words
&lt;/h2&gt;

&lt;p&gt;We hope this post gives you a better understanding of how we integrated Gutenberg and Frontity, and how they can work together. We do believe this is a powerful approach to leverage the power of the block editor as well as to combine the best of WordPress and React.&lt;/p&gt;

&lt;p&gt;In order to fully understand the &lt;code&gt;html2react&lt;/code&gt; package, we recommend you take look &lt;a href="https://docs.frontity.org/api-reference-1/frontity-html2react" rel="noopener noreferrer"&gt;at our docs&lt;/a&gt;. If you are curious to see frontity.org's code, here's the public &lt;a href="https://github.com/frontity/frontity.org" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For any other questions you might have, hit us up on &lt;a href="https://twitter.com/frontity" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; or our &lt;a href="https://community.frontity.org/" rel="noopener noreferrer"&gt;community forum&lt;/a&gt;. We will be happy to help!&lt;/p&gt;




&lt;p&gt;_This post was originally published at &lt;a href="https://frontity.org/blog/connecting-gutenberg-and-frontity/" rel="noopener noreferrer"&gt;frontity.org/blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Announcing Frontity's Partnership with 10up</title>
      <dc:creator>Reyes Martínez</dc:creator>
      <pubDate>Fri, 23 Oct 2020 15:53:28 +0000</pubDate>
      <link>https://forem.com/frontity/announcing-frontity-s-partnership-with-10up-50fj</link>
      <guid>https://forem.com/frontity/announcing-frontity-s-partnership-with-10up-50fj</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;a href="https://frontity.org/?utm_source=dev.to&amp;amp;utm_medium=10up-partnership-post&amp;amp;utm_campaign=announcements"&gt;Frontity&lt;/a&gt; is a free and open source React framework for WordPress. You can learn more at &lt;a href="https://docs.frontity.org/?utm_source=dev.to&amp;amp;utm_medium=10up-partnership-post&amp;amp;utm_campaign=announcements"&gt;docs.frontity.org&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;A few days ago, we officially launched a new initiative we are really excited about: our &lt;a href="https://frontity.org/partners/"&gt;Agency Partner Program&lt;/a&gt;. As an open source platform, collaboration is key to ensure the framework's growth but also to build a strong product and community. With that purpose in mind, we started to have some conversations and join forces with different WordPress agencies who share our vision and values.&lt;/p&gt;

&lt;p&gt;Today, we are thrilled to announce our &lt;strong&gt;partnership with 10up&lt;/strong&gt;, one of the largest WordPress-centric agencies in the world and a leader in building headless CMS experiences.&lt;/p&gt;

&lt;h2&gt;
  
  
  About 10up
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://10up.com/"&gt;10up&lt;/a&gt; is a digital agency that aims to make a better web with finely crafted websites, apps, and tools for content creators, leveraging open source technologies like WordPress and React. The company's portfolio includes projects with brands such as Microsoft, Google, and Facebook.&lt;/p&gt;

&lt;p&gt;Furthermore, 10up is also well known for its many and different contributions to open source projects, including Frontity.&lt;/p&gt;

&lt;p&gt;In addition to the &lt;a href="https://github.com/frontity/frontity/pull/507"&gt;Link Component&lt;/a&gt; and &lt;a href="https://github.com/frontity/frontity/pull/518"&gt;Auto-Prefetching&lt;/a&gt; features, one of their most recent contributions to the framework is the &lt;a href="https://github.com/10up/frontity-packages/tree/develop/packages/elasticpress"&gt;ElasticPress package&lt;/a&gt;, which allows you to enhance your Frontity theme by supercharging the search experience with ElasticPress. You can add this functionality to your Frontity project just by installing the package, without having to modify your theme (this is one of the greatest things about Frontity's extensibility!). Kudos to 10up for their fantastic work on it!&lt;/p&gt;

&lt;h2&gt;
  
  
  Why are we partnering with 10up?
&lt;/h2&gt;

&lt;p&gt;Nowadays, publishers have a big challenge ahead of them with users demanding better experiences in the digital space. Since we launched Frontity Framework last year, dozens of WordPress publishers have asked our team about consulting services and for help on their migration to Frontity. It was great to see an increasing interest in using Frontity at an enterprise-level but, unfortunately, we didn't have an efficient way to help them all and fulfil the custom requirements these projects usually need.&lt;/p&gt;

&lt;p&gt;One of the &lt;strong&gt;main goals&lt;/strong&gt; of this partnership is to connect these companies who are looking for professional guidance with 10up's team of experts.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;As a contributor to the core Frontity framework, 10up’s dedicated team of JavaScript and WordPress engineers, web strategists, designers, and audience and revenue consultants can help design, build, and monetize a performant, modern, digital platform that meets your business needs both today and in the future.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;On the other hand, we aim to help 10up grow their business by bringing in new opportunities, support them as they work with Frontity and empower their development team. They are already familiar with Frontity but thanks to this new partnership, they'll have a deeper understanding and knowledge of what the framework is able to provide for their clients.&lt;/p&gt;

&lt;h2&gt;
  
  
  A win for the project
&lt;/h2&gt;

&lt;p&gt;We're really excited to share expertise with such a great team as the one at 10up, and believe that their knowledge, strengths and contributions will have a very &lt;strong&gt;positive impact&lt;/strong&gt; both on Frontity Framework and on its open source community.&lt;/p&gt;

&lt;p&gt;When companies share the same values, they can work together to better solve challenges. This is what collaboration is about. Having the support of one of the brightest agencies in the WordPress space is not only the best way to inaugurate our Agency Partner Program but also to keep pushing our mission of helping people build websites with WordPress and React easily.&lt;/p&gt;

&lt;p&gt;We're just getting started and can't wait to do more together!&lt;/p&gt;

&lt;p&gt;We invite you to visit the &lt;a href="https://frontity.org/partner/10up/"&gt;10up Partner Page&lt;/a&gt; to learn more about how they can help support your Frontity project needs. If you have any questions, feedback, or would like to know more about this partnership, do not hesitate to get in touch.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was originally published at &lt;a href="https://frontity.org/blog/announcing-our-new-partnership-with-10up/?utm_source=dev.to&amp;amp;utm_medium=10up-partnership-post&amp;amp;utm_campaign=announcements"&gt;frontity.org/blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>react</category>
      <category>webdev</category>
      <category>partnership</category>
    </item>
    <item>
      <title>We're sponsoring JSNation Live 2020</title>
      <dc:creator>Reyes Martínez</dc:creator>
      <pubDate>Thu, 18 Jun 2020 12:49:09 +0000</pubDate>
      <link>https://forem.com/frontity/we-re-sponsoring-jsnation-live-2020-1apk</link>
      <guid>https://forem.com/frontity/we-re-sponsoring-jsnation-live-2020-1apk</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;a href="https://frontity.org/?utm_source=dev.to&amp;amp;utm_medium=jsnation-sponsorship-post&amp;amp;utm_campaign=content_marketing"&gt;Frontity&lt;/a&gt; is a free and open source React framework for WordPress. You can learn more and get started at &lt;a href="https://docs.frontity.org/?utm_source=dev.to&amp;amp;utm_medium=jsnation-sponsorship-post&amp;amp;utm_campaign=content_marketing"&gt;docs.frontity.org&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;We are very happy to be sponsoring this year's &lt;a href="https://live.jsnation.com/"&gt;JSNation Live&lt;/a&gt; (June 18-19), the biggest JavaScript conference in the cloud. This is such a great opportunity to connect with fellow developers of the JavaScript community.&lt;/p&gt;

&lt;p&gt;Here's everything you need to know about Frontity's presence at JSNation Live.&lt;/p&gt;

&lt;h2&gt;
  
  
  We're hosting a talk
&lt;/h2&gt;

&lt;p&gt;Our co-founder &lt;a href="https://twitter.com/iamposti"&gt;Pablo Postigo&lt;/a&gt; is giving a lightning talk on "Building React frontends for WordPress" this &lt;strong&gt;Thursday, June 18&lt;/strong&gt; at 19:10 CEST. Check out the full schedule and get your free ticket here: &lt;a href="https://live.jsnation.com/"&gt;https://live.jsnation.com/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aL0SgkRo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i2.wp.com/frontity.org/wp-content/uploads/2020/06/pablostalk-jsnation.png%3Ffit%3D768%252C432%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aL0SgkRo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i2.wp.com/frontity.org/wp-content/uploads/2020/06/pablostalk-jsnation.png%3Ffit%3D768%252C432%26ssl%3D1" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Virtual booth and live demos
&lt;/h2&gt;

&lt;p&gt;Our DevReal team members &lt;a href="https://twitter.com/juanmaguitar"&gt;JuanMa Garrido&lt;/a&gt; and &lt;a href="https://twitter.com/michaelburridge"&gt;Michael Burridge&lt;/a&gt; are hosting a few &lt;strong&gt;live demos at our virtual booth&lt;/strong&gt;. They will show you how to create a basic project with Frontity using one of the default themes, look at creating a custom component and styling it. Finally they will show how to deploy the project to production. After each demo, there will be a short Q&amp;amp;A session. Get your questions ready!&lt;/p&gt;

&lt;p&gt;Here's the schedule of the live demos:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 1 - Thursday, June 18&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  17:25 CEST&lt;/li&gt;
&lt;li&gt;  18:55 CEST&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Day 2 - Friday, June 19&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  17:20 CEST&lt;/li&gt;
&lt;li&gt;  18:50 CEST&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Over the two-day event, we'll be hanging out at our virtual booth and interacting with the community. Feel free to stop by to say hi, join our live demos or learn more about Frontity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frontity JSNation Contest
&lt;/h2&gt;

&lt;p&gt;We are running a contest for the JSNation Live attendees. In order to participate, you have to build a website with Frontity (you can use a &lt;a href="https://docs.frontity.org/frontity-themes"&gt;Frontity theme&lt;/a&gt; as a basis or create your own custom theme) and submit it &lt;strong&gt;before the 3rd of July&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;All entries will get a swag bag (who doesn't want a Frontity t-shirt and stickers? 😄 ) and two lucky winners will receive a &lt;strong&gt;consulting session&lt;/strong&gt; with the team. We also encourage you to show your work to the world with the hashtag #MadeWithFrontity.&lt;/p&gt;

&lt;p&gt;Check out the &lt;a href="https://frontity.org/frontity-jsnation-contest/"&gt;Frontity JSNation Contest page&lt;/a&gt; for more details on how to enter and the contest rules. We look forward to receiving your submissions!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://frontity.org/frontity-jsnation-contest/"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aZzCYLhn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i0.wp.com/frontity.org/wp-content/uploads/2020/06/contest-post04.png%3Ffit%3D768%252C432%26ssl%3D1" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Workshop: Build a React-based Theme for WordPress with Frontity
&lt;/h2&gt;

&lt;p&gt;Last Monday, June 15, our DevRel &lt;a href="https://twitter.com/michaelburridge"&gt;Michael Burridge&lt;/a&gt; hosted a 3-hours workshop on how to create a React-based theme for WordPress using Frontity. It was a great experience and we received very positive feedback.  &lt;/p&gt;

&lt;p&gt;For anyone who missed the workshop, you can watch it now on &lt;a href="https://youtu.be/QFY3GPfoKR4"&gt;Youtube&lt;/a&gt;. The code and the steps that Michael followed can be found on &lt;a href="https://github.com/frontity-demos/jsnation-workshop"&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/QFY3GPfoKR4"&gt;https://youtu.be/QFY3GPfoKR4&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We look forward to seeing you at the JSNation Live! 🙂&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was originally published at &lt;a href="https://frontity.org/blog/were-sponsoring-jsnation-live-2020/?utm_source=dev.to&amp;amp;utm_medium=jsnation-sponsorship-post&amp;amp;utm_campaign=content_marketing"&gt;frontity.org/blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>jsnation</category>
      <category>wordpress</category>
      <category>react</category>
    </item>
    <item>
      <title>New Frontity Showcase Page</title>
      <dc:creator>Reyes Martínez</dc:creator>
      <pubDate>Tue, 16 Jun 2020 12:30:29 +0000</pubDate>
      <link>https://forem.com/frontity/new-showcase-page-43i9</link>
      <guid>https://forem.com/frontity/new-showcase-page-43i9</guid>
      <description>&lt;p&gt;We’re excited to share with you Frontity's new &lt;a href="https://frontity.org/showcase/"&gt;Showcase page&lt;/a&gt;: a gallery to discover what the community is building and give more visibility to your Frontity projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why a Showcase page?
&lt;/h3&gt;

&lt;p&gt;We at Frontity are curious to see what you are building using the framework, and it's the same for people in the community and those who just find out about Frontity. They want to see examples, what they can create with the framework, and hear about other's developers experience, specially when they are choosing a tech stack or considering different tools for their projects.&lt;/p&gt;

&lt;p&gt;For this purpose, we have &lt;a href="https://community.frontity.org/c/community/showcases/19"&gt;this category&lt;/a&gt; in the community forum, where users can share their projects and feedback on Frontity. However, over these months, we realized that most people are unaware of this section.&lt;/p&gt;

&lt;p&gt;In an effort to help discover what the community is building, give more visibility to all projects and make it easier to add yours, we have created a new &lt;a href="https://frontity.org/showcase/"&gt;Showcase page&lt;/a&gt; in our website. In addition, you can see the projects in a more visual way now.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://frontity.org/wp-content/uploads/2020/07/frontity-showcase-page.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cto9-bgh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://frontity.org/wp-content/uploads/2020/07/frontity-showcase-page.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why share your Frontity site?
&lt;/h3&gt;

&lt;p&gt;There are many reasons for you as a developer to share what you have built with Frontity. Let me list some of them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Your work matters&lt;/strong&gt; and it can be a great motivation to encourage other developers. There can be users who are still baffled as to how using React for a WordPress site. Your work can help them understand how you're using Frontity and what can be accomplished with it.&lt;/li&gt;
&lt;li&gt;  You have the opportunity to &lt;strong&gt;showcase your talent&lt;/strong&gt;. This opens doors to connect with other people. If you're a freelancer, agencies or clients looking for developers to build a website with Frontity can find you easily.&lt;/li&gt;
&lt;li&gt;  It's &lt;strong&gt;free publicity&lt;/strong&gt; for you or for your brand: sharing your project will allow you to get more visibility and recognition.&lt;/li&gt;
&lt;li&gt;  Inspire and be inspired: the Showcase section is a great place not only to inspire others with your work but also to get &lt;strong&gt;inspiration for your future projects&lt;/strong&gt; and get a feel of new designs, approaches, etc.&lt;/li&gt;
&lt;li&gt;  It's a way to get constructive feedback from other developers if you wish, which will allow you to enhance your personal and professional growth.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sometimes you might think that your work is not good enough to be shared, that it has nothing of note to offer, or that it has a lot of room for improvement. That's fine, there's no pressure to share your work if you don't want to. Just remember, there's no such thing as a perfect project. You are probably your harshest critic, so give yourself some credit! 🙂&lt;/p&gt;

&lt;h3&gt;
  
  
  How to add your website
&lt;/h3&gt;

&lt;p&gt;There are two main ways to add your Frontity project to the Showcase page.&lt;/p&gt;

&lt;p&gt;The first and the easiest one is to fill out &lt;a href="https://forms.gle/z9MXM3hLceNfrMGy6"&gt;this form&lt;/a&gt; with your site's information. That's it. We will review your submission and feature your project in the Showcase page.&lt;/p&gt;

&lt;p&gt;Alternatively, you can share your project in the &lt;strong&gt;community forum&lt;/strong&gt;. Simply go to the &lt;a href="https://community.frontity.org/c/community/showcases/19"&gt;Showcase category&lt;/a&gt;, open a new topic and write a post with a link to your website or npm package. Here are &lt;a href="https://community.frontity.org/t/about-the-showcases-category/43"&gt;some ideas&lt;/a&gt; to include in your forum post.&lt;/p&gt;

&lt;p&gt;We look forward to seeing your projects with Frontity! 🙌&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was originally published at &lt;a href="https://frontity.org/blog/new-showcase-page/?utm_source=dev.to&amp;amp;utm_medium=showcase-post&amp;amp;utm_campaign=announcements"&gt;frontity.org/blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>react</category>
      <category>showcase</category>
      <category>frontity</category>
    </item>
    <item>
      <title>Announcing Frontity's €1M Funding Round with Automattic and K Fund</title>
      <dc:creator>Reyes Martínez</dc:creator>
      <pubDate>Wed, 22 Apr 2020 16:13:59 +0000</pubDate>
      <link>https://forem.com/frontity/announcing-frontity-s-1m-funding-round-with-automattic-and-k-fund-1dh</link>
      <guid>https://forem.com/frontity/announcing-frontity-s-1m-funding-round-with-automattic-and-k-fund-1dh</guid>
      <description>&lt;p&gt;We are thrilled to announce that &lt;a href="https://frontity.org/" rel="noopener noreferrer"&gt;Frontity&lt;/a&gt; has raised a &lt;strong&gt;€1M funding round&lt;/strong&gt; led by &lt;a href="https://automattic.com/" rel="noopener noreferrer"&gt;Automattic&lt;/a&gt; (the parent company of WordPress.com and WooCommerce) and the venture capital firm &lt;a href="https://kfund.co/en/" rel="noopener noreferrer"&gt;K Fund&lt;/a&gt;, with participation from significant business angels of the Spanish startup ecosystem.&lt;/p&gt;

&lt;p&gt;Before telling you more about what this investment means for us and the future of Frontity, let’s briefly look back to understand better what brought us to where we are today. If you already know our story, feel free to jump ahead to learn more about the funding round. 🙂&lt;/p&gt;

&lt;h2&gt;
  
  
  Our Story
&lt;/h2&gt;

&lt;p&gt;As of late 2017, some WordPress publishers approached us with the same concern: despite their best efforts, their WordPress sites on mobile devices were slow. In order to help them improve their site’s performance and user experience, we developed &lt;strong&gt;a mobile WordPress theme based on React&lt;/strong&gt; specifically for their needs.&lt;/p&gt;

&lt;p&gt;The results of this theme, which we called Frontity PRO, were very satisfactory. After installing it, publishers saw a significant improvement in both their &lt;strong&gt;performance and visitor metrics&lt;/strong&gt; (x2 increase of page views, lower bounce rates). For those curious, a few months ago we published this &lt;a href="https://frontity.org/blog/case-study-gudog/" rel="noopener noreferrer"&gt;case study&lt;/a&gt; on how Gudog's blog has grown by 88% with our theme.&lt;/p&gt;

&lt;p&gt;During 2018, Frontity PRO was used in more than 50 news sites and served more than &lt;strong&gt;40 million page views&lt;/strong&gt;. Every new project with a WordPress publisher helped us learn from each use case as well as battle test the internal framework we had built in order to create that theme.&lt;/p&gt;

&lt;p&gt;At the time we were working on this, there was no easy way to connect WordPress and React and we had to face a lot of development challenges. That made us think that if we put all our experience and knowledge into an open source project, anyone trying to solve the problems that we had already faced could benefit.&lt;/p&gt;

&lt;p&gt;This is how Frontity, the first &lt;strong&gt;React framework&lt;/strong&gt; exclusively built for &lt;strong&gt;WordPress&lt;/strong&gt;, was born.&lt;/p&gt;

&lt;p&gt;Frontity’s unique approach strips away the complexity that entails connecting both WordPress and React, and gives you a big head start by providing many of the most common queries already built in. This way you can focus on building your website or blog instead of all the tooling and configuration.&lt;/p&gt;

&lt;p&gt;Since officially open sourcing the framework in May 2019, it has quickly grown in usage. More than 250 developers have already joined the community and started using Frontity for their projects. We could have never imagined this support in such a short time!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://frontity.org/wp-content/uploads/2020/04/frontity-kpis-usage.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffrontity.org%2Fwp-content%2Fuploads%2F2020%2F04%2Ffrontity-kpis-usage.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
Since May 2019, Frontity has seen more than 12,700 npm downloads.



&lt;h2&gt;
  
  
  What does this investment mean?
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Making WordPress with React easier
&lt;/h4&gt;

&lt;p&gt;Frontity was created around the idea of making it easier to build fast, scalable websites with WordPress and React.&lt;/p&gt;

&lt;p&gt;Getting financial backing for the startup means that we can invest more effort in helping deliver on our mission. It will help us improve the framework development, roll out new features faster, and grow the community around it by providing more resources to collaborate and learn.&lt;/p&gt;

&lt;p&gt;In addition, we are already planning to collaborate with different WordPress hosting companies to make it easier to deploy your Frontity sites on your preferred hosting. If you are interested in joining forces, feel free to contact us. 😉&lt;/p&gt;

&lt;h4&gt;
  
  
  Pushing the headless WordPress web forward
&lt;/h4&gt;

&lt;p&gt;We believe that during the coming years there will be a big transition towards decoupled architectures and that React will play a key role in WordPress to build better, modern user experiences. This investment is really important to us because it validates our vision and work.&lt;/p&gt;

&lt;p&gt;Having the support of Automattic will allow us to connect and collaborate with their partners to support larger projects and bring decoupled WordPress and Frontity to a wider audience.&lt;/p&gt;

&lt;p&gt;This will not only open up new opportunities to keep pushing the headless web forward, but also help us position Frontity as a framework of reference within this context.&lt;/p&gt;

&lt;h4&gt;
  
  
  Offering a great developer experience
&lt;/h4&gt;

&lt;p&gt;We know documentation is a key part of the user experience and we haven't been quite up to the task yet. Good news is that our newly formed Developer Relations team is already taking care of it, working on more guides, tutorials and learning resources! 🙌&lt;/p&gt;

&lt;h4&gt;
  
  
  Frontity's business model
&lt;/h4&gt;

&lt;p&gt;Now that we’ve raised a round of funding, it’s natural to ask questions about the Frontity’s business model or revenue stream for us as a company.&lt;/p&gt;

&lt;p&gt;Since we are not developing any business model during this initial phase, this funding round was the best way for us to make the project sustainable. &lt;strong&gt;It is worth mentioning&lt;/strong&gt; that it doesn’t mean in any way a move away from open source. We are an independent company and have complete autonomy on our strategy.&lt;/p&gt;

&lt;p&gt;Frontity framework is open source, and &lt;strong&gt;will always remain open source.&lt;/strong&gt; We'll never release any framework feature as paid-only.&lt;/p&gt;

&lt;p&gt;Possible monetizations that we are thinking of to generate revenue in the future and add value to the community are a hosting solution, premium support, or a marketplace of paid themes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://frontity.org/wp-content/uploads/2020/04/image-frontity-team.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi2.wp.com%2Fwp.frontity.org%2Fwp-content%2Fuploads%2F2020%2F04%2Fimage-frontity-team.jpg%3Ffit%3D768%252C437%26ssl%3D1"&gt;&lt;/a&gt;&lt;/p&gt;
The Frontity Team



&lt;h2&gt;
  
  
  Thank you for making this possible!
&lt;/h2&gt;

&lt;p&gt;We’d like to thank all our investors, advisors, and the team of the Google for Startups Residency Program for their help and for believing in us, both in the project and the team. We raised money from an incredible group of people and feel &lt;strong&gt;truly grateful and honored&lt;/strong&gt; to have Automattic (one of the best WordPress companies in the world) and K Fund (one of the best venture capital firms in Spain) as investors.&lt;/p&gt;

&lt;p&gt;Finally, thank you to Frontity's &lt;strong&gt;amazing community&lt;/strong&gt; for joining us on this journey. For sharing your knowledge, helping us improve the framework, building such awesome projects with Frontity, and inspiring us each day. 💙&lt;/p&gt;

&lt;p&gt;Can't wait to build this new Frontity chapter with you all!&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was originally published at &lt;a href="https://frontity.org/blog/announcing-frontitys-e1m-funding-round-with-automattic-and-k-fund/?utm_source=dev.to&amp;amp;utm_medium=funding-round-announcement-post&amp;amp;utm_campaign=announcements"&gt;frontity.org/blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>react</category>
      <category>funding</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Introducing Twenty Twenty Frontity Theme (v1.0)</title>
      <dc:creator>Reyes Martínez</dc:creator>
      <pubDate>Mon, 16 Mar 2020 18:34:00 +0000</pubDate>
      <link>https://forem.com/frontity/introducing-twenty-twenty-frontity-theme-v1-0-1ik2</link>
      <guid>https://forem.com/frontity/introducing-twenty-twenty-frontity-theme-v1-0-1ik2</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;a href="https://frontity.org/?utm_source=dev.to&amp;amp;utm_medium=twenty-twenty-theme-post&amp;amp;utm_campaign=twenty-twenty-release"&gt;Frontity&lt;/a&gt; is a free and open source framework for building headless WordPress sites using React. Check out the documentation &lt;a href="https://docs.frontity.org/?utm_source=dev.to&amp;amp;utm_medium=twenty-twenty-theme-post&amp;amp;utm_campaign=twenty-twenty-release"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;We are happy to announce that we recently released the 1.0 version of the &lt;strong&gt;Twenty Twenty Frontity theme&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;The Twenty Twenty default WordPress theme was included in WordPress 5.3 "Kirk" (out on November 12), and ported over to Frontity by the software engineer and designer &lt;a href="https://twitter.com/thesegunadebayo"&gt;Segun Adebayo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;According to Segun, the theme &lt;strong&gt;development was easy and fast&lt;/strong&gt;. It took him less than one week to release the &lt;a href="https://community.frontity.org/t/frontity-release-twentytwenty-theme-beta/930/"&gt;beta version&lt;/a&gt; of the theme port. Although he knows React, this was the first Frontity theme ever made by him.&lt;/p&gt;

&lt;p&gt;The Twenty Twenty theme is based on the Anders Noréns’ free theme &lt;a href="https://www.andersnoren.se/teman/chaplin-wordpress-theme/"&gt;Chaplin&lt;/a&gt;, and was designed with a special focus on Gutenberg.&lt;/p&gt;

&lt;p&gt;Along with the &lt;a href="https://frontity.org/blog/introducing-twenty-nineteen-frontity-theme/"&gt;Twenty Nineteen&lt;/a&gt; and the &lt;a href="https://frontity.org/blog/introducing-frontity-chakra-theme/"&gt;Frontity Chakra Theme&lt;/a&gt;, the Twenty Twenty theme is a great option if you prefer to use a theme as the base for your site instead of starting one from scratch. If you are new to the framework, it will also allow you to get your site up and running easily.&lt;/p&gt;

&lt;p&gt;You can see the Twenty Twenty Frontity Theme &lt;a href="https://twentytwenty.frontity.org/"&gt;in action here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://frontity.org/wp-content/uploads/2019/11/homepage-view-twentytwenty-frontity-theme.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--q5AXgOKD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://frontity.org/wp-content/uploads/2019/11/homepage-view-twentytwenty-frontity-theme-1024x573.png" alt="homepage view twenty twenty frontity theme"&gt;&lt;/a&gt;&lt;/p&gt;
Homepage view in Twenty Twenty Frontity theme.



&lt;h2&gt;
  
  
  Twenty Twenty’s Theme Features
&lt;/h2&gt;

&lt;p&gt;Apart from its amazing performance, this theme comes with some other nice features:&lt;/p&gt;

&lt;h4&gt;
  
  
  Accessibility Ready
&lt;/h4&gt;

&lt;p&gt;The theme is accessible and screen-reader friendly. We added the proper landmarks, roles and labels. We also paid attention to trap focus within modals, ensure focus indicator is visible for all interactive elements.&lt;/p&gt;

&lt;h4&gt;
  
  
  Custom Colors
&lt;/h4&gt;

&lt;p&gt;You can give your website or blog a personal touch by changing the background colors, text colors and primary/accent color in the theme settings. You change the color in one place, all visual elements get updated.&lt;/p&gt;

&lt;h4&gt;
  
  
  Search
&lt;/h4&gt;

&lt;p&gt;The theme comes with a built-in search box to make it easy for your readers to look for specific content. Search box is powered by the robust and performant search engine built into WordPress.&lt;/p&gt;

&lt;h4&gt;
  
  
  Featured Images
&lt;/h4&gt;

&lt;p&gt;Show beautiful featured images for your blog posts. Frontity uses the featured image uploaded to WordPress and renders it on every blog post. You can also opt out of this in the theme settings.&lt;/p&gt;

&lt;h4&gt;
  
  
  Content Prefetch
&lt;/h4&gt;

&lt;p&gt;You can prefetch page for any link to provide an almost instant user experience. All you need do is to change your settings to prefetch pages when the user "hovers" on a link, when the link is visible on screen, or prefetch all links on the current page.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pagination
&lt;/h4&gt;

&lt;p&gt;Frontity's theme has the same pagination as the original WordPress theme so you can have access to different pages in the footer, and navigate easily between pages.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;If you are new to Frontity, we recommend you check out the &lt;a href="https://docs.frontity.org/"&gt;docs&lt;/a&gt; first to learn more about the framework and how it works.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  For a new Frontity project
&lt;/h3&gt;

&lt;p&gt;Create a new Frontity project with this command:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx frontity create
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Then you will be asked to (1) enter a name for the project, and (2) pick a starter theme to clone. There you can select &lt;code&gt;@frontity/twentytwenty-theme&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Start a development server with:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx frontity dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Lastly, open &lt;a href="http://localhost:3000/"&gt;http://localhost:3000&lt;/a&gt; in your browser (if not already opened) to interact with the Twenty Twenty Frontity Theme in a development environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  For an existing Frontity project
&lt;/h3&gt;

&lt;p&gt;If you already have a Frontity project but would like to install this theme, the first thing you must know it's the name of the package that you'd like to install. In this case it is &lt;code&gt;@frontity/twentytwenty-theme&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Then, you can follow &lt;a href="https://docs.frontity.org/guides/install-a-new-package/"&gt;this guide&lt;/a&gt; on how to install a new package and add it to the &lt;code&gt;frontity.settings.js&lt;/code&gt; file.&lt;/p&gt;

&lt;h3&gt;
  
  
  Theme settings
&lt;/h3&gt;

&lt;p&gt;👉 To learn more about the theme settings and how to configure them, please visit the Twenty Twenty Theme &lt;a href="https://api.frontity.org/frontity-themes/frontity-twentytwenty-theme#settings"&gt;documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;Feel free to &lt;a href="https://community.frontity.org/"&gt;reach out&lt;/a&gt; with any questions you might have about the Twenty Twenty Theme.&lt;/p&gt;

&lt;p&gt;To take a look at the &lt;strong&gt;code&lt;/strong&gt;, please refer to the &lt;a href="https://github.com/frontity/frontity/tree/master/packages/twentytwenty-theme"&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here's some other useful links:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://twentytwenty.frontity.org/"&gt;Live demo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://docs.frontity.org/guides/install-a-new-package/"&gt;How to install a new package&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://api.frontity.org/frontity-themes/frontity-twentytwenty-theme#settings"&gt;Twenty Twenty Theme documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://docs.frontity.org/guides/how-to-share-a-frontity-project"&gt;Best practices for sharing a Frontity project&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://tutorial.frontity.org/"&gt;Frontity's step-by-step tutorial&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Special thanks&lt;/strong&gt; to &lt;a href="https://twitter.com/thesegunadebayo"&gt;Segun Adebayo&lt;/a&gt; for porting this theme over to Frontity, and to &lt;a href="https://twitter.com/iamuchejude"&gt;Uche Jude&lt;/a&gt;, &lt;a href="https://twitter.com/c_z_a_p_l_a"&gt;Michal Czaplinski&lt;/a&gt;, &lt;a href="https://twitter.com/luisherranz"&gt;Luis Herranz&lt;/a&gt;, and &lt;a href="https://twitter.com/santosguillamot"&gt;Mario Santos&lt;/a&gt; for all their work to release the 1.0 version! 💙&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was originally published at &lt;a href="https://frontity.org/blog/introducing-twenty-twenty-frontity-theme/?utm_source=dev.to&amp;amp;utm_medium=twenty-twenty-theme-post&amp;amp;utm_campaign=twenty-twenty-release"&gt;frontity.org/blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>wordpress</category>
      <category>frontity</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
