ShipFree comes with built-in SEO optimization to help your application rank better in search engines.
// app/layout.tsx
export const metadata: Metadata = {
title: "Your App Name",
description: "Your app description",
keywords: ["keyword1", "keyword2"],
};
For dynamic pages, use generateMetadata:
export async function generateMetadata({ params }): Promise<Metadata> {
return {
title: `${params.title} | Your App`,
description: params.description,
openGraph: {
title: params.title,
description: params.description,
images: [params.image],
},
};
}
ShipFree includes comprehensive OpenGraph tags for better social media sharing:
export const metadata: Metadata = {
openGraph: {
type: "website",
locale: "en_US",
url: "https://yourdomain.com",
siteName: "Your App Name",
images: [
{
url: "https://yourdomain.com/og-image.jpg",
width: 1200,
height: 630,
alt: "Your App Name",
},
],
},
};
ShipFree automatically generates a sitemap for your pages:
// app/sitemap.ts
export default async function sitemap() {
const routes = ["", "/about", "/features", "/pricing"];
return routes.map((route) => ({
url: `https://yourdomain.com${route}`,
lastModified: new Date(),
}));
}
For dynamic content:
export default async function sitemap() {
// Fetch your dynamic routes
const posts = await fetchPosts();
const postUrls = posts.map((post) => ({
url: `https://yourdomain.com/blog/${post.slug}`,
lastModified: post.updatedAt,
}));
return [...postUrls];
}
<script
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify({
"@context": "https://schema.org",
"@type": "WebSite",
name: "Your App Name",
url: "https://yourdomain.com",
}),
}}
/>
Title Tags
Meta Descriptions
URL Structure
Image Optimization
Core Web Vitals
Loading Speed
Mobile Optimization
Google Search Console
Analytics Integration