Menu
Menu
Menu
The AI Code Editor
The AI Code Editor
The AI Code Editor
Download for Mac
Watch Demo
Download for Mac
Watch Demo
framer
cursor.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { motion } from "framer-motion" type ButtonProps = { onClick?: () => void children: React.ReactNode disabled?: boolean className?: string } export function Button({ onClick, children, disabled = false, className = "" }: ButtonProps) { return ( <motion.button whileHover={{ scale: 1.05 }} whileTap={{ scale: 0.95 }} transition={{ type: "spring", stiffness: 400, damping: 17 }} onClick={onClick} disabled={disabled} className={cn( "rounded-md bg-primary px-4 py-2 font-medium text-black shadow-sm", "hover:bg-primary/90 disabled:cursor-not-allowed disabled:opacity-50", className )} > {children} </motion.button> ) }
chat
composer
cursor.tsx
Current File
Could you make it easier to switch certificates in the transport listeners?
I'll help modify the code to make certificate switching more flexible. The main changes will be to enhance the lsAccept trait and modify how certificates
are handled in the TlsSettings. Here are the key changes:
cursor.tsx
Ask
Copy
Apply
<motion.button whileHover={{ scale: 1.05 }} whileTap={{ scale: 0.95 }} transition={{ type: "spring", stiffness: 400, damping: 17 }} onClick={onClick} > {children} </motion.button>
cursor.tsx
Current File
Ask follow up
gpt-4o
⮐
chat
⌘
⮐
codebase
framer
cursor.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { motion } from "framer-motion" type ButtonProps = { onClick?: () => void children: React.ReactNode disabled?: boolean className?: string } export function Button({ onClick, children, disabled = false, className = "" }: ButtonProps) { return ( <motion.button whileHover={{ scale: 1.05 }} whileTap={{ scale: 0.95 }} transition={{ type: "spring", stiffness: 400, damping: 17 }} onClick={onClick} disabled={disabled} className={cn( "rounded-md bg-primary px-4 py-2 font-medium text-black shadow-sm", "hover:bg-primary/90 disabled:cursor-not-allowed disabled:opacity-50", className )} > {children} </motion.button> ) }
chat
composer
cursor.tsx
Current File
Could you make it easier to switch certificates in the transport listeners?
I'll help modify the code to make certificate switching more flexible. The main changes will be to enhance the lsAccept trait and modify how certificates
are handled in the TlsSettings. Here are the key changes:
cursor.tsx
Ask
Copy
Apply
<motion.button whileHover={{ scale: 1.05 }} whileTap={{ scale: 0.95 }} transition={{ type: "spring", stiffness: 400, damping: 17 }} onClick={onClick} > {children} </motion.button>
cursor.tsx
Current File
Ask follow up
gpt-4o
⮐
chat
⌘
⮐
codebase
framer
cursor.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { motion } from "framer-motion" type ButtonProps = { onClick?: () => void children: React.ReactNode disabled?: boolean className?: string } export function Button({ onClick, children, disabled = false, className = "" }: ButtonProps) { return ( <motion.button whileHover={{ scale: 1.05 }} whileTap={{ scale: 0.95 }} transition={{ type: "spring", stiffness: 400, damping: 17 }} onClick={onClick} disabled={disabled} className={cn( "rounded-md bg-primary px-4 py-2 font-medium text-black shadow-sm", "hover:bg-primary/90 disabled:cursor-not-allowed disabled:opacity-50", className )} > {children} </motion.button> ) }
chat
composer
cursor.tsx
Current File
Could you make it easier to switch certificates in the transport listeners?
I'll help modify the code to make certificate switching more flexible. The main changes will be to enhance the lsAccept trait and modify how certificates
are handled in the TlsSettings. Here are the key changes:
cursor.tsx
Ask
Copy
Apply
<motion.button whileHover={{ scale: 1.05 }} whileTap={{ scale: 0.95 }} transition={{ type: "spring", stiffness: 400, damping: 17 }} onClick={onClick} > {children} </motion.button>
cursor.tsx
Current File
Ask follow up
gpt-4o
⮐
chat
⌘
⮐
codebase
Download for Mac
Watch Demo
Download for Mac
Watch Demo
Trusted by engineers at
Tab, tab, tab
Cursor lets you breeze through changes by predicting your next edit.
Cursor lets you breeze through changes by predicting your next edit.
Tab, tab, tab
Cursor lets you breeze through changes by predicting your next edit.
Tab, tab, tab
Cursor lets you breeze through changes by predicting your next edit.
todo.tsx
import React, { useState } from "react" const TodoComponent: React.FC = () => { const [todos, setTodos] = useState<string[]>([]) const [input, setInput] = useState<string>("") return ( <> <button onClick={() => setTodos([...todos, input])}>Add</button> <input type="text" value={input} onChange={(e) => setInput(e.target.value)} /> <ul> {todos.map((todo, index) => ( <li key={index}>{todo}</li> ))} </ul> </> ) } export default TodoComponent
todo.tsx
import React, { useState } from "react" const TodoComponent: React.FC = () => { const [todos, setTodos] = useState<string[]>([]) const [input, setInput] = useState<string>("") return ( <> <button onClick={() => setTodos([...todos, input])}>Add</button> <input type="text" value={input} onChange={(e) => setInput(e.target.value)} /> <ul> {todos.map((todo, index) => ( <li key={index}>{todo}</li> ))} </ul> </> ) } export default TodoComponent
todo.tsx
import React, { useState } from "react" const TodoComponent: React.FC = () => { const [todos, setTodos] = useState<string[]>([]) const [input, setInput] = useState<string>("") return ( <> <button onClick={() => setTodos([...todos, input])}>Add</button> <input type="text" value={input} onChange={(e) => setInput(e.target.value)} /> <ul> {todos.map((todo, index) => ( <li key={index}>{todo}</li> ))} </ul> </> ) } export default TodoComponent
todo.tsx
import React, { useState } from "react" const TodoComponent: React.FC = () => { const [todos, setTodos] = useState<string[]>([]) const [input, setInput] = useState<string>("") return ( <> <button onClick={() => setTodos([...todos, input])}>Add</button> <input type="text" value={input} onChange={(e) => setInput(e.target.value)} /> <ul> {todos.map((todo, index) => ( <li key={index}>{todo}</li> ))} </ul> </> ) } export default TodoComponent
todo.tsx
import React, { useState } from "react" const TodoComponent: React.FC = () => { const [todos, setTodos] = useState<string[]>([]) const [input, setInput] = useState<string>("") return ( <> <button onClick={() => setTodos([...todos, input])}>Add</button> <input type="text" value={input} onChange={(e) => setInput(e.target.value)} /> <ul> {todos.map((todo, index) => ( <li key={index}>{todo}</li> ))} </ul> </> ) } export default TodoComponent
chat
composer
How could I make it easier to switch certificates in the transport listeners?
cursor.tsx
Current File
I'll help modify the code to make certificate switching more flexible. The main changes will be to enhance the lsAccept trait and modify how certificates
are handled in the settings. Here are the key changes:
cursor.tsx
Ask
Copy
Apply
<motion.button whileHover={{ scale: 1.05 }} whileTap={{ scale: 0.95 }} transition={{ type: "spring", stiffness: 400, damping: 17 }} onClick={onClick} > {children} </motion.button>
cursor.tsx
Current File
Ask follow up
gpt-4o
⮐
chat
⌘
⮐
codebase
todo.tsx
import React, { useState } from "react" const TodoComponent: React.FC = () => { const [todos, setTodos] = useState<string[]>([]) const [input, setInput] = useState<string>("") return ( <> <button onClick={() => setTodos([...todos, input])}>Add</button> <input type="text" value={input} onChange={(e) => setInput(e.target.value)} /> <ul> {todos.map((todo, index) => ( <li key={index}>{todo}</li> ))} </ul> </> ) } export default TodoComponent
chat
composer
How could I make it easier to switch certificates in the transport listeners?
cursor.tsx
Current File
I'll help modify the code to make certificate switching more flexible. The main changes will be to enhance the lsAccept trait and modify how certificates
are handled in the settings. Here are the key changes:
cursor.tsx
Ask
Copy
Apply
<motion.button whileHover={{ scale: 1.05 }} whileTap={{ scale: 0.95 }} transition={{ type: "spring", stiffness: 400, damping: 17 }} onClick={onClick} > {children} </motion.button>
cursor.tsx
Current File
Ask follow up
gpt-4o
⮐
chat
⌘
⮐
codebase
todo.tsx
import React, { useState } from "react" const TodoComponent: React.FC = () => { const [todos, setTodos] = useState<string[]>([]) const [input, setInput] = useState<string>("") return ( <> <button onClick={() => setTodos([...todos, input])}>Add</button> <input type="text" value={input} onChange={(e) => setInput(e.target.value)} /> <ul> {todos.map((todo, index) => ( <li key={index}>{todo}</li> ))} </ul> </> ) } export default TodoComponent
chat
composer
How could I make it easier to switch certificates in the transport listeners?
cursor.tsx
Current File
I'll help modify the code to make certificate switching more flexible. The main changes will be to enhance the lsAccept trait and modify how certificates
are handled in the settings. Here are the key changes:
cursor.tsx
Ask
Copy
Apply
<motion.button whileHover={{ scale: 1.05 }} whileTap={{ scale: 0.95 }} transition={{ type: "spring", stiffness: 400, damping: 17 }} onClick={onClick} > {children} </motion.button>
cursor.tsx
Current File
Ask follow up
gpt-4o
⮐
chat
⌘
⮐
codebase
todo.tsx
import React, { useState } from "react" const TodoComponent: React.FC = () => { const [todos, setTodos] = useState<string[]>([]) const [input, setInput] = useState<string>("") return ( <> <button onClick={() => setTodos([...todos, input])}>Add</button> <input type="text" value={input} onChange={(e) => setInput(e.target.value)} /> <ul> {todos.map((todo, index) => ( <li key={index}>{todo}</li> ))} </ul> </> ) } export default TodoComponent
chat
composer
How could I make it easier to switch certificates in the transport listeners?
cursor.tsx
Current File
I'll help modify the code to make certificate switching more flexible. The main changes will be to enhance the lsAccept trait and modify how certificates
are handled in the settings. Here are the key changes:
cursor.tsx
Ask
Copy
Apply
<motion.button whileHover={{ scale: 1.05 }} whileTap={{ scale: 0.95 }} transition={{ type: "spring", stiffness: 400, damping: 17 }} onClick={onClick} > {children} </motion.button>
cursor.tsx
Current File
Ask follow up
gpt-4o
⮐
chat
⌘
⮐
codebase
Apply instantly
Get answers from your codebase or refer to files or docs. Use the model’s code in one click.
Get answers from your codebase or refer to files or docs. Use the model’s code in one click.
Apply instantly
Get answers from your codebase or refer to files or docs. Use the model’s code in one click.
Apply instantly
Get answers from your codebase or refer to files or docs. Use the model’s code in one click.
Codebase knowledge
Cursor lets you write code using simple instructions. Update entire classes or functions with a simple prompt.
Cursor lets you write code using simple instructions. Update entire classes or functions with a simple prompt.
Codebase knowledge
Cursor lets you write code using simple instructions. Update entire classes or functions with a simple prompt.
Codebase knowledge
Cursor lets you write code using simple instructions. Update entire classes or functions with a simple prompt.
todo.tsx
import React, { useState } from "react" const TodoComponent: React.FC = () => { const [todos, setTodos] = useState<string[]>([]) const [input, setInput] = useState<string>("") return ( <> <button onClick={() => setTodos([...todos, input])}>Add</button> <input type="text" value={input} onChange={(e) => setInput(e.target.value)} /> <ul> {todos.map((todo, index) => ( <li key={index}>{todo}</li> ))} </ul> </> ) } export default TodoComponent
Parellize this because the api is slow
Submit Edit
gpt-4o
todo.tsx
import React, { useState } from "react" const TodoComponent: React.FC = () => { const [todos, setTodos] = useState<string[]>([]) const [input, setInput] = useState<string>("") return ( <> <button onClick={() => setTodos([...todos, input])}>Add</button> <input type="text" value={input} onChange={(e) => setInput(e.target.value)} /> <ul> {todos.map((todo, index) => ( <li key={index}>{todo}</li> ))} </ul> </> ) } export default TodoComponent
Parellize this because the api is slow
Submit Edit
gpt-4o
todo.tsx
import React, { useState } from "react" const TodoComponent: React.FC = () => { const [todos, setTodos] = useState<string[]>([]) const [input, setInput] = useState<string>("") return ( <> <button onClick={() => setTodos([...todos, input])}>Add</button> <input type="text" value={input} onChange={(e) => setInput(e.target.value)} /> <ul> {todos.map((todo, index) => ( <li key={index}>{todo}</li> ))} </ul> </> ) } export default TodoComponent
Parellize this because the api is slow
Submit Edit
gpt-4o
todo.tsx
import React, { useState } from "react" const TodoComponent: React.FC = () => { const [todos, setTodos] = useState<string[]>([]) const [input, setInput] = useState<string>("") return ( <> <button onClick={() => setTodos([...todos, input])}>Add</button> <input type="text" value={input} onChange={(e) => setInput(e.target.value)} /> <ul> {todos.map((todo, index) => ( <li key={index}>{todo}</li> ))} </ul> </> ) } export default TodoComponent
Parellize this because the api is slow
Submit Edit
gpt-4o
Build software faster
Build software faster
Intelligent, fast, and familiar, Cursor is the best way to code with AI.
Frontier Intelligence
Powered by a mix of purpose- built and frontier models, Cursor is smart and fast.
Frontier Intelligence
Powered by a mix of purpose- built and frontier models, Cursor is smart and fast.
Frontier Intelligence
Powered by a mix of purpose- built and frontier models, Cursor is smart and fast.
Frontier Intelligence
Powered by a mix of purpose- built and frontier models, Cursor is smart and fast.
Private and Secure
With Privacy Mode, your code isonly stored locally. Cursor isSOC 2 certified.
Private and Secure
With Privacy Mode, your code isonly stored locally. Cursor isSOC 2 certified.
Private and Secure
With Privacy Mode, your code isonly stored locally. Cursor isSOC 2 certified.
Private and Secure
With Privacy Mode, your code isonly stored locally. Cursor isSOC 2 certified.
Feels Familiar
Import all your extensions, themes, and keybindings in one click.
Feels Familiar
Import all your extensions, themes, and keybindings in one click.
Feels Familiar
Import all your extensions, themes, and keybindings in one click.
Feels Familiar
Import all your extensions, themes, and keybindings in one click.
Loved by developers
Loved by developers
Developers all around the world reach for Cursor by choise.

