NNabeel Hassan

Blog · October 14, 2026 · 8 min read

AR Foundation vs Vuforia vs Native ARKit and ARCore: How I Choose an AR SDK

By Nabeel Hassan — AI Engineer · ICPC World Finalist

TL;DR: For most business AR apps built in Unity, I start with AR Foundation, because it gives you ARKit on iOS and ARCore on Android from one project and keeps you close to what the platforms actually ship. I reach for Vuforia when the job is recognising specific things, printed images or physical objects, reliably and in bad conditions, and when the client accepts a commercial licence. I go fully native with ARKit or ARCore only when the app is single-platform, AR is a small part of a larger native app, or it needs a platform feature the day it ships. The wrong choice is rarely fatal, but it is expensive to undo, so make it on what the app has to recognise and where it has to run, not on which demo looked best.

I have built AR in Unity for years, including the ERIS XR platform and the AR Planes and AR Properties tools at ARCortex, plus the AR crypto and NFT viewers, and AR Foundation, Vuforia, ARKit and ARCore have all been in my toolbox at different points. Clients rarely ask me which SDK to use. They ask whether the thing they have in mind is possible, how long it takes, and why the prototype they saw last month does not work in their warehouse. The SDK decision sits underneath all three of those answers.

Here is how I make it.

Start with what the app has to recognise

Every AR SDK comparison online lists features. The more useful question is: what does your app need to find in the real world before it can show anything?

There are roughly four answers, and they point to different tools:

Surfaces and places favour AR Foundation and the native SDKs underneath it. Known objects is where Vuforia has historically earned its price. Known images sits in the middle, and the right answer depends on how hostile the conditions are.

AR Foundation: my default for Unity

AR Foundation is Unity's cross-platform layer. You write against one set of components, planes, anchors, raycasts, image tracking, face tracking, and it uses ARKit on iOS and ARCore on Android underneath. The tracking quality is whatever Apple and Google ship, which in practice means very good world tracking on modern phones.

Why it is usually my starting point:

The trade-offs are real, though:

For location content, Google's Geospatial API plugs into AR Foundation through ARCore Extensions and works on both platforms. It does not remove the hard part, which is reconciling the camera's local world with real coordinates. That is a story of its own, and I covered it in the geospatial AR coordinate problem.

Vuforia: when recognition is the product

Vuforia's reputation comes from recognition. It has been doing image targets for a long time, and its model targets let you recognise a physical object from its 3D model, which is exactly what industrial and maintenance apps need: point the tablet at the machine, and the overlay snaps to the machine.

When I lean towards it:

What to weigh against it:

Native ARKit or ARCore: when one platform is enough

Going native means writing the AR part in Swift with ARKit and RealityKit on iOS, or in Kotlin with ARCore on Android, without Unity in the middle.

I recommend it in a narrower set of cases:

The cost is that you lose Unity's strengths: the scene tooling, the asset pipeline, physics and animation, and the ability to ship the same interaction on both platforms. If the AR content is rich, interactive 3D, rebuilding that on a native renderer usually takes longer than the cross-platform tax you were trying to avoid. That is the same trade I walk through in when Unity makes sense for non-game apps.

The questions I ask before choosing

When a client brings me an AR idea, these questions settle the SDK faster than any feature table:

  1. What does the app have to find first? Surface, image, object or place.
  2. Which devices, exactly? Named models, not "phones". Older and cheaper Android devices are where tracking surprises happen.
  3. Where will it be used? Office lighting, a dim warehouse, outdoors in sun, a moving vehicle. Conditions decide recognition quality more than the SDK's marketing does.
  4. Is AR the product or a feature? This is the single biggest driver of Unity versus native.
  5. Who pays for licences, and for how long? Including after the build, when the app is in maintenance.
  6. Could this grow onto a headset? If yes, staying in Unity keeps that door open.

If the answers are "surfaces, both platforms, AR is the product", that is AR Foundation, and we can move on to the parts that actually take time.

Whatever you pick, protect the boundary

The SDK is not where most of an AR project's time goes. It goes into content, interaction design, performance on real devices and testing in the place the app will actually be used.

So I structure every AR project the same way regardless of SDK. The domain logic, what the content is, where it belongs, what state the session is in, lives in plain code that knows nothing about the tracking provider. The SDK sits behind a thin layer that answers a few questions: where is the surface, where is the target, where is the anchor. If we ever need to switch providers, we rewrite that layer, not the app. It is the same rule I learned building a cross-platform SDK at Geonode: share the logic, never the platform.

And whatever you choose, test it in the field early. The editor and the office will both tell you the SDK works. The site will tell you the truth. I wrote down my process for that in testing AR apps in the field, and it is the step I would least want a client to skip.

My short answer

None of these is a forever choice, but switching later costs weeks, not hours. Spending an hour on the questions above before writing code is the cheapest insurance in an AR project.


I build AR, XR and Unity products for businesses, from field tools for the U.S. Fire Administration at ARCortex to clinical XR at Nystag, alongside AI agents and full-stack products for founders across the US, UK and Europe. If you are weighing an AR idea, more about my work here, or book a call.

FAQ

Should I use AR Foundation or Vuforia?

Use AR Foundation by default for Unity apps that place content on surfaces or locations across iOS and Android, since it is free and uses ARKit and ARCore underneath. Choose Vuforia when the app must reliably recognise specific printed images or physical objects in difficult conditions and the budget covers its commercial licence.

Is AR Foundation the same as ARKit and ARCore?

No. AR Foundation is Unity's cross-platform layer that calls ARKit on iOS and ARCore on Android underneath. Tracking quality comes from the platform SDKs, but new platform features usually reach AR Foundation later, and some exist on only one platform.

When should an AR app be built natively instead of in Unity?

When AR is one screen inside an existing native app, when the audience uses only one platform, or when the app depends on a platform feature that is not yet available in any cross-platform layer. If the AR content is rich interactive 3D on both platforms, Unity is usually faster overall.

Can I switch AR SDKs later?

Yes, if the app keeps its own logic separate from the tracking provider. Put content, placement rules and session state in plain code, and wrap the SDK in a thin layer that only reports surfaces, targets and anchors. Then a switch means rewriting that layer rather than the whole app.

Building something in this space?

I take on AI-agent, automation and product work directly — scoped fast, shipped fast.

Book a discovery call →

Keep reading