Migrating from Syncfusion Grid to RevoGrid is usually a migration of grid configuration and user workflows, not a rewrite of your business data.
If your current Syncfusion Grid implementation uses a plain array of records in dataSource, your first RevoGrid version can often keep the same records and move them to source. The first column pass is also straightforward: map Syncfusion field to RevoGrid prop, and Syncfusion headerText to RevoGrid name.
The real migration work starts after the first render. Syncfusion applications often use framework-specific components, feature services, DataManager, toolbar commands, edit modes, templates, and event hooks. Those should not be copied one by one. They should be migrated as product workflows: editing, validation, filtering, sorting, paging, selection, export, remote data, grouping, hierarchy, and advanced analytics.
This guide is written for developers who already have a Syncfusion Grid screen and want a practical migration path to RevoGrid, a high-performance JavaScript data grid with an MIT-licensed core, Web Component architecture, framework wrappers, virtual rows and columns, editing, custom cells, and a path into RevoGrid Pro features.
If you are still comparing vendors, start with the Syncfusion Alternative page. If you are ready to port code, use this migration guide.
Migration principle
Do not try to make RevoGrid look like Syncfusion internally. Keep the same product workflow, but map it to RevoGrid's API, event model, and Web Component foundation.
The second migration layer is where most real work happens:
Workflow
Why it needs attention
Feature modules and services
Syncfusion often enables features with injected services such as paging, sorting, filtering, editing, toolbar, and virtual scroll. RevoGrid uses its own props, events, plugins, and Pro modules.
DataManager and adaptors
RevoGrid does not need Syncfusion's data abstraction. Move remote data loading into your application layer or RevoGrid-specific remote workflow.
Templates
Syncfusion templates and RevoGrid cell templates have different contracts. Port display behavior, not template syntax.
Edit modes
Syncfusion Inline, Batch, and Dialog modes need separate migration decisions.
Toolbar CRUD
Syncfusion toolbar actions should usually become application-level buttons or commands around RevoGrid.
Events
Syncfusion event props and callback names become RevoGrid DOM custom events.
Selection and clipboard
Spreadsheet-like UX should be tested as user journeys, not prop renames.
Advanced workflows
Grouping, hierarchy, aggregates, export, server-side operations, pivot, Gantt, and scheduling should be migrated one by one.
In RevoGrid, columns are objects passed to the grid.
field
prop
prop is the row key used by a RevoGrid column.
headerText
name
name controls the displayed column header.
width
size
Column width in pixels.
minWidth
minSize
Minimum column width.
maxWidth
maxSize
Maximum column width.
visible: false
Omit column or hide through app state
Keep a clean visible column model.
allowEditing: false
readonly: true
RevoGrid columns are editable unless locked.
allowSorting
sortable
Enable sorting per column where needed.
allowFiltering
Column filter plus grid filter prop
Enable filtering at grid level, then configure columns.
format
cellTemplate, parser, or column type
Keep raw values clean and format display in the column layer.
template
cellTemplate or framework renderer
Port the rendered UI, not the Syncfusion template contract.
headerTemplate
Header template / custom header workflow
Rebuild custom headers in RevoGrid's header model.
editTemplate
Custom editor
Register and assign RevoGrid editors where needed.
editSettings
Editability, events, and app state
Use readonly, beforeedit, and afteredit.
allowPaging / pageSettings
App-level pagination or remote source
RevoGrid can render large data virtually; add a pager only if the product needs one.
allowSorting / sortSettings
RevoGrid sorting config
Start with simple sorting, then port custom sort logic.
allowFiltering / filterSettings
RevoGrid filtering
Start with built-in filters, then port custom filter UI/logic.
selectionSettings
RevoGrid selection workflows
Test row, cell, range, and keyboard behavior explicitly.
toolbar
App toolbar + grid methods/events
Keep toolbar UI outside the grid unless it is truly cell content.
DataManager / adaptors
Application data service
Fetch, page, sort, and filter in your app or a RevoGrid remote workflow.
queryCellInfo
cellTemplate, column types, or events
Prefer declarative templates for display logic.
actionBegin / actionComplete
RevoGrid lifecycle events
Map by workflow: edit, filter, sort, source update, scroll, export.
Syncfusion modules/services
RevoGrid props, events, plugins, and Pro modules
Migrate behavior, not service names.
The most important change is mental: Syncfusion Grid is commonly assembled from framework components and injected feature services. RevoGrid can be configured directly as a browser-native element:
A successful grid migration should avoid a large rewrite. Treat it as a set of small, testable layers.
Phase
Goal
Output
1. Inventory
Understand how Syncfusion is used today.
List of columns, templates, edit settings, events, toolbar actions, data manager usage, selection rules, export flows, and advanced features.
2. Data and columns
Render the same data in RevoGrid.
source and columns working without custom UI.
3. Sizing and layout
Match viewport, widths, pinned/frozen columns, row height, and theme basics.
Grid looks structurally correct.
4. Editing and validation
Reconnect user edits to application state.
beforeedit / afteredit handlers and locked columns.
5. Templates and formatting
Port custom display logic.
Cell templates, framework renderers, and reusable column types.
6. Filtering, sorting, and paging
Rebuild data operations.
Built-in or custom filtering/sorting behavior and optional pagination.
7. Selection and clipboard
Recreate spreadsheet-like UX.
Tested keyboard, range, copy/paste, and row selection flows.
8. Remote data
Replace DataManager and adaptors intentionally.
Application data service or RevoGrid remote workflow.
9. Advanced workflows
Move grouping, hierarchy, aggregate, pivot, export, Gantt, or scheduler features.
One workflow migrated at a time.
10. Acceptance tests
Prove behavior with real user journeys.
Regression tests before removing Syncfusion.
Do not start with templates
If the first migration commit includes every template, editor, toolbar action, DataManager adaptor, and advanced workflow, it becomes hard to debug. Start with plain text cells. Once rows, columns, sizing, and scrolling work, add custom behavior back.
For most client-side grids, this is a rename. You do not need to reshape records just because you are changing grid libraries.
You should review your row model only if your Syncfusion implementation depends heavily on DataManager, remote adaptors, generated group rows, aggregate rows, hierarchy rows, batch edit state, or server-side query objects. Those should be migrated as explicit workflows instead of hidden inside the first rendering pass.
Step 2: Move Syncfusion columns to RevoGrid columns
For larger migrations, it can help to write a temporary converter. This lets you render a first RevoGrid version before manually refining every column.
Use this only as a bridge. It should not become your final abstraction. The final RevoGrid column model should be explicit, typed, and adapted to your product behavior.
Keep columns stable with useMemo unless the column model really changes. This avoids unnecessary wrapper updates and matches the React Data Grid guide.
Many Syncfusion Svelte/SvelteKit setups use EJ2 JavaScript components directly or custom wrappers. RevoGrid has a direct Svelte path, so the migration can usually be simplified:
Use the Svelte Data Grid guide for installation and framework details.
Step 5: Replace feature injection with RevoGrid configuration
Syncfusion features are often enabled with modules or services. For example, React code may inject Page, Sort, Filter, Edit, Toolbar, and VirtualScroll into the grid.
In RevoGrid, you should not try to recreate a service injection layer. Instead, migrate each feature to the RevoGrid property, event, plugin, or Pro module that matches the user workflow.
Syncfusion service/module
RevoGrid migration path
Page
Use app-level pagination or remote data. Only add a pager if the product needs pages.
Sort
Use RevoGrid sortable columns and sorting events.
Filter
Enable filter and configure column filters.
Edit
Use RevoGrid editing, readonly, beforeedit, and afteredit.
Toolbar
Move toolbar UI to the application layer.
VirtualScroll
RevoGrid virtualizes rows and columns as a core rendering model.
Group
Migrate grouping as a separate workflow.
Aggregate
Rebuild summaries as app-level computed rows, custom footer UI, or Pro workflows.
Resize / Reorder
Rebuild column sizing and ordering behavior with RevoGrid column APIs.
ExcelExport / PdfExport
Use RevoGrid export workflows or custom server-side export where needed.
This step is important because Syncfusion's API is feature-service oriented, while RevoGrid's mental model is grid props, events, plugins, and application composition.
RevoGrid emits DOM custom events from the grid element. The most common migration is to replace Syncfusion edit callbacks with RevoGrid edit lifecycle events:
Step 7: Migrate templates, formatters, and custom cells
Do not copy Syncfusion templates directly into RevoGrid. Syncfusion templates, valueAccessor, queryCellInfo, and format are built around Syncfusion's rendering lifecycle. RevoGrid cell templates receive RevoGrid cell props and should be written for RevoGrid directly.
The clean path is:
Keep raw data in source.
Move display-only formatting into a cellTemplate or column type.
Move interactive UI into a framework renderer only when the cell really needs framework state.
Keep heavy calculations outside the cell render path.
Use native cell templates for simple formatting. Use framework renderers when you need React, Vue, Angular, or Svelte components inside cells. The Cell Renderer, React Cell Template, and Vue renderer examples are the best next pages.
If your Syncfusion grid uses normal inline editing, migrate to RevoGrid's cell editing first. Keep validation in beforeedit and state synchronization in afteredit.
If your Syncfusion grid uses mode: 'Dialog', treat that dialog as application UI. Keep RevoGrid focused on displaying and selecting rows, then open your own modal or form to edit the selected record.
That approach is usually cleaner than trying to force a grid-level dialog editing model into a different grid library.
Port comparator-heavy implementations carefully. First migrate default sorting. Then reintroduce custom compare logic only where product behavior requires it.
Syncfusion grids often use allowPaging and pageSettings. RevoGrid is usually a better fit when you let the grid virtualize rows and columns rather than forcing a page-by-page UI for local data.
Keep pagination only if it is part of the product workflow, such as audit screens, server-side datasets, billing tables, or APIs that are page-based.
For client-side pagination, slice the source in your app:
For remote pagination, keep page, sort, and filter state in your application layer, fetch the next segment from the server, then assign the result to grid.source.
The exact event strategy depends on whether you want local operations, remote operations, or a hybrid. The important point is architectural: keep server querying in your application data layer, not embedded in a vendor-specific data abstraction.
This makes the migration cleaner because business commands stay in your application, while the grid focuses on rendering, editing, scrolling, selection, and cell-level interaction.
Step 12: Migrate selection, clipboard, and keyboard behavior
Syncfusion selectionSettings can cover row selection, cell selection, checkbox selection, persistence, and multi-select behavior.
Do not treat this as a single prop rename. Selection is a user workflow.
Audit these questions before migrating:
Does the user select rows, cells, ranges, or all three?
Is selection controlled by application state?
Are checkboxes used as data fields, selection controls, or both?
Does selection persist across filtering, paging, or remote reloads?
Does copy/paste include raw values, formatted values, or hidden columns?
Are keyboard shortcuts part of the expected UX?
For simple row actions, keep selected row IDs in your application state. For spreadsheet-like behavior, test cell focus, range selection, copy/paste, keyboard navigation, and edit activation as acceptance criteria.
Remote pagination, infinite scroll, server-side grouping, or Pivot server-side contracts.
This is usually where a migration becomes product-specific. Get the basic grid running first, then migrate each advanced workflow with a focused acceptance test.
Create a RevoGrid screen next to the existing Syncfusion Grid screen.
Copy the same data array into source.
Convert Syncfusion columns to RevoGrid columns with only prop, name, width, and read-only settings.
Confirm virtualization, sizing, scrolling, and first paint.
Enable editing and migrate edit validation.
Add filtering and sorting.
Decide whether paging is still needed or whether virtual scrolling is enough.
Replace DataManager with app-level data loading or RevoGrid remote workflows.
Port display templates and formatters.
Port custom editors.
Rebuild toolbar actions in the application layer.
Reconnect application state synchronization.
Migrate selection, clipboard, export, grouping, tree, pivot, and other advanced workflows.
Run browser tests around the real user flows before removing Syncfusion.
The goal is not to make the first RevoGrid commit feature-complete. The goal is to get the same data on screen quickly, then move behavior in small, testable slices.
Render the grid with plain text first. Once rows, columns, and sizing are correct, migrate templates. This makes it clear whether a problem belongs to data mapping or cell UI.
Treating editSettings as a direct RevoGrid equivalent
Syncfusion enables editing through editSettings. RevoGrid columns are editable unless the grid or column is read-only. During migration, audit which columns should be locked and set readonly: true where needed.
DataManager can hide a lot of server-side behavior: paging, sorting, filtering, search, CRUD, and request shaping. Rebuild that contract in your application data layer. Do not hide it inside a compatibility wrapper unless you are using the wrapper only temporarily.
In Syncfusion, toolbar commands often live inside grid configuration. In RevoGrid, keep toolbar actions in your product UI and connect them to grid state, selected rows, draft changes, export endpoints, or public grid methods.
Many Syncfusion screens use paging because it was part of the original implementation. RevoGrid's virtualized rendering may make local paging unnecessary. Keep paging only if users expect pages or the backend requires page-based loading.
Keep source clean. Put display formatting in cell templates or column types. This makes filtering, sorting, editing, and export easier to reason about.
Grouping, hierarchy, aggregates, batch editing, server-side data, export, and pivoting are different workflows. Migrate them separately with clear acceptance criteria.
RevoGrid works across frameworks because the core is a Web Component. That is an advantage, but it also means SSR and browser-only behavior should be handled intentionally. In SSR frameworks, load the grid on the client side.
That is the right first migration target. After that, add back the workflows that make your grid valuable: editing, validation, filtering, sorting, templates, selection, export, remote data, and advanced modules.
Yes, for many applications. RevoGrid is a strong fit when you need a fast JavaScript data grid with virtualized rendering, editable cells, framework support, custom renderers, events, and a path to advanced Pro workflows. Highly Syncfusion-specific implementations that depend on DataManager, toolbar CRUD, custom templates, grouping, hierarchy, export, or server-side operations should be migrated workflow by workflow.
Usually no. If your existing Syncfusion Grid uses an array of plain row objects in dataSource, that array can usually become RevoGrid source. Most migration work is in columns, templates, custom editing, event handling, selection behavior, and advanced grid features.
Start with dataSource to source and Syncfusion columns to RevoGrid columns. Map field to prop, headerText to name, and basic width/read-only settings. Do not start with templates, DataManager, toolbar commands, or advanced workflows.
Does RevoGrid work in React, Vue, Angular, and Svelte?
Yes. RevoGrid has a Web Component foundation and framework integration guides for React, Vue, Angular, Svelte, TypeScript, and plain JavaScript.
Do not port DataManager directly. Move data fetching, sorting, filtering, paging, and CRUD requests into your application data layer. Then assign the loaded records to RevoGrid source and use RevoGrid events to update your query state.
Keep draft changes in your application store. Listen to RevoGrid edit events, collect changed values, and save them when the user clicks your own Save or Update button. This keeps batch behavior explicit and testable.
Should I migrate all Syncfusion features in one release?
No. Render the basic grid first, then migrate editing, filtering, sorting, templates, selection, export, remote data, and advanced workflows in separate, testable steps.