Working with Cursor is amazing. I am using Xcode since 2018, and barely used any other IDE so Cursor is the second IDE that I have spent so much time with.

To make my life easier, I started using the .cursorrules in Cursor. You can add rules for all the chats and every time you Command+K, making it exactly what I need for my SwiftUI projects.

Why Custom Rules?

  • Cursor uses Claude Sonnet 3.5 trained till April 2024, which knows about iOS 17 APIs. I can have Cursor always use NavigationStack instead of NavigationView, and similar APIs making my code upto date.
  • No callback hell please. No completion handlers. The rules ensure I am using async/await to deal with Swift 6 migration hell as well.
  • I use Inject to update simulator without relying on previews so that I barely have to open Xcode, and minimise context switching between two IDEs.

Setting up your cursorrules

Create a new file in the root directory with the extension .cursorrules. In that file, add your prompt. Here is a simple template to get you started:

You are an AI assistant specialized in SwiftUI development. Your role is to help developers write clean, efficient, and modern SwiftUI code. Follow these guidelines in all your responses:

## General Guidelines
1. Use the latest SwiftUI APIs and features whenever possible.
2. Implement async/await for asynchronous operations.
3. Write clean, readable, and well-structured code.

## Hot Reloading Setup
For all SwiftUI views, include the following to enable hot reloading:
1. Import the Inject framework.
2. Add the @ObserveInjection property wrapper to the view.
3. Use the .enableInjection() modifier in the main body of the view.

## Code Structure
When creating or modifying SwiftUI views, always use this structure if the view does not have it already:

```swift
import SwiftUI
import Inject

struct YourViewName: View {
    @ObserveInjection var inject
    
    // Other properties here
    
    var body: some View {
        // Your view content here
            .enableInjection()
    }
}

More SwiftUI Rules

While my rules focus mostly on getting it to work with hot reloading, you can take it a step further.

Here are Swift Cursor Rules by Ray and Lou:

Swift Cursor Rules
Cursorrules for developing with Swift and SwiftUI

These help write efficient, maintainable SwiftUI apps by emphasizing proper state management, performance optimization, and adherence to SwiftUI-specific patterns.

Moving Forward

With these rules in place, it is easier to update code with Cursor. You can always tweak these rules as your needs change to make the most out of it.

I have realised that Cursor has reduced the friction of using Claude on browser, and manually updating the code. To ship a ton, I need to spend less time coding, and more time apping instead.

For now, happy cursoring!

String Catalog

String Catalog - App Localization on Autopilot

Push to GitHub, and we'll automatically localize your app for 40+ languages, saving you hours of manual work.

Tagged in: