I just shipped a preview of TickTick for Visual Studio, an unofficial extension that puts your TickTick tasks in a Visual Studio tool window. You can add tasks with TickTick's quick-add syntax, turn selected code into a task, and complete, snooze and edit tasks without leaving the IDE.
It started as a fork of a Todoist extension I'd already built: I kept the UI and replaced the API layer. I expected the new API layer to be the easy part. Here are the five things that surprised me.
1. The API doesn't parse quick-add syntax
In the TickTick apps you can type Review PR #code ^Work !high tomorrow and get a tagged, prioritised, scheduled task. I assumed the API would do the same. It doesn't. Given that title, the API:
- adds the tag
code, but leaves#codein the title - ignores
^Work,!highandtomorrowentirely
So the extension parses the text itself, then sends a clean title plus real fields. Two details mattered:
-
Project names contain emoji. TickTick's default projects are named like "๐ผWork", so
^workis matched on letters and digits only. - A trailing number is not a time. "Read chapter 5" must stay "Read chapter 5", not become a task due today at 5:00. "Meeting at 3" does become 3:00.
2. The Inbox isn't a project, until it is
GET /project doesn't include the Inbox. Tasks in it have a project id like inbox123456789 (your user id). There's also an inbox alias that works on some endpoints. The extension shows a synthetic "Inbox" entry and normalises those ids, but keeps each task's real project id, because endpoints such as complete and comments need it.
3. GET /tag doesn't return all your tags
It only lists tags you created explicitly. A tag that exists only because a task uses it doesn't appear. Tag suggestions therefore merge /tag with every tag seen on loaded tasks.
4. All-day dates are midnight UTC... in someone's time zone
An all-day task on 2 October, created in India, comes back as 2026-10-01T18:30:00.000+0000: local midnight, converted to UTC. Read it naively in UTC and you get the wrong day.
The obvious fix is to convert with the task's timeZone field (e.g. Asia/Calcutta). But a Visual Studio extension runs on .NET Framework, which can't resolve IANA zone names on Windows. So the extension:
- reads the date in the machine's own zone, and uses it if the result is exactly midnight;
- otherwise rounds the UTC time to the nearest midnight, which is correct for any zone within ยฑ12 hours of UTC.
I tested it with the machine set to India, Shanghai, Pacific, Tokyo, UTC, New Zealand and Hawaii.
5. The Marketplace, System.Text.Json and Visual Studio 2022
My first upload was rejected: an installation-target lower bound of 18.0 (Visual Studio 2026) counts as an experimental API version, and the Marketplace asked for 17.14. That admits Visual Studio 2022, which raised a hidden problem.
VSIX packages don't carry System.Text.Json, because Visual Studio supplies it. Visual Studio 2026 supplies 10.0, but Visual Studio 2022 17.14 supplies 9.0, and my SDK referenced 10.0. On Visual Studio 2022 the extension would have failed to load. Pinning System.Text.Json to 9.0.x fixed it: Visual Studio 2022 is satisfied, and Visual Studio 2026 redirects any version up to 10.0 to its own copy.
If you ship Visual Studio extensions, check which versions your dependencies expect against what each Visual Studio version actually ships.
Security choices
- Personal API token, not OAuth. The user pastes a token from TickTick's settings. It's checked against the API before it's saved.
- Encrypted locally. The token is stored with Windows DPAPI for the current Windows user, never in Visual Studio's settings, which roam between machines.
-
Host-checked. The HTTP handler refuses to attach the token to any host other than
ticktick.com. -
Revocation handled. A
401clears the token and asks you to sign in again. - No telemetry, no logs.
Try it
It's a preview. Repeating dates can't be set yet, and descriptions show as plain text. Feedback is very welcome.
๐ TickTick for Visual Studio on the Marketplace (Visual Studio 2022 17.14+ and Visual Studio 2026)
Unofficial integration, not affiliated with Appest Inc. TickTick is a trademark of Appest Inc.
Top comments (0)