You’ve probably heard the buzz phrase “vibe coding,” but do you know what it means — or whether you should be jumping on the bandwagon? In this article, I’ll introduce you to the pros and cons of this way of developing code and talk about how you can get started with it.

At MartianCraft, we focus on building iOS apps in Xcode, so the models and tools I’ll discuss will be specific to that — but the overall ideas apply to any kind of development.

So, what is vibe coding?

The term “vibe coding” was coined in February 2025 when Andrej Karpathy posted about using AI tools like Cursor and “fully giving into the vibes” — forgetting code even exists while developing through conversation with an LLM.

The idea of vibe coding grew and gained momentum throughout 2025 as LLMs improved, making it easier for people to use them to create code. But the development community continues to have mixed feelings about vibe coding, with some viewing it as a tool that improves productivity and others believing that it makes people worse developers.

Before AI, developers spent a lot of time and energy not only writing code (including boilerplate code) but also researching, viewing code from other projects, correcting false starts, and so on. The promise of AI is that you don’t need to do that anymore: You can just ask the model to generate the code you’re looking for, whether it’s boilerplate or, in some cases, a full-blown app. You can also use it as a coding assistant that can debug and answer questions about your code. But does the reality live up to the promise?

At MartianCraft, we consider vibe coding to be one more tool in our toolbox — and as with any tool, it’s important to understand its strengths and limitations. Let’s start with the basics of LLMs.

Large language models

LLMs, or large language models, are a type of AI that can recognize text, images, videos, and more, based on specific training. The most common form of LLM is the one you’ve likely come across that responds to text (and now image) prompts through a chat-based interface, like ChatGPT or Claude.

One of the things that make LLMs so powerful is that they can be trained: You can teach a model to become an expert in a specific area. For example, on OpenAI’s GPT Store you’ll see models that focus on a variety of niches, including one that focuses on SwiftUI.

However, LLMs definitely have some limitations and restrictions. Here are some of their most basic limitations:

So LLMs are very powerful, but you have to watch for hallucinations and outdated information, which they will present with total confidence.

LLMs and coding

For coding, this means you have to be extra careful when you’re dealing with relatively recent APIs. Let’s say you want to integrate Liquid Glass into your SwiftUI app. Liquid Glass was introduced in 2025, so it’s not part of ChatGPT’s knowledge base. If you ask ChatGPT, it will more than likely provide you with code it found on the internet — which might be fine — but its knowledge limit means that it won’t incorporate the best practices in Apple’s developer documentation.

On the other hand, using an LLM to build code — vibe coding — takes advantage of a trained AI’s strengths in pattern matching and consistency. It can be a helpful tool for a variety of development roles.

Designers
Vibe coding can be a great tool for designers who don’t know how to code to start learning, whether they want to expand their skills as a dev team member or to build products that they’ve designed but haven’t found a developer to build. And although designers who do have experience coding are more rare, they can also use vibe coding to their advantage — in fact, they probably have the highest potential of building a successful product through vibe coding. This type of designer understands user experience and user interface design, and they can bring those designs to life via code thanks to AI.

Beginning developers
Vibe coding is a great way to learn how to code. You can ask the model to build a feature and then ask it to break the code down. You can also ask the model questions, like “I want to integrate Core Data into my app, can you lay out the instructions on how to do that?” The model will break down how to add Core Data, including the entities, attributes, and relationships you need. Then, you can ask the model to generate the code to fully integrate Core Data in your app. And if you get stuck, the AI is there to help. This can be a great way for beginning developers to get experience with complex tasks.

By the way, if you’re learning to code you can also copy open source code into an LLM and ask it to explain the code for you. That may not fall under the category of “vibe coding,” since you’re not generating code, but it’s a great way to use the tool to increase your coding knowledge and skills.

Mid- to senior-level developers
If you have some experience with development, you’re in a great position to really put vibe coding to work for you. Experienced devs can use AI to generate template code for specific features that they can then iterate to their liking, so they don’t have to start coding that feature from scratch. They can also use it to help clean up their code, fix bugs, simplify over-complex logic, modernize code (such as converting UIKit code to SwiftUI), build more complex user interfaces, and more.

As a mid- to senior-level developer, you likely spend time waiting for more novice devs to complete redundant or tedious tasks — and then you have to review the code that developer created to make sure it all looks good before you commit the changes to Git. Working with an LLM can allow you to generate and review code in a fraction of the time. And having knowledge and experience means that you can catch errors and steer the LLM to produce results that work for you.

Which brings us to the topic of prompts.

The art of vibe prompting

Prompts are at the core of being an effective vibe coder. A prompt is simply the instruction given to the AI model, but the way it’s phrased determines the quality of the response you get back from the model. Well-structured prompts are detailed enough to guide and give the model a direction. With the right prompt, you can build anything. Let’s look at some examples of stronger and weaker prompts.

