<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div class="message-content" style="font-size:16px;max-width:600px;padding:10px 20px 20px 20px">
<p style="margin-bottom:1em"><br>Heya, Andrea!<br>
</p>
<p style="margin-bottom:1em">I've built a combobox user experience in Backbone.js, Angular.js, and React, and let me tell you it's not easy. Luckily, we've got plenty of libraries now (<a href="https://click.kit-mail6.com/k0u2x4g9pof2uwolqrikuo9rnr77t8hxl8r/7qh7h2u0nk9ml8fz/aHR0cHM6Ly9naXRodWIuY29tL2Rvd25zaGlmdC1qcy9kb3duc2hpZnQ=" url-id="1497432747">my own</a> included 😅) that can handle the tough accessibility stuff for us. But that's only part of the challenge. The other part is if you need the data source to come from the backend. Dealing with race conditions and the indirection between the client and server code makes doing this a big pain.
</p>
<p style="margin-bottom:1em">Outside of comboboxes, there are a lot of components we write that really <em>require</em> backend code to do their job. I'd like to talk with you about a really cool pattern I've been using to make what I'm calling Full Stack Components which are files which contain both the backend code as well as the UI code. This drastically reduces the amount of indirection and increases my productivity. Sound interesting? Go read the article on EpicWeb.dev: <a href="https://click.kit-mail6.com/k0u2x4g9pof2uwolqrikuo9rnr77t8hxl8r/p8hehqu9q34l67fq/aHR0cHM6Ly93d3cuZXBpY3dlYi5kZXYvZnVsbC1zdGFjay1jb21wb25lbnRz" url-id="1497432750"><strong>✨ Full Stack Components ✨</strong></a>
</p>
<p style="margin-bottom:1em"><a href="https://click.kit-mail6.com/k0u2x4g9pof2uwolqrikuo9rnr77t8hxl8r/p8hehqu9q34l67fq/aHR0cHM6Ly93d3cuZXBpY3dlYi5kZXYvZnVsbC1zdGFjay1jb21wb25lbnRz" url-id="1497432750"><img src="https://embed.filekitcdn.com/e/xpcVJ86QdonnRMFaJVRKG7/6bXdewDLCxPdgVrFstxrvF?w=800&fit=max" alt="Full Stack Components on EpicWeb.dev" style="max-width:100%;height:auto"></a></p>
<p style="margin-bottom:1em">What do you think <a href="https://click.kit-mail6.com/k0u2x4g9pof2uwolqrikuo9rnr77t8hxl8r/kkhmh2u8xdn3wnhl/aHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQ_dGV4dD1SZWR1Y2VkJTIwaW5kaXJlY3Rpb24lMjBhbmQlMjBpbmNyZWFzZWQlMjBwcm9kdWN0aXZpdHklM0YlMjBTaWduJTIwbWUlMjB1cCUyMSUyMCUyMkZ1bGwlMjBTdGFjayUyMENvbXBvbmVudHMlMjIlMjBieSUyMCU0MGtlbnRjZG9kZHMlMjBzaG93cyUyMGhvdyUyMCU0MHJlbWl4X3J1biUyMGVuYWJsZXMlMjB0aGlzJTIwd2l0aCUyMGl0cyUyMFJlc291cmNlJTIwUm91dGVzJTIwZmVhdHVyZSUyMCVGMCU5RiVBNCVBOSUyMGh0dHBzJTNBJTJGJTJGd3d3LmVwaWN3ZWIuZGV2JTJGZnVsbC1zdGFjay1jb21wb25lbnRzJTIwJUYwJTlGJThDJThD" url-id="1497432753">your friends</a> have to say about this?
</p>
<p style="margin-bottom:1em"><br>I hope you have an awesome day, Andrea.<br><br>
</p>
<p style="margin-bottom:1em">- Kent
</p>
<br>
<br>
<small>
<a href="https://click.kit-mail6.com/k0u2x4g9pof2uwolqrikuo9rnr77t8hxl8r/kkhvgkk3t2u8xdn3w6ul/aHR0cHM6Ly9rZW50Y2RvZGRzLmNvbS8_bWVzc2FnZT0lRTIlOUMlODUlMjBZb3UlMjd2ZSUyMGJlZW4lMjB1bnN1YnNjcmliZWQlMjBmcm9tJTIwRXBpYyUyMFdlYiUyMERldiUyMGVtYWlscy4=" trigger-id="3309942" url-id="1497432754">Unsubscribe from Epic Web Dev emails</a> or <a href="https://unsubscribe.kit-mail6.com/k0u2x4g9pof2uwolqrikuo9rnr77t8hxl8r" class="unsubscribe-link">Unsubscribe from everything</a>
<br>
<br>
P.O. Box 562, American Fork, Utah 84003
</small>
</div>
<!-- -->
<img src="https://open.kit-mail6.com/k0u2x4g9pof2uwolqrikuo9rnr77t8hxl8r" alt="">
</body>
</html>