Alex McCaw
I really like how Cursor suggests edits to existing code. It noticed I was inconsistent with my markup and popped up this suggestion that matched my other items!

Alex McCaw
I really like how Cursor suggests edits to existing code. It noticed I was inconsistent with my markup and popped up this suggestion that matched my other items!

Alex McCaw
I really like how Cursor suggests edits to existing code. It noticed I was inconsistent with my markup and popped up this suggestion that matched my other items!

Alex McCaw
I really like how Cursor suggests edits to existing code. It noticed I was inconsistent with my markup and popped up this suggestion that matched my other items!

Sam Whitmore
started using Cursor yesterday & i'm blown away. it's how Copilot should feel. i'm completely off VSCode now.

Sam Whitmore
started using Cursor yesterday & i'm blown away. it's how Copilot should feel. i'm completely off VSCode now.

Sam Whitmore
started using Cursor yesterday & i'm blown away. it's how Copilot should feel. i'm completely off VSCode now.

Sam Whitmore
started using Cursor yesterday & i'm blown away. it's how Copilot should feel. i'm completely off VSCode now.

Wes Bos
I really like how Cursor suggests edits to existing code. It noticed I was inconsistent with my markup and popped up this suggestion that matched my other items!

Wes Bos
I really like how Cursor suggests edits to existing code. It noticed I was inconsistent with my markup and popped up this suggestion that matched my other items!

