mrkeyoor.com_
Sat 17 Oct 13:32 UTC
Webevaluationupdated 12 Oct 2026

shapeshift review

Shapeshift turns typed text into an appropriate card, such as a checklist, timer, or event. A built-in keyword classifier works without an account, while an optional hosted model chooses intent and deterministic code computes the values. It saves you from selecting a different form for every small task.

+91 / 4dstars / 7d
Verdict

Our Shapeshift run passed all 172 tests and built in 24 seconds, but installation brought 947 packages and a 765 MB footprint for a browser-local utility. Use it as an adaptable quick-capture interface or code reference. I would fix the incompatible-unit fallback before asking users to trust its calculations, and keep important records somewhere with a backup.

We ran it

Lab card: what happened when we ran shapeshiftScreenshot of shapeshift (shapeshiftui.vercel.app)
Install✓ · 12s947 packages · 765 MB
Build✓ · 24s
Tests✓ · 2s172 passed · 0 failed of 172 (bun test)
Repo126 files~7,879 lines of source · 13.1 MB · 0 CI workflows

Answers from our run

Does shapeshift build from source?

Dependencies installed in 12 seconds (947 packages), and the build succeeded in 24 seconds. We cloned commit 5e24166 into a clean Debian container with 3 CPUs and no project-specific setup.

Do shapeshift's tests pass?

Yes. The project's own test command finished in 2 seconds and reported 172 passed, 0 failed (bun test).

Who should not use shapeshift?

People who need synchronized, backed-up task records: the README stores saved cards in browser localStorage.

What are the alternatives to shapeshift?

cmdk, Super Productivity. Our Shapeshift run passed all 172 tests and built in 24 seconds, but installation brought 947 packages and a 765 MB footprint for a browser-local utility.

Setup4/5Offline start needs no key; 947 packages and 765 MB still add weight
Docs4/5Clear card registry, architecture diagrams, and offline setup
Community2/5Short history with current proposals and a small issue and PR queue
Maturity3/5172 passing tests; local-only storage and conversion fallback concern

Who it’s for

React and Next.js developers studying an input that changes into task-specific controls.
People who want a browser-local scratchpad for disposable lists and calculations.
Builders extending a card registry with their own parser and explicit correction controls.

Who it’s NOT for

People who need synchronized, backed-up task records: the README stores saved cards in browser localStorage.
Teams that prohibit sending typed content to a hosted classifier: online mode uses TypeSafe, though offline mode is available.
Applications that must reject incompatible conversions reliably: a closed, unmerged PR reports fallback to a default unit, and the current parser retains that path.
Buyers expecting live currency exchange or configurable local model endpoints today: the relevant work remains in open PRs.

Setup reality

Our sandbox installed commit 5e24166 in 12 seconds, adding 947 packages and occupying 765 MB. The build passed in 24 seconds, and all 172 Bun tests passed in 2 seconds. The run used lab-node:22 on Debian with 3 CPUs and 8 GB RAM, without secrets.

The offline classifier needs no account. Local development needs Bun and the Next.js server. Online mode requires a TypeSafe key in the server environment and a restart; typed content goes to the hosted classifier, and the server route logs shortened inputs.

Saved cards depend on browser localStorage rather than cross-device storage. The scan found no CI workflows or Dockerfile. Its lack of a tests directory under the directory-name check coexists with passing tests and source files under tests.

A sentence chooses the card, and code supplies the values

Type a shopping instruction into Shapeshift and the input becomes a checklist. A meeting description can become an event card instead. The README describes an interface that chooses an appropriate widget while you type, using a keyword classifier by default or TypeSafe's hosted Jev model when configured. Dates, amounts, conversions, and arithmetic come from deterministic parsers. That division makes this worth examining if you're building a quick-capture interface where choosing a form is the tedious part.

Our lab counted 126 files and about 7,879 lines of source in a 13.1 MB checkout. The interesting code is accessible: card registration has a designated extension point, each card type has a parser, and decision logic lives separately from rendering. You can borrow that organization without adopting every widget. The existing set covers small everyday tasks, including timers and expense entries, but the repository's appeal is the interaction pattern more than a complete personal-organizer platform.

What happened when we ran it

