A LeetCode desktop app: practice sessions in their own window

The search for a LeetCode desktop app usually starts after a specific kind of loss. Twenty minutes into a hard problem, with a partial solution in the editor and a contest clock running, a keystroke aimed at one tab landed on another. Or the practice session dissolved the fourth time attention slid from the problem to a different tab and back. Either way the conclusion is the same: this should not be living in a browser. The good news is that the fix is real. The awkward news is that it is not an official application, and no amount of searching will produce one.

What LeetCode actually publishes

LeetCode's own footer carries a Download App link, and following it lands on a page that makes the scope clear without needing to be read closely.

One LeetCode a day keeps your reasoning in play. Jump in for quick practice, browse your collections, and stay on top of important events and progress. Source: leetcode.com

Quick practice, collections, events and progress. That is a companion for a phone, not a place to write and debug a solution. The App Store listing published by LeetCode LLC confirms the shape: the app is free and its compatibility line reads iOS 16.0 or later.

There is a second detail in Apple's metadata for that listing which closes off the usual escape route. Many iPhone and iPad apps can be installed on Apple silicon Macs, because developers can allow it, and that is how a good number of services with no Mac client end up with a Dock icon anyway. LeetCode's listing does not include Mac in its device support. So on a Mac there is no official LeetCode application of any kind, native or borrowed from iPad.

That leaves the browser, and it leaves the question of why so many pages appear to offer a desktop download.

What those desktop download pages are

Search results for a LeetCode desktop app include app catalogues, wrapper services and a Visual Studio Code extension, and it is worth separating them, because two of the three are the same thing and the third is genuinely different.

The catalogues and wrapper services offer a downloadable application that opens leetcode.com in a window. That is not a criticism of them. It is a plain description of the category, and it happens to be exactly what the frustrated reader wants. The important consequence is that nobody is getting a native editor, a local judge or offline problems out of them, because none of those exist to be packaged. What is on offer is the window, and the window is the thing that was missing.

The VS Code extension is a different proposition. It pulls problems into an editor already configured for the language, with the reader's own keybindings, linting and snippets, and submits from there. For someone who spends the day in that editor, it removes the context switch entirely. It also removes the parts of LeetCode that are not the problem statement and the code box: the discussion threads, the editorial solutions, the contest interface and the company-specific question lists all live on the site.

So the honest split is between improving the window around leetcode.com and moving the code into an editor. Both are legitimate. They suit different parts of a preparation routine, and a reader doing timed contest practice and a reader grinding a topic list have different answers.

Why the browser is the real client here

It is tempting to treat the absence of a desktop app as neglect. It is closer to a consequence of how the product works, and LeetCode's subscription page spells the mechanics out while describing what Premium adds.

Code and layouts are instantly saved to the cloud, ensuring you can learn across devices at ease. Source: leetcode.com

The state lives on the server. So does the judge, and the same page describes priority judging as up to ten times faster during peak hours, which only means anything if the execution is happening on LeetCode's machines rather than the reader's. The autocomplete, the interactive debugger with breakpoints, the interview simulations and the company-specific question lists are all server-side features delivered to a browser.

That has a reassuring implication for anyone worried about choosing wrong. A window is only a window. Nothing about the practice history, the solved list, the saved code or the layout depends on how the page is reached, so the container can be changed on a Tuesday and changed back on a Wednesday with nothing lost.

The subscription figures are worth knowing for a different reason. LeetCode's subscribe page lists the monthly plan at $39 and shows it at $35 a month at the time of writing, and the yearly plan at $159 billed yearly, which the page presents as $13.25 a month. Prices are marked in USD. Anyone paying either of those numbers is buying practice time, and practice time lost to hunting for a tab is the most expensive kind.

What a tab strip does to timed practice

The specific frictions are worth naming, because each one has a different fix and only some of them are about windows.

Closing is one keystroke from submitting

Cmd+W closes the frontmost tab with no confirmation. Its neighbours on the keyboard are the shortcuts a hand uses constantly. LeetCode saves code to the cloud, which softens the blow, but a contest clock does not pause while the tab is reopened and the problem reloaded.

The distraction is one tab away, and it is the trained behaviour

Preparation for an interview is partly practice at not looking things up. A browser puts the search bar in the same window as the problem, one keystroke away, and the muscle memory that reaches for it was built over years. A window with no address bar does not make the search impossible. It makes it deliberate, and deliberate is enough.

Notifications arrive in the wrong context

A window shared with mail, chat and a calendar is a window that will interrupt a forty minute session. Nothing about LeetCode causes this. Everything about the container does.

Finding it again is a search

Twenty tabs in, the favicon is four pixels. Returning to a problem means scanning a strip or retyping the address, which is a strange amount of work to reach something already open.

