BLOG CONTACT

Developing Xcode apps in Zed: Make your life easier with xcede's profile switcher

2026-05-25

Following on from Build, run and debug iOS and Mac apps in Zed instead of Xcode, here's something to make your workflow easier – or even easier than ever, as a certain fruit company might put it.

Build settings like target device live in your project's xcede config file, but it's a bit inconvenient to have to edit the file every time you want to build and run on a different device.

With xcede's profiles and the new profile switcher, you can switch target devices in a couple of keystrokes.

Profiles

Profiles are named groups of settings – you're probably familiar with the concept. They're handy in xcede because to switch from say a real device to a simulator, you have to change multiple settings: platform and device.

Profiles are best explained with an example:

activeProfile: iPhone

profiles:
    Mac:
        platform: mac
    iPhone:
        platform: device
        device: "Tarquin's iPhone 19"
    ProMax Sim:
        platform: sim
        device: iPhone 17 Pro Max
    iOS 18 Sim:
        platform: sim
        device: iPhone 17 iOS 18.3

And you may have other uses for groups of settings.

💡 Profiles like this might of course be useful across multiple projects. Remember you can put global settings in $HOME/.xcede.yml.

So now you can target a different device by changing just one line in a file, but we can do even better with some UI. Zed extensions aren't able to have UI, so instead we have:

The Profile Switcher

xcede switcher is a little interactive terminal menu for selecting a profile. It looks like this:


 Mac   🟢 iPhone      ProMax Sim      iOS 18 Sim

 

🔧 You need to tell it which profiles to display:

switcherprofiles: [Mac, iPhone, ProMax Sim, iOS 18 Sim]

There are other options, including vertical display. See xcede help for details.

Next, define a Zed task for it:

{
    "label": "Switch profile",
    "command": "xcede switcher",
    "reveal": "always",
    "hide": "on_success",
    // I like this because otherwise the bottom panel is left open,
    // but do whatever suits you:
    "reveal_target": "center",
},

And assign a key binding:

"cmd-alt-p": ["task::Spawn", { "task_name": "Switch profile" }],

And there you have it – a hotkey that lets you switch devices in a flash. It's also handy if you, like me, keep forgetting which device is currently selected. Or, with the --keeprunning option, you could even turn it into a permanent UI element.

The profile switcher is a new feature, so don't forget to brew upgrade xcede.

Enjoy!


The xcede Codeberg repo

@lxmn@mastodon.social