PackageTrack
Sign in Get early access

chessground

Chess board UI developed for lichess.org. It has no chess logic inside so it can be used for chess variants.

10.1.1 3.2K downloads/mo #4530 most downloaded on pub.dev lichess-org/flutter-chessground

What this package is like to depend on

Last release 1 months ago

26 Jun 2026

Ships fairly regularly

a new release about every 6 weeks

Nearly every release is documented

notes for 73 of 73 stable releases

Nothing withdrawn

no release was ever pulled

3 years old

74 releases · first in 2023

17 releases in the last 12 months

see the full history below

Release timeline

74 releases · Jun 2023 to Jun 2026
2024 2025 2026
Release Pre-release

Releases

latest 60 of 74
  1. 10.1.1 26 Jun 2026
    Release notes
    • Fixed multitouch gesture handling: a second finger could start a new gesture (selecting or moving a piece) while another finger was still resting on the board. The board now tracks the number of active pointers and ignores any gesture while more than one finger is down, even after the finger that started the gesture has been lifted.
    Open source →
  2. 10.1.0 18 Jun 2026
    Release notes
    • Add ChessboardSettings.moveOnRelease: when enabled, a tap-to-move is committed on pointer release instead of pointer press, and a square target follows the finger so the destination can be adjusted before releasing.
    • Add ChessboardColorScheme.copyWith.
    • Add Totoy piece set.
    • Convert all assets to WebP format for better compression and faster loading.
    Open source →
  3. 10.0.3 05 Jun 2026
    Release notes

    Fixed promotion that was not working when ChessboardSettings.enableDrops was set to true (for crazyhouse chess variant). The promotion dialog now shows up correctly.

    Open source →
  4. 10.0.2 04 Jun 2026
    Release notes

    Fixed a bug where pieces from a finished move animation would disappear when the board was reparented (e.g. during an Android predictive-back gesture). The controller now commits a finished or interrupted animation to the static position instead of relying on the animation notifiers staying populated.

    Open source →
  5. 10.0.1 04 Jun 2026
    Release notes

    Fixed a bug where tree shift after an animated capture would leave stale animation pieces.

    Open source →
  6. 10.0.0 03 Jun 2026
    Release notes

    This is a major release with significant internal changes to the board rendering and interaction model, in order to improve performance during gameplay and to simplify the public API.

    It replaces the widget-tree-driven board rendering with a CustomPainter-based approach to bypass Flutter's build and layout phases for frequent interactions (piece selection, moves).

    New

    • ChessboardController is now the public API for driving the interactive board. Position updates, premoves, promotion, user-drawn shapes, and the atomic explosion animation are all managed through the controller instead of through widget rebuilds and GameData callbacks.
    • StaticChessboard is now the single non-interactive board, with its own StaticChessboardSettings and support for shapes, square highlights, touched squares, and a board border.
    • New ChessboardSettings flags: enableDrops, enablePremoves, and canPromoteToKing.
    • Faster hit-testing in Chessboard (HitTestBehavior.opaque).

    See the migration guide and the breaking changes below for details.

    BREAKING CHANGES

    • The interactive Chessboard() constructor now requires a controller: parameter of type ChessboardController instead of separate fen:, game:, and lastMove: parameters. See the migration guide for the before/after pattern.

    • Callbacks (onMove) have been removed from GameData and is now an optional parameter on the Chessboard widget itself.

    • Premovable typedef and GameData.premovable have been removed. Premove state is now managed entirely by ChessboardController. The onSetPremove callback has been removed from Chessboard. Enable or disable premoves via ChessboardSettings.enablePremoves (default true). See the migration guide for the before/after pattern.

    • Position updates now go through the controller instead of rebuilding the Chessboard widget with a new fen. Call ChessboardController.updatePosition(GameData game) to advance the board with animation, updatePosition(game, animate: false) to switch positions instantly (e.g. history navigation), and updatePosition(game, resetPremove: true) to clear any pending premove when jumping to an arbitrary position. The position fen now lives on GameData (alongside lastMove, side to move, valid moves, etc.), so a single object describes the whole board state. Drag-and-drop moves are detected internally by the board, so the redundant translation of a dropped piece is suppressed automatically — the parent no longer passes a lastDrop argument.

    • Chessboard.fixed() has been removed. For a non-interactive board, use StaticChessboard (which now accepts settings, shapes, squareHighlights, onTouchedSquare, and renders an optional border). For a board that is interactive only some of the time (e.g. disabled at the end of a game), use Chessboard and drive its controller with game data whose playerSide is PlayerSide.none. See the migration guide for the before/after pattern.

    • squareHighlights has been removed from Chessboard(). It is now a parameter of StaticChessboard.

    • explosionSquares has been removed from Chessboard(). Use ChessboardController.triggerExplosion() instead.

    • Promotion is now handled fully inside the board. The onPromotionSelection callback has been removed from Chessboard. The promotionMove field and canPromoteToKing flag have been removed from GameData. canPromoteToKing is now a field on ChessboardSettings. The board calls onMove exactly once, after the user has selected a promotion piece, with a fully-resolved NormalMove (promotion role already set). See the migration guide for details.

    • DrawShapeOptions no longer accepts onCompleteShape or onClearShapes callbacks. Shape state drawn by the user is now managed internally by ChessboardController. See the migration guide for the before/after pattern.

    • GameData.droppable (the Droppable record wrapper) has been removed. Pass validDropSquares directly on GameData instead, and set ChessboardSettings(enableDrops: true) to activate the drop target. The Droppable typedef has been removed. See the migration guide for the before/after pattern.

    Open source →
  7. 9.0.0 11 Mar 2026
    Release notes

    BREAKING CHANGES

    • BoardSettings.enableDropMoves has been removed. Use GameData.droppable instead.

    • Add Droppable to GameData. For drop moves, Chessboard will now only call onMove if and only if Droppable.validDropSquares contains the target square. This makes the behavior consistent with normal moves. Note that dropping a pawn on the back rank does not trigger onMove, even if validDropSquares would allow it.

    Open source →
  8. 8.2.1 10 Mar 2026
    Release notes
    • Fix top player promotion selector when canPromoteToKing is true.
    • Preserve the piece animation behaviour even if the system is requesting the animations to be reduced or disabled.
    Open source →
  9. 8.2.0 09 Mar 2026
    Release notes
    • Add canPromoteToKing in GameData to allow promotion to king in variants like Antichess.
    Open source →
  10. 8.1.0 03 Mar 2026
    Release notes
    • Add explosionSquares to Chessboard to show explosion effect on specific squares, useful for variants like atomic chess.
    Open source →
  11. 8.0.1 14 Feb 2026
    Release notes
    • Revert piece is deselected when the board is updated from the parent widget.
    Open source →
  12. 8.0.0 13 Feb 2026
    Release notes
    • Add support for drop moves for crazyhouse chess variant.

    ### BREAKING CHANGES

    • {bool? isDrop} parameter of the onMove callback has been renamed to viaDragAndDrop to be more explicit.
    Open source →
  13. 7.4.2 14 Feb 2026
    Release notes
    • Revert piece is deselected when the board is updated from the parent widget.
    Open source →
  14. 7.4.1 12 Feb 2026
    Release notes
    • Ensure any piece is deselected when the board is updated from the parent widget.
    Open source →
  15. 7.4.0 08 Feb 2026
    Release notes
    • Update dartchess to 0.12.0
    Open source →
  16. 7.3.0 23 Nov 2025
    Release notes
    • New piece sets: firi and xkcd,
    • New board: purple,
    • Fixed Staunty knights that were not correctly centered.
    Open source →
  17. 7.2.0 01 Oct 2025
    Release notes
    • Add RhosGFX piece set.
    • Do not update the square all the time while panning in board editor.
    Open source →
  18. 7.1.6 05 Aug 2025
    Release notes

    Fix promotion selection order if player on top promotes

    Open source →
  19. 7.1.5 25 Jun 2025
    Release notes
    • Fix board image background not aligned with pieces on tablets.
    Open source →
  20. 7.1.4 25 Jun 2025
    Release notes
    • When piece shift method is set to drag, the piece will awlays be deselected when the pointer is released, even if the piece is dropped on the same square.
    Open source →
  21. 7.1.3 09 Jun 2025
    Release notes
    • Make board annotations always on top of shapes.
    Open source →
  22. 7.1.2 03 Apr 2025
    Release notes
    • Fix crash when calling setState in pointerUp, pointerMove or pointerCancel callbacks.
    • flip pieces instead of rotating to keep the shadows in the same direction.
    Open source →
  23. 7.1.1 31 Mar 2025
    Release notes
    • Update dartchess to 0.11.0
    Open source →
  24. 7.1.0 24 Mar 2025
    Release notes
    • Expose 'BoardShapeWidget' class.
    Open source →
  25. 7.0.0 04 Mar 2025
    Release notes
    • Make the hue setting apply only to the board background to avoid changing board highlights colors.
    • Update dependencies
    • Update minimum Dart SDK version to 3.7.0 and minimum Flutter version to 3.29.0
    Open source →
  26. 7.0.0-beta.1 17 Feb 2025 pre-release
    Release notes
    • Update dependencies
    • Update minimum Dart SDK version to 3.7.0 and minimum Flutter version to 3.29.0
    Open source →
  27. 6.3.0 12 Jan 2025
    Release notes
    • Added an onTouchedSquare callback to Chessboard
    • Chessboard now supports highlighting arbitrary squares.
    • StaticChessboard now supports position change animations.
    Open source →
  28. 6.2.3 20 Dec 2024
    Release notes
    • Fix board editor color filter
    Open source →
  29. 6.2.2 19 Dec 2024
    Release notes
    • Fix default value of brightness
    Open source →
  30. 6.2.1 19 Dec 2024
    Release notes
    • Improved the color filter
    • Values of hue and brightness are now precised in the documentation
    • BrightnessHueFilter widget is now exposed.
    Open source →
  31. 6.2.0 19 Dec 2024
    Release notes
    • Add the possibility to change board colors
    Open source →
  32. 6.1.0 19 Nov 2024
    Release notes
    • Added a new DragTargetKind settings to control the appearance of the drag target.
    • Detects if the drag is triggered with a mouse or a touch event, and adjust the drag settings accordingly to provide a better experience.
    • Removed the withValues not yet available in specified dart sdk version.
    Open source →
  33. 6.0.0 09 Nov 2024
    Release notes

    Breaking changes:

    • Removed ChessboardEditorSettings. The ChessboardEditor widget now takes a ChessboardSettings object as a parameter.

    New features:

    • Add a new border settings to show a border around the board.

    Bug fixes:

    • Fixed a timer not properly canceled when the board is disposed.
    Open source →
  34. 5.3.0 31 Oct 2024
    Release notes
    • Added a new StaticChessboard widget that is optimized for scrollable contexts.
    • SolidColorChessboardBackground is now implemented with CustomPaint to improve performance when building a lot of boards.
    • Added a new board colorscheme: ic.
    Open source →
  35. 5.2.0 11 Oct 2024
    Release notes
    • Introduced a ChessgroundImages singleton to precache piece images. This is useful when using the same piece set in multiple places, and to avoid using the global flutter image cache, which can be unpredictable. It should prevent any "blinking" effect that could happen with the Image widget when the image is reloaded from the cache.
    Open source →
  36. 5.1.1 06 Sep 2024
    Release notes
    • Reset animation state when the board is updated. This fixes potential issues where the board would display ghost pieces on some conditions.
    Open source →
  37. 5.1.0 05 Sep 2024
    Release notes
    • Dragging a piece to the same square will now keep the piece selected.
    Open source →
  38. 5.0.0 03 Sep 2024
    Release notes
    • Added another Chessboard.fixed constructor that allows to set the board to a fixed position.
    • Premove state is now lifted up to the parent widget, in order to allow instant play of premoves.
    • Promotion state is now lifted up to the parent widget, in order to allow more control over the promotion dialog.
    • Add symmetric piece set (PieceAssets.symmetric).
    • ChessboardEditor now supports highlighting squares.
    • Flip BoardSettings.dragFeedbackOffset.dy for flipped pieces. Support displaying all pieces upside down based on side to move.
    • Fix: ensure the board background does not overflow the board.

    Breaking changes:

    • Chessboard now require a game parameter of type GameData instead of BoardData.
    • Added required parameters piece and pieceAssets to PieceShape, removed role. Added optional opacity parameter.
    • Remove 'ChessboardState.opponentsPiecesUpsideDown' in favor of ChessboardSettings.pieceOrientationBehavior.
    Open source →
  39. 4.0.0 02 Aug 2024
    Release notes

    New features:

    • Add a ChessboardEditor widget, intended to be used as the basis for a board editor like lichess.org/editor.
    • Add the writeFen helper function.

    Breaking changes:

    • Requires an SDK version of at least 3.3.0.
    • Chessground is now dependant on dartchess. It is only used for the models, and not for the game logic, so Chessground can still be used with any chess library.
    • Board has been renamed to Chessboard, along with other classes.

    Bug fixes:

    • Fix arrow bad shape when new destination is the same as the origin: it now returns a circle.
    • Fix unsetting premoves:
      • When a premove is set, tapping on the same origin square will now unset it.
      • dragging a piece to an invalid square will now unset the premove.
      • dragging a piece off the board will now unset the premove.
    Open source →
  40. 3.2.0 16 Jul 2024
    Release notes
    • Add pieceShiftMethod to BoardSetttings, with possible values: either (default), drag, or tapTwoSquares.
    Open source →
  41. 3.1.2 11 Jul 2024
    Release notes
    • Any simultaneous touch on the board will now cancel the current piece selection or drag.
    Open source →
  42. 3.1.1 10 Jul 2024
    Release notes
    • Allow shapes to be drawn on a non-interactable board.
    • Fix a bug where the board would be stuck after transitioning from a non-interactable board to an interactable one.
    • Selecting a piece will now clear all shapes on the board.
    • Add the scale property to all Shape classes. Use a 0.8 scale for the shapes being drawn on the board to distinguish them from the already drawn ones.
    Open source →
  43. 3.1.0 08 Jul 2024
    Release notes
    • Add an optional scale parameter to arrows (default is scale: 1.0, matching the previous behavior).
    • Implement BoardData.copyWith method to allow updating the board data
    • Implement BoardData equality and hashcode operators
    • Implement BoardSettings equality and hashcode operators
    Open source →
  44. 3.0.0 05 Jul 2024
    Release notes

    Improve board interaction and add support for drawing shapes while playing.

    Playing:

    • pieces are now moved with pointer down events, instead of a tap events (pointer down followed by a pointer up event): this allows to move a piece faster
    • premoves are not anymore cleared when selecting another piece: this matches lichess website behaviour and allow to prepare another move along with the premove that is currently set

    Drawing shapes (experimental)

    • drawing shapes is now possible while keeping the normal board play interaction (before it was either one or another mode)
    • one can draw a shape by holding a finger to an empty square while using a second finger to draw a shape anywhere in the board
    • a double tap on an empty square will clear all shapes at once
    • to clear a single shape is still supported: draw the same shape again
    Open source →
  45. 2.6.4 02 Jul 2024
    Release notes
    • Fix coordinates and board display on devices with RightToLeft Directionality.
    Open source →
  46. 2.6.3 23 May 2024
    Release notes
    • Improve coordinates display on the board.
    Open source →
  47. 2.6.2 14 May 2024
    Release notes
    • Fix borderRadius settings not being applied to the board highlights.
    Open source →
  48. 2.6.1 12 Apr 2024
    Release notes
    • Fix BoardSettings copyWith method.
    Open source →
  49. 2.6.0 12 Apr 2024
    Release notes
    • Add 2 new settings: borderRadius and boxShadow.
    Open source →
  50. 2.5.0 06 Mar 2024
    Release notes
    • Add a new shape type: piece (useful to show promotion hints).
    Open source →
  51. 2.4.1 05 Mar 2024
    Release notes
    • Don't clip board: fix annotations display on edge.
    Open source →
  52. 2.4.0 19 Feb 2024
    Release notes
    • Deprecate BoardTheme and export Background.
    Open source →
  53. 2.3.0 08 Feb 2024
    Release notes
    • Remove handling of android gestures exclusion.
    Open source →
  54. 2.2.1 26 Jan 2024
    Release notes
    • Upgrade fast_immutable_collections to version 10.0.0.
    Open source →
  55. 2.2.0 12 Jan 2024
    Release notes
    • Improve quality of PNG files, fix wrong rendering of some piece set like "Cardinal". More info: https://github.com/lichess-org/flutter-chessground/pull/28.
    • Piece cache size is now rounded to the nearest integer above the actual value.
    Open source →
  56. 2.1.0 27 Oct 2023
    Release notes
    • BoardData.sideToMove is now optional with no default value, as well as BoardData.isCheck and constructor assertion will guarantee they are set when needed.
    Open source →
  57. 2.0.0 27 Oct 2023
    Release notes
    • BoardData.sideToMove is now a required parameter.
    Open source →
  58. 1.6.1 04 Oct 2023
    Release notes
    • Fix missing blindfoldMode to BoardSettings.copyWith
    Open source →
  59. 1.6.0 04 Oct 2023
    Release notes
    • Add blindfold mode
    Open source →
  60. 1.5.3 26 Sep 2023
    Release notes
    • Don't run premove timer if premove is not set
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive