Issue #49: Summer In The City
🎶 All around, people looking half-dead, walking on the sidewalk, hotter than a match head… 🎶
I love summers. Quiet and calm, no-majs slowly melt in the shadows while developers sit in their cellars (or sheds) and have the opportunity to eventually work on their projects in focused state. It only takes some tools and patience and thanks to our talented peers, with some of the former we need less of the latter. Let’s dive into the awesome news from the metaframeworks world, they’re worth reading.
The Good
Love it or hate it, Microsoft has declared a new era of TypeScript — the official final release of TS v7.0, a.k.a. project “Corsa”, delivering an 8x to 12x performance improvement by dropping Node.js runtime overhead and utilizing Go’s native shared-memory parallelism.
Realistically, there are some PROs and CONs for metaframework application builders that you’d better keep in mind for approaching migration to the new version in a sane way. With TypeScript 7 you get:
âž• Less RAM pressure (so in time for my old Intel MacBook with Arch Linux).
âž• Snappier IDEs (specifically in terms of diagnostics/autocomplete).
âž• Fast build/watch times, especially beneficial for monorepo tools (which I personally would never recommend but still).
On the negative side though, there are some caveats:
➖ New version significantly breaks ecosystem compatibility for several popular metaframeworks, meaning you cannot just blindly upgrade your project. Updates might be problematic up until v7.1 (while all the programmatic APIs are blocked). Long story short, if you upgrade a Vue, Svelte, or Astro app to TypeScript 7.0 today, your editor’s template type-checking and framework-specific language tools may break entirely. The exception is React-based metaframeworks like Next.js or Remix that are largely unaffected because React uses standard .tsx files, which the native Go compiler handles perfectly out of the box.
âž– New version is stricter by default, which is worth checking for each specific project (strict: true with noImplicitAny, strictNullChecks, and strict bind/call/apply checks; esnext defaulted for module with legacy module formats like amd, umd, and systemjs entirely removed; mandatory noUncheckedSideEffectImports, and more).
Also importantly, TS7 can easily coexist with TS6 as they have the same API. You can use the “blazing-fast” TypeScript 7 tsc binary for your global type-checking builds and your metaframework can simultaneously rely on the stable, re-exported TypeScript 6.x compiler APIs through tsc6 without causing configuration or dependency collisions. And even with pure TS6, Microsoft traditionally backports critical security fixes for the last rolling year of TypeScript major releases (thus we’re safe until March 2027, I believe).
The Bad
There’s luckily not much to say in the vein of my usual security rantings, even though the npm worms never sleep and are not afraid of the new GitHub’s measures against them. But I have an always interesting inner danger for the metaframeworks world: notorious vanilla JS!
In his recent article called “Why Vanilla JS” Guseyn Ismayylov argues about the necessity and justification of using JavaScript frameworks and metaframeworks reflecting on his own experience in this regard and focusing on browsers being the one and only framework that a modern web developer may need.
In recent years, there are also so much advancements in HTML, CSS and JavaScript. Don’t get me wrong. Are these technologies perfect? No, far from that. However, instead of inventing good design patterns and developing a culture of writing good structured code and JUST DO THE WORK, we invented so much shit just not to write HTML, CSS and JavaScript.
While there’s a lot one can inevitably agree with (and if you’re open to it and want to know how it’s going out there in pure JS world you should also check out Pawel Grzybek’s summary on the latest and greatest) my generalized opinion was always that it’s easy to screw up a no-frameworks web app and it’s much harder to screw up a framework-based web app (and that’s what the author tangentially points to as well).
The Noteworthy
And now let’s actually switch to the recent updates to tools that help you to avoid screwing your work up.
Svelte team has published their monthly report for July mentioning a lot of preparatory technical updates for actively developed new major version of SvelteKit. The article also mentions one cool video on realtime data in SvelteKit using remote functions definitely worth checking out.
11ty team is also deep into new version preparation with another alpha of theirs (not sure if it’s the very Zach who actually works on that or his awesome agents but who can say these days) including updates to their highly-praised Nunjucks fork.
React Router team, while work on early versions of new Remix is in full swing, released a new minor version with some updates for their current form of Remix (the framework mode).
Jovi De Croock published another version of Pracht with lots of cool updates and even more funny Thanks @JoviDeCroock! lines in the corresponding changelog, which is cute though slightly obsessive and robotic, FWIW.
And Vite team announced another cool beta testing invitation, this time for Vite+, “the unified toolchain for the web”. It’s still not clear what will be the place of this tool in the Vite ecosystem exactly, especially after the acquisition, but the update gives clearer context of what can be done with it in general.
I’m sure the next time I see you here you’ll already have a cool metaframework-based TS7 and Vite8 project to share (nothing can be cooler than my new Phaser platformer game starter though, you know, but still) so if that’s the case — please do, and we can chat about that in another stack of metaframeworks records, for sure. That’s what summers are for — having fun with what you love. And I wish you exactly that until the next time.
đź‘‹