react-runner
TypeScript icon, indicating that this package has built-in type declarations

1.0.5 • Public • Published

React Runner

Run your React code on the go https://react-runner.vercel.app

Features

  • Inline element
  • Function component
  • Class component, with class fields support
  • Composing components with render or export default
  • Server Side Rendering
  • import statement
  • Multi files
  • Typescript

With React Runner, you can write your live code in the real world way, check out Hacker News in react-runner vs in real world, with the same code

You can even build your own async runner to support dynamic imports, try Play React

Install

# Yarn
yarn add react-runner

# NPM
npm install --save react-runner

Options

  • code string, required the code to be ran
  • scope object globals that could be used in code

Usage

import { Runner } from 'react-runner'

const element = <Runner code={code} scope={scope} onRendered={handleRendered} />

or use hook useRunner with cache support

import { useRunner } from 'react-runner'

const { element, error } = useRunner({ code, scope })

import statement and multi files

import { importCode } from 'react-runner'
import * as YourPkg from 'your-pkg'

const baseScope = {
  /* base globals */
}

const scope = {
  ...baseScope,
  // scope used by import statement
  import: {
    constants: { A: 'a' },
    'your-pkg': YourPkg,
    './local-file': importCode(localFileContent, baseScope),
  },
}

then in your live code you can import them

import { A } from 'constants'
import Foo, { Bar } from 'your-pkg'
import What, { Ever } from './local-file'

export default function Demo() {
  /* render */
}

Browser support

"browserslist": [
  "Chrome > 61",
  "Edge > 16",
  "Firefox > 60",
  "Safari > 10.1"
]

Resources

react-live-runner

react-runner is inspired by react-live heavily, I love it, but I love arrow functions for event handlers instead of bind them manually as well as other modern features, and I don't want to change my code to be compliant with restrictions, so I created this project, use Sucrase instead of Bublé to transpile the code.

If you are using react-live in your project and want a smooth transition, react-live-runner is there for you which provide the identical way to play with, and react-live-runner re-exports react-runner so you can use everything in react-runner by importing react-live-runner

import {
  LiveProvider,
  LiveEditor,
  LiveError,
  LivePreview,
} from 'react-live-runner'

...
<LiveProvider code={code} scope={scope}>
  <LiveEditor />
  <LivePreview />
  <LiveError />
</LiveProvider>
...

or hooks for better custom rendering

import { useLiveRunner, CodeEditor } from 'react-live-runner'

const { element, error, code, onChange } = useLiveRunner({
  initialCode,
  scope,
  transformCode,
})

...
<>
  <CodeEditor value={code} onChange={onChange}>
  <div>{element}</div>
  {error && <pre>{error}</pre>}
</>
...

or use react-runner directly

import { useState, useEffect } from 'react'
import { useRunner } from 'react-runner'

const [code, onChange] = useState(initialCode)
const { element, error } = useRunner({ code, scope })

useEffect(() => {
  onChange(initialCode)
}, [initialCode])

...
<>
  <textarea value={code} onChange={event => onChange(event.target.value)}>
  <div>{element}</div>
  {error && <pre>{error}</pre>}
</>
...

Check the real world usage here https://github.com/nihgwu/react-runner/blob/master/website/src/components/LiveRunner.tsx

License

MIT © Neo Nie

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
1.0.1-alpha.00esm
1.0.512,990latest

Version History

VersionDownloads (Last 7 Days)Published
1.0.512,990
1.0.480
1.0.3850
1.0.20
1.0.11
1.0.1-alpha.20
1.0.1-alpha.11
1.0.1-alpha.00
1.0.01
1.0.0-rc.30
1.0.0-rc.20
1.0.0-rc.11
1.0.0-rc.00
1.0.0-alpha.81
1.0.0-alpha.70
1.0.0-alpha.61
1.0.0-alpha.51
1.0.0-alpha.40
1.0.0-alpha.30
1.0.0-alpha.20
1.0.0-alpha.11
1.0.0-alpha.00
0.5.19
0.5.00
0.4.21
0.4.10
0.4.00
0.3.11
0.3.01
0.2.00
0.1.40
0.1.31
0.1.20
0.1.10
0.1.01
0.0.40
0.0.30
0.0.21
0.0.10

Package Sidebar

Install

npm i react-runner

Weekly Downloads

3,454

Version

1.0.5

License

MIT

Unpacked Size

56.2 kB

Total Files

17

Last publish

Collaborators

  • nihgwu