Browser tab Safari web app Site to app tool VS Code extension
Own Dock icon and Cmd+Tab slot No Yes Yes Editor's own
Address bar removable No Yes Yes Not applicable
Separate sign-in from the browser No Yes Yes Own session
Contest interface and discussions Yes Yes Yes No
Reader's own keybindings and linting No No No Yes
Cost Free Free Varies Free

Setting up for a contest rather than for a problem

The window matters more in some kinds of practice than others. Working slowly through a topic list, with reference material open and no clock, is a reading task, and a browser is a perfectly good reading environment. The case for a dedicated window is strongest in the sessions that are meant to resemble the real thing.

LeetCode's subscription page describes several features built for exactly those sessions. Interview simulations are described as timed mock assessments where the reader picks a company and receives a question under pressure. Priority judging is described as up to ten times faster during peak hours, which matters when a submission is being made against a clock. Unlimited playgrounds with folders cover scratch work. The Ask Leet agent is described as brainstorming solutions, optimising code, generating test cases and debugging, with Premium adding 500 extra monthly credits and up to thirty solution analyses per day.

Read together, that is a product built around timed, focused sessions. Every one of those features loses value if the session it runs inside is interruptible, and the session is interruptible because of the container rather than because of anything LeetCode does.

There is a practical way to use both containers deliberately. A separate window, pointed at the problem set with no address bar, becomes the place where timed work happens. The ordinary browser stays the place where discussions get read, editorials get studied and solutions get compared afterwards. Splitting the two by window rather than by willpower means the mode is decided by which icon gets clicked, and the review that follows a failed attempt does not have to fight the same tab strip that broke the attempt.

That division is the whole benefit. It is small, and it survives being forgotten about, which is more than can be said for most attempts at concentration.

Building the practice window

macOS provides a documented route at no cost, and Apple is specific about what the result is.

Starting with macOS Sonoma 14, you can use Safari to save any webpage as a web app, so that you can use it independently of Safari. Source: support.apple.com

In Safari the path is File then Add to Dock. Apple's page states that the result is saved to the Applications folder of the user's home folder and opens from the Dock or from Spotlight, so it is a real item on disk rather than a bookmark wearing an icon.

Three of the settings Apple documents matter for this particular use. The window's URL can be set, so it can open on the problem set rather than the marketing page. The navigation controls in the toolbar can be hidden, which is what removes the address bar and the back button. And the name and icon are whatever the reader chooses, so the item in Cmd+Tab reads as a practice tool rather than as a website.

The fourth detail is the one that solves a problem readers often do not expect.

A web app functions independently of Safari. It shares no browsing history, cookies, website data, or settings with Safari. Source: support.apple.com

Its own cookie store means its own sign-in. Anyone keeping a personal account and a bootcamp or employer account apart has a mechanism for it, and the window signed in to one is not disturbed by the browser signed in to the other.

Where Add to Dock runs out is predictable. It is Safari only, so a session that lives in Chrome has to be rebuilt somewhere new. It gives one window per URL, so a second account is a second web app assembled by hand. And the behaviour available is the handful of switches Apple exposes. A site to app tool covers that ground with the session handling and the icon prepared, and the supported services list shows the same pattern applied to the other sites people keep open for hours at a time.

What to change first

Open the problem set in Safari, choose File then Add to Dock, and hide the navigation controls so the window has no address bar to reach for. Run one timed session in it before deciding anything else, because the effect of removing the search bar from a practice window is larger than it sounds. If the session needs to keep a sign-in apart from the browser, Kagemusha does the same job with that built in.

Frequently asked questions

Is there an official LeetCode app for macOS?

No. LeetCode's own download page presents a mobile app for quick practice, and the App Store listing published by LeetCode LLC gives iOS 16.0 or later as its requirement without listing Mac in its device support. On a Mac the site is reached through a browser, and the useful change is to the window rather than the software.

Are the LeetCode desktop apps on download sites safe to use?

They are wrappers around leetcode.com rather than a different program, so what they offer is the window. Nothing about them provides offline problems or a local judge, because the judging runs on LeetCode's servers. Checking who publishes a given wrapper is worth the minute it takes, since the alternative route through Safari costs nothing and is documented by Apple.

Will code be lost if the practice window is closed?

LeetCode's subscription page states that code and layouts are saved to the cloud so that work carries across devices. That covers the code itself. What a closed window does lose is the session: the contest clock keeps running, and the problem has to be reloaded and found again.

Is the VS Code extension better than a dedicated window?

It suits a different job. The extension brings problems into an editor with the reader's own keybindings and tooling, which is excellent for working through a topic list. It does not bring the contest interface, the discussions or the company-specific question lists, all of which live on the site. Readers doing timed contest practice generally need the site.

Can two LeetCode accounts be kept open on one Mac?

Yes, by giving each one its own window. Apple's documentation states that a Safari web app shares no cookies or website data with Safari, so one account can stay signed in inside a web app while another stays signed in to the browser. A third account needs a third window with its own session.

Back to all posts