I don't think the browsers support newlines in canvas, so until they do, there's not much we can do. Parsing labels and adding newlines ourselves in Cytoscape.js is not a performant option, as this would negatively affect the redraw performance of the renderer to a noticeable degree. Text rendering is already a large rendering bottleneck.
The best thing to do would be to file bug reports with the major browser makers to improve their implementations of canvas -- to support newlines in calls to context.fillText().
Another option is an alternative method of drawing text (maybe SVG?) that supports newlines. That option would have to be faster than canvas for text rendering to be viable.