Here’s an example of a weak prompt: “Build a to-do list app in SwiftUI.”

This prompt is much too vague and doesn’t give the model any kind of solid direction. It doesn’t define any features or specify any additional tech stacks. There are no UX or UI expectations. A prompt like this can cause the model to make a lot of assumptions, which can lead to results that are not what you had in mind.

A better prompt would look something like this: “Build a production-ready iOS to-do list app using SwiftUI and SwiftData for iOS 17+. App requirements are: the ability to add, delete, and mark a task completed. The app will need to persist data locally using SwiftData. I want the project to follow the MVVM style, and it also must support light and dark appearances. Use a clean, Apple-style UI.”

This prompt provides the model with a clear tech stack, feature scope, UI and UX directions, and information on how to organize the files. It’s much more likely to produce the results you’re looking for, especially with a few rounds of iteration.

While it’s important to give the model enough information to work with, you also need to make sure that the information you provide is clear and actionable. Here’s an example of an overcomplicated prompt:

“Build an iOS to-do list app using SwiftUI or UIKit. I prefer SwiftUI, but if you think UIKit is better, use that. Use MVVM or something similar, but not too rigid. The UI should be minimal and also customizable, modern but timeless, and mainly optimized for power users and beginners. Should also support 15+ but must use the new APIs where possible. Can you include analytics, notifications, background tasks, and any type of accessibility options too? The app also needs to be able to scale to millions of users, but it needs to be simple. Don’t over-engineer it, but make sure it’s production ready.”

A prompt like this is unlikely to produce good results (or maybe any results). There’s no clear direction: The requests are all over the place, and some of them are confusing, like “The UI should be minimal and also customizable.” Customizable how? It would be better to provide an example of how the UI can be customized to help direct the model. Also, asking the model to decide the best approach means that it has to first come up with a solution, and then compare that solution to other solutions to make sure it’s truly the best one. All the while, it has to factor in completing all the tasks in the prompt — it will end up getting overwhelmed, and the response will suffer.

Learning to write prompts with the right balance of detail and conciseness takes a bit of trial and error, but the good news is that you can see the results quickly and adapt your approach until you’re getting the results you’re looking for.

AI models and tools

For those who are ready to start integrating AI into their workflow, what’s the best way to do that?

First, it’s important to understand the difference between AI models and AI tools. Models are the underlying LLMs, such as GPT-5, Claude, and Llama. Each model has unique training data preferences, token limits (more on tokens in a moment), and performance characteristics.

Tools, on the other hand, are applications or platforms — like Cursor, AlexCodes, or Xcode’s predictive code completion — that make these models available for developers to use. Some tools offer access to multiple models: AlexCodes, for example, gives you the freedom to select which model you want to use on the fly. This can be good for when you’re building different types of apps and you want to rely on the strengths of different models for different tasks.

Next, you need to understand the role of tokens for AI users, both as an individual and for enterprises.
A token is basically the unit of thinking for AI. It’s a unit of data — like a word, a piece of punctuation, or even a part of a word — that the model breaks text down into in order to process and generate language. For comparison, you can think of tokens for AI as being like pixels in images or frames in videos. There are two types of tokens: input tokens, which are generated from your prompt and sent to the model, and output tokens, which the model sends back in response to your prompt.

Why does this matter to you as a user? Because, unfortunately, you have to pay for them. Tools offer a certain number of free tokens, but beyond that, any time tokens are being generated, you’re getting charged.

For example, as an individual using OpenAI’s ChatGPT app on the free plan, you are likely to quickly hit your account token limit. At that point, you will have to upgrade your account to use more tokens. But even as a paying user you can still hit token limits, depending on how long the conversation is, how long your prompts are, and the tasks in your prompts. You’ll receive an alert as you get closer to your limit, and in this case it’s suggested that you start a new conversation with the model so the model can continue to perform at its best.

For an enterprise with an AI chat feature in your app, your monthly usage bill is determined by the amount of tokens being generated in your app. You’ll also be charged for all the API calls made. As you can imagine, as your user base scales up, AI can get costly: More users equals more tokens. More tokens equals rising cloud bills, unpredictable costs, and pressure to figure out ways to optimize prompts to reduce cost.

So tokens can be a headache, whether you’re an individual consumer or an enterprise. As a consumer, determining the right plan for you depends on how much you’re going to be using the tool. On the enterprise side, it’s all about monitoring costs and figuring out ways to reduce them.

Below are some comparisons of popular AI models and AI tools you can use with Xcode to build iOS apps.

Comparing popular models

