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!
@lxmn@mastodon.social