{"id":26417,"library":"songdown-compiler","title":"Songdown Compiler","description":"A React component that compiles Songdown syntax (a markup language for chord sheets) into HTML for rendering. Version 0.7.0 is the latest stable release, with no further updates since 2015. It is part of the Songdown project, designed for musicians to write songs with chords, lyrics, guitar tabs, and comments. Key differentiators include transposing, font size control, and options to hide chords/comments/GOTOs. Requires React 0.13.x and lodash 3.x.x as peer dependencies. The project is unmaintained and uses outdated libraries, including React 0.13 (pre-hooks), lodash 3, and CoffeeScript heritage.","status":"abandoned","version":"0.7.0","language":"javascript","source_language":"en","source_url":"https://github.com/1vasari/songdown-compiler","tags":["javascript"],"install":[{"cmd":"npm install songdown-compiler","lang":"bash","label":"npm"},{"cmd":"yarn add songdown-compiler","lang":"bash","label":"yarn"},{"cmd":"pnpm add songdown-compiler","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency for utility functions","package":"lodash","optional":false},{"reason":"Peer dependency for rendering components","package":"react","optional":false}],"imports":[{"note":"Package is a function that takes React as an argument and returns a Song component. This pattern is required due to React 0.13 peer dependency.","symbol":"Song","correct":"var Song = require('songdown-compiler')(React);"},{"note":"ESM import does not export the component directly; you must call the default export with React as an argument.","wrong":"import Song from 'songdown-compiler';","symbol":"Song","correct":"import React from 'react';\nimport createSong from 'songdown-compiler';\nconst Song = createSong(React);"},{"note":"CommonJS require without calling the function will not return the component.","wrong":"var Song = require('songdown-compiler');","symbol":"Song","correct":"var React = require('react');\nvar Song = require('songdown-compiler')(React);"}],"quickstart":{"code":"var React = require('react');\nvar Song = require('songdown-compiler')(React);\nvar song = React.createElement(Song, {\n  chords: 'Am C G',\n  lyrics: 'Verse 1\\nAmazing grace how sweet the sound',\n  transposition: 0,\n  fontSize: 14,\n  hideChords: false,\n  hideComments: false,\n  hideGotos: false\n});\nReact.render(song, document.getElementById('root'));","lang":"javascript","description":"Shows how to require the library, create a Song component with props, and render it using React 0.13-style API."},"warnings":[{"fix":"Migrate to a modern chord sheet rendering library like chord-sheet-renderer or react-chord-sheet.","message":"The package requires React 0.13.x, which is heavily outdated and incompatible with modern React versions (16+).","severity":"deprecated","affected_versions":">=0.1.0"},{"fix":"Use var Song = require('songdown-compiler')(React);","message":"The default export is a function that must be called with React as an argument; direct import does not work.","severity":"gotcha","affected_versions":">=0.3.0"},{"fix":"Ensure lodash version 3.x is installed in your project.","message":"The package uses lodash 3.x.x as a peer dependency, which is incompatible with lodash 4.x.x.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Update your Songdown files to use the new verse ending syntax as specified in the changelog.","message":"Verse ending token changed in version 0.7.0, which may break existing Songdown documents.","severity":"breaking","affected_versions":">=0.7.0"},{"fix":"Stick to React 0.13 or migrate to a different library.","message":"React.render() is used in the package, which was removed in React 0.14+. The package is incompatible with React 0.14+.","severity":"deprecated","affected_versions":">=0.1.0"},{"fix":"Use source maps or avoid this package for new projects.","message":"The package relies on CoffeeScript compiled to JavaScript, making debugging harder.","severity":"gotcha","affected_versions":">=0.1.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Install React 0.13.x: npm install react@0.13 --save","cause":"This package uses React 0.13's createClass, which was removed in React 16.","error":"TypeError: React.createClass is not a function"},{"fix":"Install lodash 3.x: npm install lodash@3 --save","cause":"lodash 3.x is a peer dependency and not installed automatically.","error":"Cannot find module 'lodash'"},{"fix":"Downgrade to React 0.13 or use an alternative library.","cause":"Using this package with React >0.13 may cause incompatibility errors.","error":"Uncaught Error: addComponentAsRefTo(...): Only a ReactOwner can have refs."},{"fix":"Do not use this package with React 0.14+; if needed, use ReactDOM.render but may still break.","cause":"This package calls React.render, which was deprecated in React 0.14.","error":"Warning: React.render is deprecated and will be removed in React 17"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}