<?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: Dumi Jay</title>
    <description>The latest articles on DEV Community by Dumi Jay (@dumijay).</description>
    <link>https://dev.to/dumijay</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%2Fuser%2Fprofile_image%2F549834%2Fa41774b5-844a-4d39-bf6f-b43cc842b1dc.jpg</url>
      <title>DEV Community: Dumi Jay</title>
      <link>https://dev.to/dumijay</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dumijay"/>
    <language>en</language>
    <item>
      <title>An agnostic, reactive &amp; minimalist (3kb) UI library</title>
      <dc:creator>Dumi Jay</dc:creator>
      <pubDate>Fri, 16 Jul 2021 14:23:27 +0000</pubDate>
      <link>https://dev.to/dumijay/an-agnostic-reactive-minimalist-3kb-ui-library-with-direct-access-to-native-dom-5gmf</link>
      <guid>https://dev.to/dumijay/an-agnostic-reactive-minimalist-3kb-ui-library-with-direct-access-to-native-dom-5gmf</guid>
      <description>&lt;p&gt;Introducing CalDOM, an agnostic, reactive &amp;amp; minimalist (3kb) JavaScript UI library with direct access to native DOM.&lt;/p&gt;

&lt;p&gt;Instead of pulling you into a library-specific magical world, CalDOM let you fully access the DOM directly while keeping the reactivity. A 2-in-1 Virtual-DOM &amp;amp; No-Virtual-DOM approach if you will.&lt;/p&gt;

&lt;p&gt;So you could take full advantage of native APIs &amp;amp; mix it with other libraries to gain superior performance &amp;amp; flexibility in the development process.&lt;/p&gt;

&lt;p&gt;CalDOM does not require any dependency or tooling. It does not introduce any new syntax. Just pure JS.&lt;/p&gt;

&lt;p&gt;In essence, CalDOM is just a wrapper around the native Node/Element. The overall performance drop is about 0.04x compared to vanilla/pure JavaScript. This is based on averaged unit level benchmarks in handling single &amp;amp; multiple-element instances. &lt;a href="https://caldom.org/benchmark/"&gt;View Benchmark Results&lt;/a&gt; against Vanilla JS, jQuery, React JS, Vue &amp;amp; more.&lt;/p&gt;

&lt;p&gt;Official site: &lt;a href="https://www.caldom.org"&gt;caldom.org&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Hello World!
&lt;/h2&gt;

&lt;p&gt;Use it as a chainable DOM traverser and a manipulator, a lightweight jQuery alternative.&lt;/p&gt;

&lt;p&gt;We use _ (underscore) to access CalDOM.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/dumijay/embed/BaRRNya?height=600&amp;amp;default-tab=js,result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Hello World - Reactive
&lt;/h2&gt;

&lt;p&gt;Build reactive components. Use it as a lightweight React JS/Vue JS alternative.&lt;/p&gt;

&lt;p&gt;This example not using classes, similar to React Hooks, but simpler.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/dumijay/embed/OJmmVgV?height=600&amp;amp;default-tab=js&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Hello World - Reactive (ES6)
&lt;/h2&gt;

&lt;p&gt;Also works as an extended ES6 class.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/dumijay/embed/KKmmpym?height=600&amp;amp;default-tab=js&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Reactive Native DOM Elements
&lt;/h2&gt;

&lt;p&gt;Native DOM Node is a first-class citizen. Also, a CalDOM instance is just a wrapper around them. This agnostic interoperability allows for an infinite amount of powerful integrations.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/dumijay/embed/KKmmpoq?height=600&amp;amp;default-tab=js&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Make existing HTML reactive
&lt;/h2&gt;

&lt;p&gt;Not a fan of rendering &amp;amp; virtual-DOM thingies? Use CalDOM to update() pre-defined HTML content reactively. CalDOM's API is inspired by jQuery.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/dumijay/embed/BaRRoVY?height=600&amp;amp;default-tab=js&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Summon the power of both worlds!
&lt;/h2&gt;

&lt;p&gt;Efficiently update() the DOM directly and/or proceed to virtual-DOM render if it's more suitable. Use this.$ to hold direct DOM Node references. CalDOM keeps them in sync even when render() drastically alter the DOM structure.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/dumijay/embed/GRmmpXM?height=600&amp;amp;default-tab=js&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Use HTML to create
&lt;/h2&gt;

&lt;p&gt;Similar to JSX, but with vanilla HTML &amp;amp; JavaScript. No compilers required.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/dumijay/embed/bGWWVOj?height=600&amp;amp;default-tab=js&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  You can even make jQuery reactive
&lt;/h2&gt;

&lt;p&gt;Basic building box of CalDOM is just native Node/Element. Thus, making it compatible with almost any DOM library on the web.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/dumijay/embed/GRmmpzO?height=600&amp;amp;default-tab=js&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Todo App - Non Reactive
&lt;/h2&gt;

&lt;p&gt;CalDOM does not dictate your coding style or approach. It's super flexible &amp;amp; scalable from a single element to large nested implementations.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/dumijay/embed/qBmmOwa?height=600&amp;amp;default-tab=js&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Todo App - Reactive
&lt;/h2&gt;

&lt;p&gt;CalDOM renders a virtual-DOM and efficiently updates only changed elements in the actual DOM.&lt;/p&gt;

&lt;p&gt;Multiple renders are batched to only run once.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/dumijay/embed/QWvvjRz?height=600&amp;amp;default-tab=js&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Todo App - Multiple Nested Reactive Components
&lt;/h2&gt;

