# LiveCodes SDK
import LiveCodes from '../../src/components/LiveCodes.tsx';
The Software Development Kit (SDK) provides an easy, yet powerful, interface to embed and communicate with LiveCodes playgrounds.
The SDK is provided as a light-weight ([less than 5kb gzipped](https://bundlephobia.com/package/livecodes)), zero-dependencies [npm package](#npm-package), that is also available from [CDNs](#cdn). It can be used to create playgrounds with a wide variety of [configurations](../configuration/configuration-object.html.md) and [embed options](js-ts.html.md)#embed-options). In addition, [SDK methods](js-ts.html.md)#sdk-methods) allow programmatic communication and control of the playgrounds during runtime.
The [JavaScript SDK](js-ts.html.md) is framework/library agnostic. However, wrapper components are also provided for popular libraries (currently [React](react.html.md) and [Vue](vue.html.md)). The SDK can be used in [Svelte](svelte.html.md) directly without wrappers. [TypeScript support](js-ts.html.md)#typescript-types) provides type-safety and a great developer experience.
## SDK Demo
This is an example of an editable embedded playground using the SDK.
## Installation
### NPM Package
This is a single npm package for the SDK which supports JavaScript/TypeScript, React, Vue and Svelte.
Install the library from npm:
```bash npm2yarn
npm install livecodes
```
then it can be used like that:
```js title="index.js"
import { createPlayground } from 'livecodes';
createPlayground('#container', {
// embed options
});
```
### CDN
Alternatively, it can just be loaded from a CDN.
ESM:
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import CodeBlock from '@theme/CodeBlock';
export const ESMCode = () => {
const { siteConfig } = useDocusaurusContext();
return (
{`\n`}
);
};
UMD:
export const UMDCode = () => {
const { siteConfig } = useDocusaurusContext();
return (
{`\n\n
`}
);
};
:::info
In the full [standalone app](../getting-started.html.md)#standalone-app), the JavaScript SDK is accessible via the global variable `livecodes`, which can be interacted with in the browser console.
:::
## Usage
The SDK is currently provided in the following variations:
- [JavaScript/TypeScript](./js-ts.html.md)
- [React](./react.html.md)
- [Vue](./vue.html.md)
- [Svelte](./svelte.html.md)
## Headless Mode
The SDK also has a [headless mode](./headless.html.md). In this mode, no visible output is displayed in the embedding web page. However, all [SDK methods](../sdk/js-ts.html.md)#sdk-methods) are accessible. This provides the power of leveraging the wide range of features and language support offered by LiveCodes, while retaining full control over the UI.
## SDK Playground!
A demo page that shows the usage of the SDK can be [found here](https://live-codes.github.io/livecodes-examples/sdk-demo.html) ([source](https://github.com/live-codes/livecodes-examples/blob/gh-pages/sdk-demo.html)).
Or edit the SDK playground in LiveCodes. How meta! :)
P.S. You may want to use the "Full Screen" button!