Wes Bos
I really like how Cursor suggests edits to existing code. It noticed I was inconsistent with my markup and popped up this suggestion that matched my other items!

Wes Bos
I really like how Cursor suggests edits to existing code. It noticed I was inconsistent with my markup and popped up this suggestion that matched my other items!

Johannes Schickling
After many recommendations, I finally switched from VSC to Cursor and ... wow! It's absolutely incredible. If you like Copilot (or if you don't), you'll be blown away by Cursor. There is no going back. 🤯

Johannes Schickling
After many recommendations, I finally switched from VSC to Cursor and ... wow! It's absolutely incredible. If you like Copilot (or if you don't), you'll be blown away by Cursor. There is no going back. 🤯

Johannes Schickling
After many recommendations, I finally switched from VSC to Cursor and ... wow! It's absolutely incredible. If you like Copilot (or if you don't), you'll be blown away by Cursor. There is no going back. 🤯

Johannes Schickling
After many recommendations, I finally switched from VSC to Cursor and ... wow! It's absolutely incredible. If you like Copilot (or if you don't), you'll be blown away by Cursor. There is no going back. 🤯

Marc Köhlbrugge
Cursor's new auto-complete is insane You no longer need to prompt it. It predicts what code you want based on what you're doing. Accept by hitting tab In this video I change the CSS class of one link. I then simply keep hitting tab to make the same change to all other links

