Issue #430 • October 14, 2021
The DOM API includes another interesting method that I just stumbled across that's relatively new to the spec: Element.replaceWith(). In brief, this method allows you to replace an element with a new element and any children nested inside it. It also accepts a DOM string.
Here's some code demonstrating three different ways to use it:
// replacing element with element
// replacing element with text
par1.replaceWith('Some example text');
// replacing element with tags as escaped strings par1.replaceWith('<div>More example text</div>');
You can try a real interactive example in this CodePen demo. It will help to look at the code to see what's happening, but note a few things about the three ways you can replace the main paragraph element in the code above and the demo:
- The lone argument passed into replaceWith() can be a single HTML element object with optional nested children. Those child elements will be preserved. So technically you're passing in a node tree.
- When passing in a DOM string, you wrap the argument with quotes or pass it in as a previously defined string object. Again, the full string will replace the element so that the original element completely disappears.
- My last example in the code above includes HTML tags in the string value. These won't be recognized as tags but will be escaped as part of the string to display on the page. You can try this using the interactive demo by entering HTML characters or other special characters in the input field.
- In the live demo, notice the paragraph being replaced also has a child element (for the italics). This element also disappears when the parent is replaced.
And that's pretty much all there is to this method. It's handy because it's much like innerHTML() but instead of replacing the child elements of the targeted element, it replaces the element directly while passing in any accompanying children.
Now on to this week's tools!
Retool - Build Internal Tools 10x Faster
Retool gives you a powerful set of building blocks: tables, lists, charts and more. Integrate with any datasource, REST API, gRPC, or Firebase and customize your app with JS. Save hundreds of hours. sponsored
Not exactly a JS library, but a new web language that compiles to JS that features speed via a time-saving syntax and memoized DOM.
A new performance-first animation library built on the Web Animations API and includes features like selectors, individual transforms, timeline sequencing, and more.
An open source framework that makes it easy to create custom, web-based design tools that export design assets right in your browser.
A library of React components to build interactive, animated math-based visualizations with declarative code.
A language for building and deploying modern full-stack web apps with less code. Describe high-level features with Wasp then write the rest of your logic in React, Node.js and Prisma.
A web framework based on Deno and React, with no build or bundle, that embraces modern native browser features like ES Modules, Import Maps, and Web Streams.
A library for teaching code concepts that allows web and mobile apps to include a visual code editor for any of the five supported programming languages.
On the Release Radar:
Tech Jobs for Good
Tech Jobs for Good helps connect developers to job opportunities at organizations working on pressing issues such as improving educational outcomes, eliminating barriers to mental health, and providing pro bono legal services to those in need. Find out how you can use React to make a difference today. sponsored
Horizontal scrolling menu component for React.
React component for the popular Monaco embeddable code editor (which is the engine that powers VS Code).
React Carousel Minimal
Easy to use, responsive, and customizable carousel component for React projects.
React Image Pan, Zoom & Rotate
A React library to add provide rotate, zoom, drag, pan, move, etc., functionality to an image on the page.
React component to add a fast, portable, and extensible CMD+K interface to your site.
Lightweight project that exposes an API for easily creating customizable forms with built-in validation based on a JSON Schema.
A performant and comprehensive React component to add a sticky element to a page.
A next-generation state management library for React with support for TypeScript, Class and Hooks API, and compatible with Preact, React Native , and Next.js.
A React-based file manager component for the browser and Node.js.
Declarative tracking and analytics for React apps, built by the NY Times open-source team.
Apple sign-in for React using the official Apple JS SDK.
React Social Login Buttons
A simple package to provide a front-end for social login buttons using React, on top of already-existing functionality for auth/login.
On the Release Radar:
Tech Jobs for Good
Use Tech Jobs for Good to find front-end developer jobs at organizations working on pressing issues such as fighting misinformation online, improving access to social services, and reducing carbon emissions. sponsored
A customizable, modern, and cross-platform File Explorer built with Electron and available for Mac, Windows, and Linux.
A free and open-source cloud encryption tool for Dropbox that creates a "vault" for your cloud files.
An open-source, cross-platform app designed to manage and secure your cloud credentials in multi-account environments.
Capture, organize and analyze what your users have to say through public feedback boards to make better product decisions.
API documentation tool that simplifies the creation and distribution of REST API documentation.
Fake Word Generator
Might come in handy if you're trying to come up with a new name for a product service. Even lets you 'mutate' words to see related results.
A WordPress theme built with Tailwind CSS.
A Linux system resource monitor with support for Mac in development.
A container-based approach to boot a full Android system on a regular GNU/Linux system like Ubuntu.
Node utility for people who need to reference the Web Content Accessibility Guidelines frequently and are tired of copying and pasting.
A document language with XML-like semantics that looks like you're invoking a bunch of CLI commands.
A Tweet for Thought
Wes Bos recently started an interesting thread that indirectly tackles the apparent disdain that a lot of devs have towards PHP. He makes a good point, that we ridicule PHP but then we get excited when features PHP has had for years get added to our own 'modern' tech stack.
Send Me Your Tools!
Made something? Send links via Direct Message on Twitter @WebToolsWeekly (details here). No tutorials or articles, please. If you have any suggestions for improvement or corrections, feel free to reply to this email.
Before I Go...
StackOverflow Copilot is one of the more humorous projects you'll come across. There's a reason "Don't" is step 1 in the installation instructions.
Thanks to everyone for subscribing and reading!
Support this newsletter:
PayPal.me / Patreon / GitHub Sponsors / E-Books / Buy Me a Coffee