Minko Gechev, who leads the Angular Team at Google, gave audiences at NG-BE 2024 a preview of what’s to come for Angular in 2025. The talk was recently posted to YouTube.
The number one priority in the new year will be making zoneless stable. It was released as experimental in Angular 18 and refers to a change detection strategy that operates without the involvement of the Zone.js library. Gechev explains that zoneless would speed up the initial render, because you wouldn’t have to download Zone.js.
“It will enable better developer experience, because you’re going to have more meaningful stack traces,” he said.
Zone.js isn’t going away, he added, but they do want to make it optional and create an easy way to opt out of it. They also plan to focus on improving the integrations of existing Angular Forms, HTTP, module and router with signals and on developing a Signals form module.
Gechev said he’s also very passionate about improving the ergonomics of how programmers develop applications with an app component. Take, for instance, when importing a Map button from the component library, which then requires developers to import them into the component metadata — which he said seemed redundant.
“With standalone components, you’re always going to use this exact instance, this exact map button and this exact tool tip,” he said. “So this import in the component metadata is entirely redundant, and we’ve been seeing a lot of people actually struggle to understand why this exists, people who don’t have Angular experience and just struggling to build their first Angular component that way.”
Angular could remove the import and directly reference the map button component from the local module scope for directness, he said.
The Angular team is also mulling over other challenges related to component altering. Gechev cautioned that so far, the team is “just brainstorming,” and if it does decide to evolve the component authoring experience in a certain way, it will create an RFC.
“We [are] likely going to continue focusing on performance and developer experience because that’s how it usually goes in web frameworks; the business is driving the development of bigger applications, and the size of the applications is often a conflicting requirement to performance and developer experience,” he said. “We need to scale the performance and developer experience with the complexity of web applications, and we would also want to do that while providing a stable and reliable update path.”
React Version 19 Marked Stable
React v. 19 was marked stable last week and included the addition of Actions, which automatically manage to submit data for you. To do this, React added support for using async functions in transitions to handle pending states, errors, forms, and optimistic updates automatically.
Also, in support of that, React 19 introduced a new hook called useActionState, which accepts a function and returns a wrapped Action to call. In the canary release, this hook was called ReactDOM.useFormState, but that’s now depreciated because useActionState replaces it.
“This works because Actions compose,” the release notes state. “When the wrapped Action is called, useActionState will return the last result of the Action as data, and the pending state of the Action as pending.”
React 19 also incorporates all of the React Server Components features included from the Canary channel.
“This means libraries that ship with Server Components can now target React 19 as a peer dependency with a react-server export condition for use in frameworks that support the Full-stack React Architecture,” the post noted.
Flutter Adds Framework Features, New DevTool Features
Flutter released version 3.27 with updates to the framework, engine and ecosystem.
The open source framework, created by Google, supports building apps for multiple platforms using a single codebase.
Framework enhancements include a number of Cupertino updates that do things like make it more customizable and add properties like mouse cursors, fill colors, semantic labels and thumb images. They also include:
- Normalizing Material theming, refactoring CardTheme, DialogTheme and TabBarTheme to make them conform to Flutter’s conventions for component themes. It also added CardThemeData, DialogThemeData and TabBarThemeData to define overrides for the defaults of the component visual properties;
- More features for CarouselView to support more dynamic layouts within carousels;
- Mixing Route transitions using ModalRoutes;
- Text selection improvements; and
- Support for better row and column spacing.
This release also makes Impeller the default rendering engine on modern Android devices, which has been in preview since last year. On older Android devices and devices without Vulkan support, the Skia rendering engine will still be used.
Improvements to the developer tools and IDEs include support for validating iOS deep link settings in the Flutter Deep Links tool and improvements to the workflow when working with offline data.
One interesting experimental feature in this release is that it allows developers to try WebAssembly by enabling the WebAssembly feature in DevTools setting to load the WASM-compiled DevTools app. Flutter notes this “should yield better performance than the default JS-compiled version of DevTools.” Since it is experimental, developers are encouraged to report any issues they experience.
Shopify Upgrades Carts, Liquid DX
Shopify released its semi-annual updates Wednesday, calling it the ”most boring edition ever.” But that’s good news, the blog post adds, because Shopify focused on improving development in existing tools.
Specifically, developers can now build and implement smoother checkout workflows with carts loading up to 50% faster due to an optimized infrastructure. Other speed enhancements to check out in this release:
- Faster loading for accelerated checkout buttons. Accelerated checkout buttons now support functions and bundles via Portable Wallets from the PDP or Cart pages, with buttons loading up to 58% faster.
- New chat apps are built straight into Checkout, so you can build and embed your chat app into checkout and thank-you pages using the Chat UI component. It can also query information about the checkout and store.
There also are a number of improvements to Liquid DX to make storefronts more efficient. Liquid DX encompasses the tools and features used by developers to build and customize Shopify themes using Liquid, Shopify’s templating language. For instance, Liquid DX improvements now incorporate VS Code Extensions that support a set of autocomplete features. It also includes a unified GraphQL API, which means developers can now manage every part of the online store from a single call to the GraphQL Admin API, including themes, menus, pages, articles, and blogs.
There were also enhancements to Hydrogen, which is a headless commerce framework built on React, including support for gift cards and low inventory cart warnings.
This website offers full details on the 150 updates in this edition. Note that it offers both boring and non-boring versions.
Safari Adds CSS Text Box Centering, Wasm Garbage Collection
One of the great weirdnesses of web programming is trying to optically center a text box with CSS. It’s particularly a headache if you’re trying to get a headline to line up with the top of an image. Safari 18.2’s WebKit aims to fix this by allowing developers to declare which font metric you want the browser to consider the edge of the text box when calculating layout. The code is:
h2 {
text-box: trim-start cap;
}
It means, “Please do trim the start edge (above the headline) at the cap line,” according to the release notes, which include an example of how this looks versus how it looks without the new code.
The WebKit also adds support for Wasm Garbage Collection. Without this feature, source languages that rely on garbage collection — which includes Java, C#, Kotlin and Go — generally have to write their own garbage collectors and compile them to WebAssembly.
“This poses a significant barrier when targeting WebAssembly,” the post states. “Due to the limitations of WebAssembly memory, these collectors are often forced to use less efficient implementation techniques and can’t easily interface with JavaScript.”
With the garbage collection feature, these languages can often directly express their type system in WebAssembly, making it easier to target, the post continued. Now these languages — once compiled to Web Assembly — can leverage the native garbage collector the browser uses to manage JavaScript objects, which simplifies JS/Wasm interoperability and often improves performance. So far, Chrome version 119 and later, as well as Firefox version 119 support WasmCG.
The post Angular Shares ‘Potential Ideas’ for 2025 Improvements appeared first on The New Stack.