<?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>DEV Community: Eric Della Casa</title>
    <description>The latest articles on DEV Community by Eric Della Casa (@eric_dellacasa_1903989e0).</description>
    <link>https://dev.to/eric_dellacasa_1903989e0</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3924295%2Fd228f428-caf9-4d1c-94e1-fb7e6f0f3683.jpg</url>
      <title>DEV Community: Eric Della Casa</title>
      <link>https://dev.to/eric_dellacasa_1903989e0</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eric_dellacasa_1903989e0"/>
    <language>en</language>
    <item>
      <title>We open sourced a React content layer for emails, web pages, and PDFs</title>
      <dc:creator>Eric Della Casa</dc:creator>
      <pubDate>Thu, 16 Jul 2026 16:31:41 +0000</pubDate>
      <link>https://dev.to/eric_dellacasa_1903989e0/we-open-sourced-a-react-content-layer-for-emails-web-pages-and-pdfs-38c7</link>
      <guid>https://dev.to/eric_dellacasa_1903989e0/we-open-sourced-a-react-content-layer-for-emails-web-pages-and-pdfs-38c7</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjltue5sf9ux7i3n0obgv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjltue5sf9ux7i3n0obgv.png" alt="Elements" width="799" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Last week we open sourced &lt;strong&gt;Elements&lt;/strong&gt;, a project we’ve been working on at Unlayer to make it easier to create emails, web pages, and PDFs from the same React component system.&lt;/p&gt;

&lt;p&gt;You can find the repo here: &lt;a href="https://github.com/unlayer/elements" rel="noopener noreferrer"&gt;https://github.com/unlayer/elements&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The idea came from a problem we kept seeing over and over again: teams often need to create the same piece of content for different destinations, but the implementation ends up being completely separate each time.&lt;/p&gt;

&lt;p&gt;The content is usually very similar, but the code and rendering requirements are not.&lt;/p&gt;

&lt;p&gt;With Elements, the approach is to keep the component system shared while adapting the final output to where the content will live:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt; renders email-safe table HTML&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt; renders responsive web HTML&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt; renders print-ready HTML for PDFs and documents&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This means developers can work with familiar React components without forcing every output into the same rendering model.&lt;/p&gt;

&lt;p&gt;One of the reasons we felt this was the right moment to open source the project is the growing role of AI agents in software development and content generation. AI can create content and code quickly, but teams still need the final output to be structured, reusable, version-controlled, and reliable enough to use in production.&lt;/p&gt;

&lt;p&gt;We see Elements as a shared layer that both developers and agents can build from.&lt;/p&gt;

&lt;p&gt;It’s still very early, and we know there are plenty of questions and tradeoffs we still need to work through, particularly around email-client limitations, accessibility, layout flexibility, and the overall contributor experience.&lt;/p&gt;

&lt;p&gt;That’s also why we decided to open source it now rather than wait until everything felt finished. We’d rather involve builders early, hear where the approach makes sense, and understand where it falls short.&lt;/p&gt;

&lt;p&gt;Any feedback is more than welcome, whether it’s on the architecture, documentation, developer experience, or simply something you’d like to see added next.&lt;/p&gt;

&lt;p&gt;Some useful links:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Demo: &lt;a href="https://drive.google.com/file/d/10Yd8dQahkTj_KOuqYe94QYNl70tOlsQQ/view?usp=sharing" rel="noopener noreferrer"&gt;https://drive.google.com/file/d/10Yd8dQahkTj_KOuqYe94QYNl70tOlsQQ/view?usp=sharing&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Docs: &lt;a href="https://docs.unlayer.com/elements" rel="noopener noreferrer"&gt;https://docs.unlayer.com/elements&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Landing page: &lt;a href="https://unlayer.com/elements" rel="noopener noreferrer"&gt;https://unlayer.com/elements&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
      <category>frontend</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
