v2.0.0-rc.2
Pre-release
Pre-release
2.0.0-rc.2 (2026-08-04)
Features
- ui-virtualization: Add a
gapoption tovirtual-repeatfor layouts with fixed spacing between items. Vertical and horizontal spacer and scroll-position calculations now account for the configured gap. (#2409) - by @bigopon - plugin-conventions: Add TypeScript 6 support while preserving TypeScript 5 support, and allow Aurelia tooling to coexist with the TypeScript 7 CLI. (#2447) - by @bigopon
- vite-plugin: Add Vite 8 support. Convention-based components and TC39 decorators now work with Vite's Oxc transform, including HMR, SSR, web workers, and TSX applications. Projects using legacy TypeScript decorators or incompatible custom Oxc settings receive guidance on configuring their build. (#2449) - by @fkleuver
Bug Fixes
- router: Fix application-root navigation under configured base paths. Base paths are stripped only at path, query, or fragment boundaries; excess
../prefixes remain clamped at the application root; and hash-modeloadlinks stay beneath the configured application base. (#2443) - by @fkleuver - router: Restore the route-context node when navigation is cancelled by returning
falsefromcanUnload. (#2431) - by @Sayan751 - runtime-html: Remove the obsolete
definecomponent lifecycle hook from the public types and documentation. The runtime had already stopped invoking it. (#2444) - by @fkleuver - runtime: Detach collection length and size observers from their owning collection after their final subscriber unsubscribes, avoiding unnecessary collection-change work. (#2439) - by @fkleuver
- runtime: Make deep computed observation safe for cyclic object, array, map, and set graphs. Computed observers now finish queued reconciliation without retaining dependencies after detachment, while setter-backed computed properties correctly perform assignments and invalidate cached getter values. (#2442) - by @fkleuver
- runtime-html: Add the missing Z entries to the default keyboard modifier mappings, making
:z,:90, and:122consistent with the other letters. (#2445) - by @fkleuver - kernel: Report the correct error when resolving an interface without a registration or default implementation, including through
newInstanceOfandnewInstanceForScope. (#2438) - by @fkleuver - kernel: Fix DI metadata inheritance so derived classes honor their own
static injectand@injectdeclarations without reusing or mutating base-class dependency metadata. (#2440) - by @fkleuver - types: Improve TypeScript inference for dialog results and decorator callbacks.
DialogOpenPromise.whenClosed(),@watch, and@computednow preserve their relevant result, value, instance, and callback types. (#2412) - by @bigopon - router: Preserve a component's static
navvalue when an object-form route configuration supplies no override. Routes without an explicit or staticidnow derive it from their primary effective path. (#2441) - by @fkleuver - router: Render routed content correctly through containerless
<au-viewport>elements, including nested containerless viewports and containerless routed components. (#2413) - by @Sayan751 - router: Fix cold-start deep links to child routes nested beneath an empty-path parent. (#2418) - by @Sayan751
- router: Make
RouteNode.titlewritable so lifecycle and router hooks can update a route node's title during navigation. (#2427) - by @Vheissu - plugin-conventions: Only select the static resource-definition path when a class contains an actual static
$auproperty, avoiding false matches in strings and unrelated code. (#2450) - by @fkleuver - ui-virtualization: Fix
virtual-repeatcollection observation when its iterable is wrapped in a value converter or binding behavior. Mutating the original collection now re-evaluates the wrapped expression and refreshes the rendered views. (#2410) - by @bigopon - plugin-conventions: Fix Vite builds using custom
--modenames so compiled templates, including those used by lazy-loaded routes, are not omitted. (#2417) - by @bigopon - vite-plugin: Fix Aurelia development-package resolution so enabling development imports does not add the global
developmentexport condition for third-party dependencies. (#2419) - by @bigopon - vite-plugin: Normalize Windows drive-letter casing before source include/exclude matching, ensuring eligible Aurelia files are transformed. (#2420) - by @bigopon
- router: Handle encoded parameter values in child routes correctly, including spaces, symbols, and Unicode characters. Fixes #2398. (#2401) - by @Sayan751
- runtime-html: Add reactive shallow object destructuring and property aliases to
repeat.for. Reused rows reconnect their destructured locals when the item changes, while unsupported targets reportAUR0177. (#2448) - by @fkleuver - router: Handle navigation to an empty-path root route when using hash-based routing. Fixes #2393. (#2396) - by @Sayan751
- task queue: Prevent large finite workloads from falsely triggering the recursive deadlock guard. Automatic drains now run in timed slices,
tasksSettled()can be used to observe full completion, and multiple failures are reported throughTaskQueueAggregateError. Delayed runtime-html work also rechecks lifecycle state before mutating torn-down DOM state. (#2421) - by @fkleuver - validation: Deprecate the built-in email validation rule because its pattern is not RFC 5322 or RFC 6532 compliant. It is recommended to use an RFC-compliant parser in a custom rule through
.satisfiesRule()or.satisfies(). (#2387) - by @Sayan751 - runtime-html: Preserve underscores in
<let>binding targets instead of converting them to camel case. (#2446) - by @bigopon