← Back to all briefs
JavaScript52s read

Safari Technology Preview 250 Ships the using Keyword

Explicit Resource Management now runs in all three browser engines, so you can finally delete the try/finally cleanup boilerplate around handles and connections.

Safari Technology Preview 250 ships the using keyword, and with it, the last major engine gap for the TC39 Explicit Resource Management proposal closes. WebKit added using and await using declarations, plus Symbol.dispose, DisposableStack, and AsyncDisposableStack. V8 and SpiderMonkey shipped this a while back. Now all three engines have it.

The practical payoff: the try/finally boilerplate you write around file handles, database connections, and locks can go. With using, the runtime calls the resource's dispose method when the scope exits. With await using, it does the same for async teardown. Explicit resource management is finally usable natively on the web.

The same release adds Iterator.zip() and Iterator.zipKeyed() from the Joint Iteration proposal, which combine two or more iterables into one iterator that yields paired values, and it ships Wasm relaxed SIMD and multi-memory. Neither changes how you write frontend code this week, so treat them as FYI.

If you keep cleanup-heavy code, pull the preview and run using against your real teardown paths, especially anything you still guard with a finally block today. This is the release where explicit resource management stops being a proposal you track and becomes a default you use.