Name Overview API Cost / Tokens Strengths Negatives
GPT-5 (OpenAI) OpenAI’s main large-language model; designed for reasoning, code generation, and multimodal inputs (text + images + code). $1.25 / $10 Great at reasoning, generates clean code, strong multilanguage support, advanced memory features. Higher token cost than peers, occasional over-refactoring, closed-source model with limited visibility into training data.
Claude 3.5 (Sonnet / Opus / Haiku) Anthropic’s family of long-context models; focused on accuracy, alignment, and safety in reasoning. Great for larger scale projects $3 / $15 (Sonnet), $1 / $5 (Haiku) Offers extremely long context; great for big projects, great at generating documentation and explaining code. Occasionally conservative in generation; slower response times on long prompts; may refuse ambiguous instructions.
Gemini 2.5 Pro (Google DeepMind) Google’s multimodal model; optimized for text, code, and image reasoning. $1.25 / $10 (≤200k), $2.50 / $15 (>200k) Fast reasoning and multimodal understanding. Limited transparency around training data. Prompt response not as strong as competitors.
Llama 3.x / Code Llama (Meta) Meta’s open-source family of large language models; tuned for code. Varies by host ($2–$4) Free and customizable. Can be self-hosted and fine-tuned for specific projects. Has a very strong community. Quality depends heavily on fine-tuning; if you’re not good at fine-tuning, quality can be impacted. Very inconsistent working with larger projects.
Mistral (Small / Medium / Large) Lightweight European model; optimized for efficiency and cost. $0.10 / $0.30 (Small 3.x) Very low token pricing. Competitive performance with code generation. Smaller context window vs other competitors.
Cascade (Windsurf) Focused on being a true AI Assistant through code, workflow management, and more. Not token based. Uses subscription. Remembers your flow, recent edits, terminal history, opened files, clipboard activity to create a seamless experience vibe coding. Not a fully autonomous model; requires human review for code reviews and other actions. Performance not as strong as other competitors.
DeepSeek Coder (V2) Chinese-developed model focused on code generation $0.40 / $1.20 Great at debugging and reasoning; competitive performance at lower cost. Some language inconsistencies in English.

Comparing popular AI tools for Xcode

Name Overview Cost / month Strengths Negatives
ChatGPT (macOS app / Xcode 26 integration) OpenAI’s assistant app for macOS with “Work with Apps” and Xcode 26 integration for code edits. $20 Plus; $200 Pro High-quality Swift/SwiftUI generation; can read/edit active file and auto-apply edits. Built into Xcode, can also pass context via the Mac app. Deeper project-wide refactors can still require manual review.
Claude (macOS app / Xcode 26) Anthropic’s Mac app with very large context and strong explanation skills for coding. Allows you to upload Xcode projects for the model to scan and learn to improve code generation. $20 Pro; $100 Max; $200 Max+ Excellent long-context reasoning and code reviews; now usable directly in Xcode 26. Doesn’t offer Mac app integration into Xcode. Deeper project-wide refactors can still require manual review.
AlexCodes Xcode-native tool acquired by OpenAI with file-scoped prompts, backups, and multimodel support. Best tool for vibe coding in Xcode. $30 Pro; $200 Unlimited Deepest “Xcode-first” workflow. Automatic project sync, rollback, codebase reading, and more. Ability to work on multiple files at once. Acquired by OpenAI; future uncertain.
Cursor Code editor with AI built in and the ability to integrate other models, like ChatGPT, Sonnet, etc. $20 / $60 / $200 tiers Excellent inline refactor/explain; big usage tiers. Can’t integrate into Xcode.
Windsurf Offers its own AI model, Cascade, built within the code editor. More like a collaborative agent, requires human review for code updates, changes, and more. Allows you to select other models. $15 Pro; free tier available Cost-effective credits and multimodel access. Can’t integrate into Xcode.
Xcode Predictive Code Completion Apple’s built-in suggestions and completions. Free (included with Xcode) No subscription. Privacy-friendly. Still weaker on large, structured changes.

Final thoughts

Lastly, there are a few important things to keep in mind when you’re vibe coding. They boil down to this: Vibe coding isn’t a substitute for development knowledge.

It’s a great way to learn by seeing code generated for you, but most AI-generated code is outdated. Until AI model imitations truly become limitless, I wouldn’t trust it to build an entire app on its own.

Vibe coding can lead to real issues later down the line for your app, especially around scalability and security. AI-generated code can be more complex than it needs to be, and it can include inefficient logic that can cause bugs, performance problems, or even vulnerability as your app’s user base grows.

In short, vibe coding should be used as a tool, not a replacement for the human work of development. Understanding how to code is essential for getting the most out of vibe coding. For iOS development, Apple’s Swift documentation is a great place to start.

AJ Picard

Mobile Designer

MartianCraft is a US-based mobile software development agency. For nearly two decades, we have been building world-class and award-winning mobile apps for all types of businesses. We would love to create a custom software solution that meets your specific needs. Let's get in touch.