Marc Köhlbrugge
Cursor's new auto-complete is insane You no longer need to prompt it. It predicts what code you want based on what you're doing. Accept by hitting tab In this video I change the CSS class of one link. I then simply keep hitting tab to make the same change to all other links

Marc Köhlbrugge
Cursor's new auto-complete is insane You no longer need to prompt it. It predicts what code you want based on what you're doing. Accept by hitting tab In this video I change the CSS class of one link. I then simply keep hitting tab to make the same change to all other links

Marc Köhlbrugge
Cursor's new auto-complete is insane You no longer need to prompt it. It predicts what code you want based on what you're doing. Accept by hitting tab In this video I change the CSS class of one link. I then simply keep hitting tab to make the same change to all other links

shadcn
The most useful AI tool that I currently pay for is, hands down, is Cursor It's fast, autocompletes when and where you need it to, handles brackets properly, sensible keyboard shortcuts, bring- your-own-model...everything is well put together.

shadcn
The most useful AI tool that I currently pay for is, hands down, is Cursor It's fast, autocompletes when and where you need it to, handles brackets properly, sensible keyboard shortcuts, bring- your-own-model...everything is well put together.

shadcn
The most useful AI tool that I currently pay for is, hands down, is Cursor It's fast, autocompletes when and where you need it to, handles brackets properly, sensible keyboard shortcuts, bring- your-own-model...everything is well put together.

