Who am I?

There are at least 10 JS Playgrounds

What makes a JS Playground?

  • a web app that enables you to edit, preview and share your JS work

Just like that

Why should you care about JS Playgrounds?

  • in inception mode, you have to iterate super quick with live reload
  • you might want to save your PoC as starting point for development
  • you might want to test out something in isolation
  • you hate setup and configuration efforts to get your IDE running for simple use cases
  • you like to brag about a cool feature/component/style you developed
  • depending on your XYZ, you will have different needs
    • XYZ could be audience, JS library, CSS library, project scope, use case
  • playgrounds have much in common but sometimes lack expected features

What JS Playgrounds are NOT ...

  • they are not supposed to replace your IDE and cover all features you might think of
  • they are not supposed to cover complex scenarios, for instance data retrieval from external sources
  • they are not supposed to support you with testing, building, minifying, ...

How to approach? Understand XYZ needs first

  • Created a list of 11 categories and 38 relevant criteria
  • Categories: Efficiency, Live Reload, Preprocessing, Flexibility, Snippet Management, Connectivity, Troubleshooting, File Import, Project Export, Collaboration and Community

Next, understand which JS playgrounds should be considered

  • Identified 8 relevant JS playgrounds
  • Divided the list of playgrounds into Tier 1 and Tier 2 based on their features
  • JSFiddle following the KISS principle, others are feature-driven

Check out the raw analysis

GitHub: github.com/agraebe/JS-Playgrounds

How to understand which playground to go with?

  • Need file support? > Plunkr (or maybe CodePen)
  • Care about beautified code? > JSFiddle, CodePen or Plunkr
  • Need HTML, CSS and/or JS preprocessing > CodePen, JSBin, Plunkr or CSSDeck
  • Need to run your own playground locally? > JSBin or Plunkr
  • Need to edit and preview code on mobile? > CodePen
  • Care about community (protfolio, comments, blogs)? > CodePen
  • Find yourself focusing on CSS? > Dabblet
  • Need to test responsiveness and detect layer issues? > Kodtest
  • Want to import and export project as GitHub Gist? > JSBin
  • Need live collaboration? > JSFiddle, CodePen, Plunkr, Liveweave
  • Need full and easy access to HEAD, live reload, linting, adjustable editor themes or easy project export? > not JSFiddle
  • Care about versioning? > not CodePen

Conclusions

  • Disclaimer: The slide before represents what I could find during research. Might be outdated quickly..
  • Plunkr should be the feared underdog in Tier 1, but lacks documentation
  • If you don't care about sharing your code, you might be better off with code editor/browser plugins or web-based IDEs
  • Importing functionality would allow to quickly switch to a JS playground with pre-developed pieces, but we're not there yet
  • If you need a playground for NodeJS, check out JSApp
  • If you need to test JS performance for specific methods, check out JSPerf

Conclusions (cont'd)

  • Playgrounds gained traction initially thanks to StackOverflow (SO). But now, SO created their own solution (Stack Snippets)
  • Trend of coding webcasts will probably foster adoption, but requires more features (e.g. recording)
  • CodeMagic could become the next big thing as soon as the backend implementation is done
  • Advise to makers: Stop creating new playgrounds and focus on extension points for core functionalities. Many playgrounds are based on the same sources anyway (ACE Editor / CodeMirror and TogetherJS)

Questions?