Don't fear the SEO

For a long long time, I've avoided SEO. I felt it was a dirty tactic and in fact I still do. People obsess about it. People misuse it a lot. I will never be one of those marketing people with the "5 simple tricks" and what not. That's not the type of girl I am.

It goes without saying, that I am not someone who micro-optimizes her SEO to get ahead. I am though an advocate for making things easy to find. I want to know what your apps are. I want others to find my apps easily.

Make it easy to be found

This is really what it is about. How can you make it so that your content, your apps, your services are easy to be found. How can you position yourself in such a way that people can find you.

Titles and descriptions

Before anything clever, there's the humble <title> tag. It's the single most useful bit of on-page anything you have, it's the thing a search engine shows as the clickable link, and it's the thing that ends up in someone's bookmarks and browser tab. Give every page its own. "Untitled" or the same site name repeated makes it difficult for people to find your site in their browser history.

The description is worth understanding properly, because most people get told it's a ranking factor and it isn't. Nobody ranks you higher for a nice description. What it does do is become the little blurb underneath your link, so think of it as the ad copy rather than the ranking lever. Write it for the human deciding whether to click.

Sitemaps

All the way back in June 2005, sitemaps were introduced as a way to allow search engines to find the content of your site. You might think that in the world of mass internet scraping that these aren't worthwhile, but they still are. It's an authoritative list of what's there on your site that the search engine can find. So yeah, be a well behaved developer and introduce them.

Robots.txt

Again, this is a super old feature of the internet put in place to make sure that sites don't get overloaded with traffic that just scrapes your site. It can be argued that AI / LLMs don't respect this and they don't. But you should still be well behaved.

Robots.txt is not access control. It's a polite request, not a fence. Anything you list there is still perfectly reachable by anyone who types the URL, and you've helpfully published a list of the things you'd rather people didn't look at. It can't even reliably keep a page out of search results, because a page nobody is allowed to crawl can still get listed off the back of links pointing at it. If you actually want a page kept out of an index, that's what a noindex robots meta tag is for.

Meta tags

So not the evil meta, the extra data that exists outside of the content of your website in order to provide details about its content. The one that earns its keep is description, as above. MDN has the reference if you want the full list, and the actual definition lives in the HTML spec. Meta tags are also where things like OpenGraph and Social cards live.

OpenGraph

OpenGraph are meta tags that begin with og and these are used for generating social media preview tags. They are super beneficial for when somewhere shares a link to your blog post or your app.

Canonical URLs

As part of the meta tags for your site, expose a canonical URL so that if things like query params are part of the URL then a search engine knows whether a page with the query params is identical to one without.

Structured data

Sitemaps and robots.txt tell a crawler where your things are. Structured data tells it what they are. This is a blog post, written by this person, published on this date. This is an app. This is a talk I'm giving, at this conference, on this date.

But Amy, how does it actually work? Well, that's a good question to ask. This blog defines three bits of information being WebSite, Person and Blog.

<script type="application/ld+json">{
  "@context": "https://schema.org",
  "@graph": [
	{
	  "@type": "WebSite",
	  "@id": "https://cuteios.dev/#website",
	  "url": "https://cuteios.dev/",
	  "name": "Amy is a cute iOS Developer",
	  "description": "Amy writes about iOS and Swift — SwiftUI, Xcode, SwiftData, and the craft of shipping indie apps for Apple platforms.",
	  "inLanguage": "en",
	  "publisher": { "@id": "https://cuteios.dev/#person" }
	},
	{
	  "@type": "Person",
	  "@id": "https://cuteios.dev/#person",
	  "name": "Amy",
	  "url": "https://cuteios.dev/about/",
	  "jobTitle": "iOS Developer",
	  "knowsAbout": ["iOS", "Swift", "SwiftUI", "SwiftData", "Xcode", "Apple platform development"],
	  "sameAs": ["https://github.com/cuteiosdev"]
	},
	{
	  "@type": "Blog",
	  "@id": "https://cuteios.dev/#blog",
	  "url": "https://cuteios.dev/",
	  "name": "Amy is a cute iOS Developer",
	  "description": "Posts on iOS and Swift development by Amy — SwiftUI previews, SwiftData migrations, Xcode Cloud, Instruments, HealthKit, and Foundation Models.",
	  "inLanguage": "en",
	  "author": { "@id": "https://cuteios.dev/#person" }
	}
  ]
}</script>

Google has a write up about Structured Data here.

Semantic HTML and alt text

Let me repeat this again and again. Make it easy for readers to understand your site. This is not only human readers but computers as well. Alt text and proper use of html tags mean that a search engine or ai along with a person can easily make sense of your site and expose what you want exposed. Things like <nav>, <main> and <article> are great options.

Feeds

Google killed Reader. It didn't kill RSS or automated feeds of content. Make good use of it so that others can stay up to date with your content.

Stale content

Everyone loves to refresh the look and feel of their sites. That's well and good to be constantly improving things, but if your posts URL changes then it becomes difficult for someone to find it so keep the URLs the same during updates to your site.

Make your apps easy to find

For me, I care about whether my apps can be found. Linking to them on a website is one way. If the site is specific to the app, having a "open on the app store" banner is the way to go. It's direct and actionable by visitors to your site. This is done by the apple-itunes-app meta tag.

What this actually gets you

You likely wont get immediately to the top of the search rankings. But it's worth making use of all of this so that when people go looking for your content they can easily find it. Be well behaved and make it easy for others. Verify your site in Google Search Console as it's a way to make sure that what you have set up is working as expected.

The gist of it all

So, these things are super easy to implement but also a huge barrier for most engineers to get over with preconceptions about effectiveness. Just don't worry about the metrics and make it easier for people to find your app or website.

Listening to

Don't Fear The Reaper because it's hard to not instantly jump to this song when someone mentions Don't Fear the SEO.