shadcn
The most useful AI tool that I currently pay for is, hands down, is Cursor It's fast, autocompletes when and where you need it to, handles brackets properly, sensible keyboard shortcuts, bring- your-own-model...everything is well put together.
We write weekly
We write weekly
Compiled notes from the team
Blog
Supermaven Joins Cursor
Shadow Workspace
We raised $60m
Our Problems
More Problems
More Problems
Supermaven Joins Cursor
We're teaming up to build the next phase of AI coding.

Posted By Michael 2 days ago
I’m excited to announce that Supermaven is joining Cursor! Supermaven is a fast, context-aware copilot.
Its creator, Jacob Jackson, kickstarted the modern wave of AI coding tools by inventing Tabnine in 2019 and through pioneering work at OpenAI.
Why join forces? We have a lot to do, and it seems like we can build a more useful product, faster, together. Each of us believes that AI makes possible a much better way to build software. And that purpose-built models, a tailored editing experience, and lots of clever ideas are necessary to get there.
What should we expect going forward? Lots of product improvements! For instance, we hope the not-too-distant future will bring a new version of our Tab model that’s fast, context-aware, and highly intelligent, especially at sequences of long changes (“tab, tab, tab”).
Will the plugin remain up? Yes! We’re happy to report that the Supermaven plugin will remain maintained, though Cursor will be the core focus. This is roughly the same as Supermaven’s previous plan: the team had shifted focus to an editor, because extension APIs were blocking the next useful things that they wanted to build.
Welcome Jacob and the Supermaven team! Together, we hope to build the best tool for professional programmers and invent a faster, more delightful way to build software. Onwards!
Blog
Supermaven Joins Cursor
Shadow Workspace
We raised $60m
Our Problems
More Problems
More Problems
Supermaven Joins Cursor
We're teaming up to build the next phase of AI coding.

