Skip to content

Using CDN

Load @sankyu/react-circle-flags directly from CDN for rapid prototyping, sandboxes, or environments where npm isn’t available.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<script type="importmap">
{
"imports": {
"react": "https://esm.sh/react@18",
"react-dom/client": "https://esm.sh/react-dom@18/client"
}
}
</script>
</head>
<body>
<div id="root"></div>
<script type="module">
import { createRoot } from 'react-dom/client'
import { CircleFlag } from 'https://esm.sh/@sankyu/react-circle-flags@1.4.0?exports=CircleFlag'
function App() {
return <CircleFlag countryCode="us" width={64} />
}
createRoot(document.getElementById('root')).render(<App />)
</script>
</body>
</html>

All three CDNs provide excellent ESM support with automatic dependency resolution:

Fast, reliable, with optimal bundle splitting and caching:

// Latest version (CircleFlag-only build)
import { CircleFlag } from 'https://esm.sh/@sankyu/react-circle-flags?exports=CircleFlag'
// Pinned version (recommended for production, CircleFlag-only build)
import { CircleFlag } from 'https://esm.sh/@sankyu/react-circle-flags@1.4.0?exports=CircleFlag'
// Pinned major version (auto-update patches)
import { CircleFlag } from 'https://esm.sh/@sankyu/react-circle-flags@^1?exports=CircleFlag'

Formerly Pika, a Snowflake-sponsored CDN:

// Latest version (CircleFlag-only build)
import { CircleFlag } from 'https://cdn.skypack.dev/@sankyu/react-circle-flags?exports=CircleFlag'
// Pinned version
import { CircleFlag } from 'https://cdn.skypack.dev/@sankyu/react-circle-flags@1.4.0?exports=CircleFlag'

Lightning-fast ESM CDN, sponsored by jsDelivr:

// Latest version (CircleFlag-only build)
import { CircleFlag } from 'https://esm.run/@sankyu/react-circle-flags?exports=CircleFlag'
// Pinned version
import { CircleFlag } from 'https://esm.run/@sankyu/react-circle-flags@1.4.0?exports=CircleFlag'
import { CircleFlag } from 'https://esm.sh/@sankyu/react-circle-flags@1.4.0?exports=CircleFlag'
// CircleFlag loads SVGs from HatScripts CDN by default
const App = () => <CircleFlag countryCode="us" width={48} />
// Or use custom CDN
const AppCustom = () => (
<CircleFlag countryCode="io" width={48} cdnUrl="https://custom-cdn.example.com/flags/" />
)
App.js
import { CircleFlag } from 'https://esm.sh/@sankyu/react-circle-flags@1.4.0?exports=CircleFlag'
export default function App() {
return (
<div>
<h1>Flags Demo</h1>
<CircleFlag countryCode="us" width={48} />
<CircleFlag countryCode="cn" width={48} />
</div>
)
}
// main.tsx (Deno)
import { CircleFlag } from 'https://esm.sh/@sankyu/react-circle-flags'
import React from 'https://esm.sh/react@18.3.1'
import ReactDOM from 'https://esm.sh/react-dom@18.3.1/client'
const App = () => <CircleFlag countryCode="us" width={48} />
ReactDOM.createRoot(document.getElementById('root')!).render(<App />)

Use regional CDN mirrors for better performance:

import { CircleFlag } from 'https://esm.sh/@sankyu/react-circle-flags'
const EuropeFlag = () => (
<CircleFlag countryCode="gb" cdnUrl="https://eu-cdn.example.com/circle-flags/flags/" />
)

Use import maps for React dependencies:

<script type="importmap">
{
"imports": {
"react": "https://esm.sh/react@18",
"react-dom/client": "https://esm.sh/react-dom@18/client",
"react/jsx-runtime": "https://esm.sh/react@18/jsx-runtime"
}
}
</script>

esm.sh supports TypeScript transformation:

// .ts and .tsx files work automatically
import { CircleFlag } from 'https://esm.sh/@sankyu/react-circle-flags?target=es2020'

For browsers without import map support, use an esm shim:

<script async src="https://unpkg.com/es-module-shims@1.8.0/dist/es-module-shims.js"></script>
<script type="importmap">
{
"imports": {
"react": "https://esm.sh/react@18"
}
}
</script>

Use HTTP/2

Modern CDNs support HTTP/2 for faster asset loading

Enable Compression

All CDNs serve Brotli/Gzip compressed assets automatically

Leverage Browser Cache

Versioned URLs enable long-term caching (1 year+)

Choose Right CDN

Use esm.sh for development, Skypack for production stability