Skip to content


Subversion checkout URL

You can clone with
Download ZIP
A JavaScript State Chart interpreter that fully implements the W3C's upcoming SCXML recommendation
JavaScript HTML CSS Shell
Branch: master
Failed to load latest commit information.
w3c_tests changed the error event for SpeehSynthesisUtterances to speak.error
.gitignore first numbered version, new dev status page
LICENSE.txt Added LICENSE file new version
SCxml.js just a little refactoring
SCxml.ugly.js latest fixes
SCxmlConnect.js minor bugfix in a RegExp
SCxmlDatamodel.js fixed scope issue with predefined variables
SCxmlDebug.js fix SVG arrows partially hidden
SCxmlEvent.js event names must always be a string
SCxmlExecute.js put all the inline data parsing in one place
SCxmlFetch.js empty data now properly results in a GET request, not POST "{}"
SCxmlInvoke.js implemented connection-like <invoke> and the "event-stream" type
SCxmlMutation.js added viz for initial targets
SCxmlProcessors.js removed logging
SCxmlSpeak.js changed the error event for SpeehSynthesisUtterances to speak.error
SCxmlView.css added viz for initial targets
api.html documented the new File source type
connect.html missed another reference to <connect>
delays.js implemented pause/resume for delayed events!
dom.html included the new Invoke module in all demo files
event-stream.html documented the new invoke stuff
fetch.html added namespace to the <fetch> documentation
speak.html improved <speak> documentation
structures.js implemented the preemption algorithm discussed in the working group p…
test.html added back test 428 (still doesn't pass) added the new <speak> stuff to the debugger and package
uitest.scxml changed the DOM test to something useful for an animated UI walkthrough
viewer.html changed the source field type to "text" to accept relative URLs
xhr.js first working prototype, passes the first W3C test


A JavaScript State Chart interpreter that fully implements the W3C's upcoming SCXML recommendation in Web browsers.

The name should be pronounced "JessieXML" or just "Jessie".

It is distributed under a MIT license.

Official website:

Main Features:

Development status

Latest version: 0.9.1

See the version history and goals.

You can't <send> or receive remote events (of any type) with I/O Processors, but you can already use the included custom <fetch> and <invoke type="event-stream"> elements to get similar results in a client-server fashion.

As mentionned above, you can't <send> SCXML events over HTTP. But you can listen to remote events after invoking a connection with event-stream type.

Known issues

(that I'm not going to fix right now)

  • Variables whose name matched a predefined window variable are pre-declared in the datamodel. You should not delete them if you don't understand what it means and how the datamodel is implemented in JSSC.

  • The JavaScript expression in the location attribute of an <assign> element is currently being evaluated twice while executing the <assign>. That could cause a bug if it has side-effects. You should perform any such actions in a <script>, and use read-only expressions in location attributes. Or you can just write the whole assignment in a <script>, of course.

  • In ECMAScript content, the keyword "this" references a hidden window by default. You should only use it in constructors and object methods, never in a default context, unless you really know what you're doing.

Something went wrong with that request. Please try again.