Posted By Michael 2 days ago
I’m excited to announce that Supermaven is joining Cursor! Supermaven is a fast, context-aware copilot.
Its creator, Jacob Jackson, kickstarted the modern wave of AI coding tools by inventing Tabnine in 2019 and through pioneering work at OpenAI.
Why join forces? We have a lot to do, and it seems like we can build a more useful product, faster, together. Each of us believes that AI makes possible a much better way to build software. And that purpose-built models, a tailored editing experience, and lots of clever ideas are necessary to get there.
What should we expect going forward? Lots of product improvements! For instance, we hope the not-too-distant future will bring a new version of our Tab model that’s fast, context-aware, and highly intelligent, especially at sequences of long changes (“tab, tab, tab”).
Will the plugin remain up? Yes! We’re happy to report that the Supermaven plugin will remain maintained, though Cursor will be the core focus. This is roughly the same as Supermaven’s previous plan: the team had shifted focus to an editor, because extension APIs were blocking the next useful things that they wanted to build.
Welcome Jacob and the Supermaven team! Together, we hope to build the best tool for professional programmers and invent a faster, more delightful way to build software. Onwards!
Blog
Supermaven Joins Cursor
Shadow Workspace
We raised $60m
Our Problems
More Problems
More Problems
Supermaven Joins Cursor
We're teaming up to build the next phase of AI coding.

Posted By Michael 2 days ago
I’m excited to announce that Supermaven is joining Cursor! Supermaven is a fast, context-aware copilot.
Its creator, Jacob Jackson, kickstarted the modern wave of AI coding tools by inventing Tabnine in 2019 and through pioneering work at OpenAI.
Why join forces? We have a lot to do, and it seems like we can build a more useful product, faster, together. Each of us believes that AI makes possible a much better way to build software. And that purpose-built models, a tailored editing experience, and lots of clever ideas are necessary to get there.
What should we expect going forward? Lots of product improvements! For instance, we hope the not-too-distant future will bring a new version of our Tab model that’s fast, context-aware, and highly intelligent, especially at sequences of long changes (“tab, tab, tab”).
Will the plugin remain up? Yes! We’re happy to report that the Supermaven plugin will remain maintained, though Cursor will be the core focus. This is roughly the same as Supermaven’s previous plan: the team had shifted focus to an editor, because extension APIs were blocking the next useful things that they wanted to build.
Welcome Jacob and the Supermaven team! Together, we hope to build the best tool for professional programmers and invent a faster, more delightful way to build software. Onwards!
Blog
Supermaven Joins Cursor
Shadow Workspace
We raised $60m
Our Problems
More Problems
More Problems
Supermaven Joins Cursor
We're teaming up to build the next phase of AI coding.

Posted By Michael 2 days ago
I’m excited to announce that Supermaven is joining Cursor! Supermaven is a fast, context-aware copilot.
Its creator, Jacob Jackson, kickstarted the modern wave of AI coding tools by inventing Tabnine in 2019 and through pioneering work at OpenAI.
Why join forces? We have a lot to do, and it seems like we can build a more useful product, faster, together. Each of us believes that AI makes possible a much better way to build software. And that purpose-built models, a tailored editing experience, and lots of clever ideas are necessary to get there.
What should we expect going forward? Lots of product improvements! For instance, we hope the not-too-distant future will bring a new version of our Tab model that’s fast, context-aware, and highly intelligent, especially at sequences of long changes (“tab, tab, tab”).
Will the plugin remain up? Yes! We’re happy to report that the Supermaven plugin will remain maintained, though Cursor will be the core focus. This is roughly the same as Supermaven’s previous plan: the team had shifted focus to an editor, because extension APIs were blocking the next useful things that they wanted to build.
Welcome Jacob and the Supermaven team! Together, we hope to build the best tool for professional programmers and invent a faster, more delightful way to build software. Onwards!
Try Cursor Now
Try Cursor Now
Try Cursor Now
Download for Free
Download for Free
Download for Free
Download for Free
by Anysphere
Pricing
Features
Forum
Docs
Career
Blog
Company
Privacy
Security
Terms
Changelog
GitHub
SOC 2 Certified