Cursor dumps Solid, birthday ruined
This title could be clearer and more informative.Try out Clickbait Shieldfor free (5 uses left this month).
Cursor has migrated its editor codebase off Solid.js and onto React, according to Cursor engineer and former React Core Team member Lauren Tan, who cited signals-based performance footguns but mainly noted that coding agents write more predictable React code in complex codebases. This news landed the same week Solid.js shipped its Solid 2.0 RC, the biggest rework in the framework's history, adding first-class async support (Promises/async iterators in createMemo), a replacement for Suspense called Loading plus isPending() for background refresh tracking, and new mutation primitives like action() and createOptimisticStore. The roundup also covers a grab-bag of other links: Lovable's migration from Next.js to TanStack Start, an investigation into LLM token brokers reselling discounted tokens, a CSS paint-order trick, a CSS-based email exploit writeup, React Native OTA update best practices from Expo, pnpm 12 RC rewritten in Rust, a new CSS Custom Highlights API-based syntax highlighter, Convex's $57m Series B raise, Yelp's Flow-to-TypeScript monorepo migration, Vitest 5's default clearMocks change, and Shopify's 'gisting' technique for compressing LLM context.
Table of contents
The Main ThingOur Friends (With Benefits)Spot the BugCool BitsSpot the Bug: SolutionQuestions this post answers
Why did Cursor migrate its codebase from Solid.js to React?
Cursor engineer Lauren Tan, a former React Core Team member, confirmed the migration and cited signals-based performance footguns in Solid as one reason, but the main driver was that AI coding agents are better and more predictable at writing React code, especially in complex codebases. The move happened the same week Solid shipped its 2.0 release candidate. Developers weighing framework choices around AI-agent compatibility can follow this kind of tradeoff on daily.dev.
What are the biggest new features in Solid 2.0?
Solid 2.0 RC makes async first-class, letting computations return Promises or async iterators that the reactive graph automatically suspends and resumes, including passing a Promise directly into createMemo. It replaces Suspense with a Loading component that only covers first render plus an isPending() function for tracking background refreshes, and adds mutation primitives like action() and createOptimisticStore for optimistic updates. Teams evaluating a Solid 2.0 upgrade can track framework release details like this on daily.dev.
What changed in Vitest 5?
Vitest 5 enables clearMocks by default, automatically clearing mock call history between tests without needing to configure it manually, along with a handful of other developer-experience improvements. This is a notable default-behavior change for teams relying on Vitest for JavaScript and TypeScript testing. Keep pace with testing framework defaults like this Vitest 5 change through daily.dev.