Case Study
Graphics
Productivity
> Migrated over 15 million lines of C/C++ code to the web

Client background

Our client is a global software company known for its suite of creative and productivity tools, serving millions of users worldwide from 1985. One of its flagship products is a professional vector graphic design application, widely used for illustration, layout, and typography across industries such as marketing, publishing, and manufacturing. 

Business challenge

As a leader in vector graphic design, our client sought to modernize its desktop application and make it accessible on the web. Rather than rebuilding millions of lines of C++ code, we leveraged WebAssembly (WASM) to run the existing core engine directly in the browser. This approach delivered the full power of the desktop application while maintaining a unified codebase across all platforms. 

How did we make it work?

Over the decades, the customers source code has grown to millions of lines—some dating back to the 1980s. The challenge was to take this mature C++ codebase and make it run universally: on desktop and in the browser. The goal? A unified core, faster development, and reduced maintenance costs. 

To achieve this, we turned to WebAssembly—a technology designed to compile languages like C++ for safe, high-performance execution in the browser. Unlike JavaScript, WebAssembly avoids performance bottlenecks and doesn’t require rewriting existing code. 

Benefits of WebAssembly for CorelDRAW: 
  • Near-native performance

Complex vector rendering runs smoothly in the browser. 

  • Code reuse

The core C++ engine runs across platforms without rewriting it in JavaScript. 

  • Cross-platform consistency

One codebase works on Windows, macOS, Linux, and all modern browsers.

  • Simplified maintenance

A shared core streamlines development across desktop and web. 

  • Cloud-ready delivery

The browser version can be embedded or offered as a SaaS product—no installation required.

  • Faster time to market

New features can be delivered in sync across desktop and web, accelerating release cycles.

How did we make it work?

Our journey was complex—filled with research, unexpected challenges, and hard work. The key obstacles we faced included: 

01 Limited Access to System Resources

C++ applications typically interact directly with the operating system (handling files, networking, graphics, etc.), but browsers operate in a more secure and restricted environment. We had to rework significant portions of the code, and in some cases, remove native components entirely and replace them with JavaScript equivalents. 

02 Rebuilding the User Interface

C++ UI code—windows, buttons, dialogs—doesn’t translate to the web. We rebuilt the entire interface from the ground up using modern web technologies like HTML, CSS, and JavaScript. 

03 Multithreading and Concurrency

WebAssembly doesn’t support native threading APIs like POSIX or Windows threads. Instead, it relies on Web Workers, which behave differently and introduce overhead. We had to adapt and rewrite the core’s multithreading and synchronization logic to work reliably within the browser environment. 

04 Replacing Incompatible Dependencies

Many native C++ libraries are not compatible with WebAssembly. To overcome this, we audited and replaced several dependencies with alternatives that function well in the browser context. 

05 Different level of support in browsers

One of the challenges when working with WebAssembly is that not all browsers support its features equally. While core WebAssembly functionality is well-supported across major browsers (Chrome, Firefox, Edge, Safari), advanced features—such as multithreading, streaming compilation, and other—have inconsistent or partial support. 

Value delivered by devPulse

The migration of the product to the browser using WebAssembly was successful, and it is now fully running on the web. By leveraging the existing C++ codebase and modern browser capabilities, we:

  • delivered a powerful, cross-platform experience without sacrificing performance or functionality;
  • preserved decades of engineering investment;
  • enabled seamless updates;
  • simplified maintenance;
  • guaranteed broader accessibility through the web.

Connect with our experts