&lt;p&gt;CalDOM plays nicely with nested reusable reactive components and takes care of all DOM updates efficiently.&lt;/p&gt;

&lt;p&gt;No matter how deeply nested, components only get re-rendered if their state is changed.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/dumijay/embed/wvddKLx?height=600&amp;amp;default-tab=js&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  CalDOM also runs on Node JS
&lt;/h2&gt;

&lt;p&gt;You can use a library like &lt;a href="https://github.com/jsdom/jsdom"&gt;JS-DOM&lt;/a&gt; to implement a browser context on the server.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;JSDOM&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;jsdom&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 

&lt;span class="c1"&gt;//Set window in the global scope&lt;/span&gt;
&lt;span class="nb"&gt;window&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;JSDOM&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;_&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;caldom&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;ServerApp&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nx"&gt;_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;

    &lt;span class="kd"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
        &lt;span class="k"&gt;super&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;react&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nx"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;_&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;+p&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;css&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;color&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#199646&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;ServerApp&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;_&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;body&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;react&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello from NodeJS &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;version&lt;/span&gt;  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;//Saving generated HTML by the component to a file&lt;/span&gt;
&lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;writeFileSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;static_content.html&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHTML&lt;/span&gt; 
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fetching and rendering content generated in the server.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/dumijay/embed/KKmmVQw?height=600&amp;amp;default-tab=js&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Multiple element instances, built-in XPath support &amp;amp; there is much more packed in this tiny 3KB (min.gzip) library.&lt;/p&gt;

&lt;p&gt;Check out &lt;a href="https://caldom.org"&gt;caldom.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please note that I did not use classes to keep the examples simple without HTML &amp;amp; CSS. But in practice, always prefer using external CSS over directly setting CSS on elements due to obvious reasons. CalDOM has addClass(), removeClass() methods to facilitate this.&lt;/p&gt;

&lt;h1&gt;
  
  
  Get Started
&lt;/h1&gt;

&lt;h2&gt;
  
  
  CDN
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://unpkg.com/caldom"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Use it as a Module
&lt;/h2&gt;

&lt;p&gt;CalDOM is not attaching anything to the global environment when used as a module.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;caldom
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//CalDOM also runs on Node JS with js-dom&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;_&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;caldom&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//RequireJS&lt;/span&gt;
&lt;span class="nx"&gt;requirejs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;caldom&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;_&lt;/span&gt;&lt;span class="p"&gt;){}&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//ES6 Module&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;_&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./dist/caldom.min.mjs.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Contributing
&lt;/h1&gt;

&lt;p&gt;It's great if you could contribute to the project. It's open-source (MIT licenced) &amp;amp; available on &lt;a href="https://github.com/dumijay/CalDom"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Principles
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Performance, being agnostic(interoperability with native DOM) &amp;amp; minimalism is prioritized above all.&lt;/li&gt;
&lt;li&gt;The richness in short-hand methods and features is secondary.&lt;/li&gt;
&lt;li&gt;Supporting legacy browsers is not a priority.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  To-Do
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;del&gt;Implement tests&lt;/del&gt;

&lt;ul&gt;
&lt;li&gt;Need to expand the variety of tests to different use cases. (Currently, it's biased towards my personal coding style).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;A beginner-friendly documentation/guide. Current one is too technical.&lt;/li&gt;
&lt;li&gt;Implement helpful debug outputs for the development version.&lt;/li&gt;
&lt;li&gt;Thorough browser version tests.&lt;/li&gt;
&lt;li&gt;Further optimize virtual DOM diffing algorithm. &lt;a href="https://caldom.org/benchmark/"&gt;See benchmark here&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;The diffing algorithm is just 140+ lines of code.&lt;/li&gt;
&lt;li&gt;I believe there is so much room for improvement if some bright minds look at it from a fresh angle.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Need to benchmark bigger implementations.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;That’s all the technical stuff. Phew! :)&lt;/p&gt;

&lt;p&gt;This is the first time I’m publishing something like this. This was a simple jQuery alternative I made myself years ago &amp;amp; kept on improving it slowly. Worked really hard during the last few months to add reactivity and get it to this level.&lt;br&gt;
Please let me know what you think. What’s bad, what’s good and your suggestions to improve it.&lt;/p&gt;

&lt;p&gt;I honestly don’t know where this will lead. Probably all of this is just for nothing. The world has enough UI libraries already. Duh!. I decided to make my own mini jQuery years ago because I wanted a lightweight library. Also, I wanted to stay close to the native DOM API &amp;amp; vanilla JavaScript. Looking back, it paid really well. Then React &amp;amp; Vue JS happened.&lt;/p&gt;

&lt;p&gt;In my opinion, the reactive UI approach bought a huge productivity improvement from the perspective of the developer. Also, it enabled a lot of beginner developers to navigate the programming landscape more easily.&lt;/p&gt;

&lt;p&gt;However, this shift also moved people away from the core stuff that’s happening under the hood. As a result, sometimes we have to struggle a lot to find solutions within the library’s limits, which are sometimes hilariously dead simple &amp;amp; performant to implement with native APIs.&lt;/p&gt;

&lt;p&gt;CalDOM tries to solve this by being 100% interoperable with the native DOM. I hope this will be helpful for developers with similar requirements.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>showdev</category>
      <category>react</category>
    </item>
  </channel>
</rss>