Our sandbox installed Shapeshift commit 5e24166 in 12 seconds, adding 947 packages and occupying 765 MB. The build passed in 24 seconds, and Bun passed all 172 tests in 2 seconds. We used the lab-node:22 image in a fresh unprivileged Debian container on October 9, 2026, with 3 CPUs, 8 GB of RAM, and no secrets. Nothing in that measurement reports an install, build, or test failure.

The 947-package dependency tree is substantial for a single-input app. Our scan found no CI workflow files, no Dockerfile, and no tests directory under its directory-name check. That last finding doesn't erase the 172 passing tests: the current source tree has files under src/lib/__tests__/. The supplied lab results contain no vulnerability audit or browser performance measurement. A fast test command doesn't establish how smoothly cards change on a phone, or how often the hosted model chooses correctly.

Offline classification works without a TypeSafe account

The quick start requires Bun and starts a Next.js development server. You can use the keyword classifier without a hosted account. To enable Jev, copy the environment template, supply TYPESAFE_API_KEY, and restart the server. The key is read by server code behind /api/intent, rather than exposed to the browser. The client implementation also lets configuration force offline mode even when a key is present.

Our 172-test result came from a container without secrets, so it supplies no paid-model accuracy comparison. Hosted classification sends your input to TypeSafe, and the server route logs a shortened input alongside classification information. A server-side key protects the credential, while typed content has its own privacy implications. For personal or company notes, decide whether hosted classification and those logs are acceptable. Keeping the documented offline path is the simpler choice when that answer is uncertain.

Confidence rules reduce card switching while you type

The README describes a state machine that resists immediate changes when the classifier changes its mind. A competing card generally needs repeated wins, with an exception for a sufficiently confident result. Badges also use different activation and deactivation thresholds. That addresses a concrete interface problem: a useful text input becomes difficult to use if every added word rearranges the controls. The source keeps those decisions outside individual card components, which makes changes easier to reason about.

The 24-second build proves that the measured snapshot compiles, rather than proving that every inferred card matches your intent. The interface provides alternatives through suggestion chips and a slash-triggered card palette. That escape route matters when a keyword is ambiguous or the hosted API falls back to the offline classifier. Keep explicit selection visible if you adapt this into your own product. A user should be able to correct a meeting mistaken for a reminder without rewriting the sentence until the classifier cooperates.

Saved cards stay in browser storage

The README says completed cards live in localStorage. The saved-items implementation handles changes across browser tabs, validates stored entries, and retains an in-memory list when a storage write fails. Those are useful safeguards for a local scratchpad. They aren't cross-device synchronization or a backup. Clearing site storage removes that persistence, and a blocked or full storage area can leave new entries available only for the session.

The 765 MB installed environment supports a browser-local utility, so I'd weigh that operating footprint against what you want to keep. Disposable lists and quick calculations fit. A sole record of appointments or important expenses deserves stronger persistence. An open currency-conversion proposal also remains a proposal, and model-server configuration is in an open PR. Choose from the shipped card registry rather than treating contributor branches as available features.

Parser behavior deserves checking beyond the green suite

A closed, unmerged conversion PR reports that incompatible source and target units fall back to a default conversion. The current parser supports that concern: after a failed full conversion, it tries the partial-input path and selects a default target. We didn't reproduce the interaction in a browser. For a UI intended to compute values, rejecting an incompatible request is a better product choice than returning a plausible answer to a different question.

All 172 tests passed, yet that source-level concern remains relevant to adoption. GitHub recorded a September 23, 2026 push and 5 open issues and PRs, with later discussion and proposals into October. There was no latest release. The history is short, with activity beyond the last push, rather than evidence of abandonment. Use cmdk when explicit command selection is enough, or Super Productivity when task management is the actual requirement. If you adopt Shapeshift's changing input, make incompatible requests visibly fail before letting users trust the numbers.

Alternatives

ProjectWhat it isPick it when
cmdkA React command menu that filters explicitly listed choices.pick this instead when users should select a known action instead of having intent inferred.
Super Productivity gh↗A task manager with timeboxing and time tracking.pick this instead when organizing ongoing work is more important than adapting a single text input.

What people are saying

  1. [velocity-scout] anishfn/shapeshift

Sources

  1. Shapeshift README
  2. Browser-local persistence
  3. Classification route
  4. Conversion parser
  5. Unmerged incompatible-unit fix
  6. Currency proposal
  7. Custom model endpoint proposal

More web reviews

dioramas · elpis · deepseek-whale-girl · floorplan-3d · taro · driver.js · the whole board →