diff --git a/android/gradle.properties b/android/gradle.properties
index f0fcf6cdd8fc72bc76b35e7be0dc622b20c03b0f..408253ceb04c0c7c49b3b9daf597f35b66ce16c1 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,5 +1,5 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
-app.versionName=0.0.26
-app.versionCode=26
+app.versionName=0.0.27
+app.versionCode=27
diff --git a/fastlane/metadata/android/en-US/changelogs/27.txt b/fastlane/metadata/android/en-US/changelogs/27.txt
new file mode 100644
index 0000000000000000000000000000000000000000..52f2179d505f14dcc88966038849680298d1df24
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/27.txt
@@ -0,0 +1 @@
+Avoid print calls in production code.
diff --git a/fastlane/metadata/android/fr-FR/changelogs/27.txt b/fastlane/metadata/android/fr-FR/changelogs/27.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8537dac9f8ac580dac7eee02b1a1c99a901fe7d2
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/27.txt
@@ -0,0 +1 @@
+Supprime les appels à print dans le code de production.
diff --git a/lib/config/default_game_settings.dart b/lib/config/default_game_settings.dart
index 3c7798badd6ca51da472fc2148ae47dbbd56de87..f8426a7f7fefdc7f754e79f0ff6a716ae61391c8 100644
--- a/lib/config/default_game_settings.dart
+++ b/lib/config/default_game_settings.dart
@@ -1,3 +1,5 @@
+import 'package:jeweled/utils/tools.dart';
+
 class DefaultGameSettings {
   static const List<String> availableParameters = [
     'boardSize',
@@ -38,7 +40,7 @@ class DefaultGameSettings {
         return DefaultGameSettings.allowedColorsCountValues;
     }
 
-    print('Did not find any available value for game parameter "$parameterCode".');
+    printlog('Did not find any available value for game parameter "$parameterCode".');
     return [];
   }
 
diff --git a/lib/config/default_global_settings.dart b/lib/config/default_global_settings.dart
index e006915bb4e9df4edbd70c1847bcf40e3cff0d81..28fac839ae6f6b8f7bdfe6c32c4737a6a7048ee8 100644
--- a/lib/config/default_global_settings.dart
+++ b/lib/config/default_global_settings.dart
@@ -1,3 +1,5 @@
+import 'package:jeweled/utils/tools.dart';
+
 class DefaultGlobalSettings {
   static const List<String> availableParameters = [
     'colorsTheme',
@@ -60,7 +62,7 @@ class DefaultGlobalSettings {
         return DefaultGlobalSettings.allowedGraphicThemeValues;
     }
 
-    print('Did not find any available value for global parameter "$parameterCode".');
+    printlog('Did not find any available value for global parameter "$parameterCode".');
     return [];
   }
 }
diff --git a/lib/cubit/game_cubit.dart b/lib/cubit/game_cubit.dart
index c7d17e2e84baa2cf0c78999441386f514da8f842..a0b81fd1ffec52a90ead3e2a572d6e5fbd27f3db 100644
--- a/lib/cubit/game_cubit.dart
+++ b/lib/cubit/game_cubit.dart
@@ -7,6 +7,7 @@ import 'package:jeweled/models/game.dart';
 import 'package:jeweled/models/cell_location.dart';
 import 'package:jeweled/models/settings_game.dart';
 import 'package:jeweled/models/settings_global.dart';
+import 'package:jeweled/utils/tools.dart';
 
 part 'game_state.dart';
 
@@ -133,7 +134,7 @@ class GameCubit extends HydratedCubit<GameState> {
     refresh();
 
     if (!state.currentGame.hasAtLeastOneAvailableBlock()) {
-      print('no more block found. finish game.');
+      printlog('no more block found. finish game.');
       updateGameIsFinished(true);
     }
   }
diff --git a/lib/cubit/settings_game_cubit.dart b/lib/cubit/settings_game_cubit.dart
index d37412e9269a3172961814018ea7752dc719ac18..0aa8b0afe46b42fe7bef9e0ab1df9c602260aae3 100644
--- a/lib/cubit/settings_game_cubit.dart
+++ b/lib/cubit/settings_game_cubit.dart
@@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
 import 'package:hydrated_bloc/hydrated_bloc.dart';
 
 import 'package:jeweled/models/settings_game.dart';
+import 'package:jeweled/utils/tools.dart';
 
 part 'settings_game_state.dart';
 
@@ -34,8 +35,8 @@ class GameSettingsCubit extends HydratedCubit<GameSettingsState> {
   }
 
   void setParameterValue(String code, int value) {
-    print('GameSettingsCubit.setParameterValue');
-    print('code: $code  / value: $value');
+    printlog('GameSettingsCubit.setParameterValue');
+    printlog('code: $code  / value: $value');
 
     int boardSize = code == 'boardSize' ? value : getParameterValue('boardSize');
     int colorsCount = code == 'colorsCount' ? value : getParameterValue('colorsCount');
diff --git a/lib/cubit/settings_global_cubit.dart b/lib/cubit/settings_global_cubit.dart
index 279406f49863f1f443e953440c5958f8ed0f05a0..181364238f56ea748d6eeb743e7da0e2002578f8 100644
--- a/lib/cubit/settings_global_cubit.dart
+++ b/lib/cubit/settings_global_cubit.dart
@@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
 import 'package:hydrated_bloc/hydrated_bloc.dart';
 
 import 'package:jeweled/models/settings_global.dart';
+import 'package:jeweled/utils/tools.dart';
 
 part 'settings_global_state.dart';
 
@@ -34,8 +35,8 @@ class GlobalSettingsCubit extends HydratedCubit<GlobalSettingsState> {
   }
 
   void setParameterValue(String code, int value) {
-    print('GlobalSettingsCubit.setParameterValue');
-    print('code: $code  / value: $value');
+    printlog('GlobalSettingsCubit.setParameterValue');
+    printlog('code: $code  / value: $value');
 
     int colorsTheme = code == 'colorsTheme' ? value : getParameterValue('colorsTheme');
     int graphicTheme = code == 'graphicTheme' ? value : getParameterValue('graphicTheme');
diff --git a/lib/models/game.dart b/lib/models/game.dart
index 8f41596e60d6ca4b5575c415bb963fe28dde6dbc..c302b35382fa1055bcf4d05757feb3df3c453eac 100644
--- a/lib/models/game.dart
+++ b/lib/models/game.dart
@@ -7,6 +7,7 @@ import 'package:jeweled/models/cell_location.dart';
 import 'package:jeweled/models/settings_game.dart';
 import 'package:jeweled/models/settings_global.dart';
 import 'package:jeweled/utils/color_theme.dart';
+import 'package:jeweled/utils/tools.dart';
 
 class Game {
   final GameBoard board;
@@ -195,7 +196,7 @@ class Game {
       }
     }
 
-    print('Board is locked!');
+    printlog('Board is locked!');
     return false;
   }
 
@@ -269,22 +270,22 @@ class Game {
   }
 
   void dump() {
-    print('');
-    print('## Current game dump:');
-    print('');
+    printlog('');
+    printlog('## Current game dump:');
+    printlog('');
     gameSettings.dump();
     globalSettings.dump();
-    print('');
+    printlog('');
     board.dump();
-    print('');
-    print('Game: ');
-    print('  isRunning: $isRunning');
-    print('  isFinished: $isFinished');
-    print('  movesCount: $movesCount');
-    print('  score: $score');
-    print('  availableBlocksCount: $availableBlocksCount');
-    print('  shuffledColors: $shuffledColors');
-    print('');
+    printlog('');
+    printlog('Game: ');
+    printlog('  isRunning: $isRunning');
+    printlog('  isFinished: $isFinished');
+    printlog('  movesCount: $movesCount');
+    printlog('  score: $score');
+    printlog('  availableBlocksCount: $availableBlocksCount');
+    printlog('  shuffledColors: $shuffledColors');
+    printlog('');
   }
 
   @override
diff --git a/lib/models/game_board.dart b/lib/models/game_board.dart
index ee0ffff9d49adaf99dbdc886f6d1a9a962ad51d9..f30f306ca73e61857a87882926990efaddef7953 100644
--- a/lib/models/game_board.dart
+++ b/lib/models/game_board.dart
@@ -2,6 +2,7 @@ import 'dart:math';
 
 import 'package:jeweled/models/game_cell.dart';
 import 'package:jeweled/models/settings_game.dart';
+import 'package:jeweled/utils/tools.dart';
 
 class GameBoard {
   final List<List<GameCell>> cells;
@@ -42,8 +43,8 @@ class GameBoard {
       horizontalRule += '-';
     }
 
-    print('Board:');
-    print(horizontalRule);
+    printlog('Board:');
+    printlog(horizontalRule);
 
     for (int rowIndex = 0; rowIndex < cells.length; rowIndex++) {
       String row = '| ';
@@ -52,10 +53,10 @@ class GameBoard {
       }
       row += ' |';
 
-      print(row);
+      printlog(row);
     }
 
-    print(horizontalRule);
+    printlog(horizontalRule);
   }
 
   @override
diff --git a/lib/models/settings_game.dart b/lib/models/settings_game.dart
index 46182a518ce418dd0a52e18df6dfd127010c7f97..39cdebf29bfe450ca507ed63b2d6b3edb1484011 100644
--- a/lib/models/settings_game.dart
+++ b/lib/models/settings_game.dart
@@ -1,4 +1,5 @@
 import 'package:jeweled/config/default_game_settings.dart';
+import 'package:jeweled/utils/tools.dart';
 
 class GameSettings {
   final int boardSize;
@@ -33,9 +34,9 @@ class GameSettings {
   }
 
   void dump() {
-    print('Settings: ');
-    print('  boardSize: $boardSize');
-    print('  colorsCount: $colorsCount');
+    printlog('Settings: ');
+    printlog('  boardSize: $boardSize');
+    printlog('  colorsCount: $colorsCount');
   }
 
   @override
diff --git a/lib/models/settings_global.dart b/lib/models/settings_global.dart
index 8dd498992571e1dcaf9a66bc86e950908f7992a3..231917c72a9fe26d3c4bbc488ddfe6c64c303520 100644
--- a/lib/models/settings_global.dart
+++ b/lib/models/settings_global.dart
@@ -1,4 +1,5 @@
 import 'package:jeweled/config/default_global_settings.dart';
+import 'package:jeweled/utils/tools.dart';
 
 class GlobalSettings {
   final int colorsTheme;
@@ -33,9 +34,9 @@ class GlobalSettings {
   }
 
   void dump() {
-    print('Settings: ');
-    print('  colorsTheme: $colorsTheme');
-    print('  graphicTheme: $graphicTheme');
+    printlog('Settings: ');
+    printlog('  colorsTheme: $colorsTheme');
+    printlog('  graphicTheme: $graphicTheme');
   }
 
   @override
diff --git a/lib/ui/painters/parameter_painter.dart b/lib/ui/painters/parameter_painter.dart
index c7a6e13a0cf241beb3289859c2d2b2b5c50b68ce..5e4a952b2fd08996067d469cc83a23f5a0f28bb6 100644
--- a/lib/ui/painters/parameter_painter.dart
+++ b/lib/ui/painters/parameter_painter.dart
@@ -9,6 +9,7 @@ import 'package:jeweled/models/settings_game.dart';
 import 'package:jeweled/models/settings_global.dart';
 import 'package:jeweled/utils/color_extensions.dart';
 import 'package:jeweled/utils/color_theme.dart';
+import 'package:jeweled/utils/tools.dart';
 
 class ParameterPainter extends CustomPainter {
   const ParameterPainter({
@@ -39,7 +40,8 @@ class ParameterPainter extends CustomPainter {
     paint.color = isSelected ? borderColorEnabled : borderColorDisabled;
     paint.strokeJoin = StrokeJoin.round;
     paint.strokeWidth = 20 / 100 * canvasSize;
-    canvas.drawRect(Rect.fromPoints(const Offset(0, 0), Offset(canvasSize, canvasSize)), paint);
+    canvas.drawRect(
+        Rect.fromPoints(const Offset(0, 0), Offset(canvasSize, canvasSize)), paint);
 
     // content
     switch (code) {
@@ -56,7 +58,7 @@ class ParameterPainter extends CustomPainter {
         paintGraphicThemeParameterItem(value, canvas, canvasSize);
         break;
       default:
-        print('Unknown parameter: $code/$value');
+        printlog('Unknown parameter: $code/$value');
         paintUnknownParameterItem(value, canvas, canvasSize);
     }
   }
@@ -128,7 +130,7 @@ class ParameterPainter extends CustomPainter {
         gridWidth = 5;
         break;
       default:
-        print('Wrong value for boardSize parameter value: $value');
+        printlog('Wrong value for boardSize parameter value: $value');
     }
 
     final paint = Paint();
@@ -186,7 +188,7 @@ class ParameterPainter extends CustomPainter {
         backgroundColor = Colors.purple;
         break;
       default:
-        print('Wrong value for colorsCount parameter value: $value');
+        printlog('Wrong value for colorsCount parameter value: $value');
     }
 
     final paint = Paint();
@@ -347,7 +349,7 @@ class ParameterPainter extends CustomPainter {
         contentStrings = DefaultGlobalSettings.graphicThemeContentPatternStrings;
         break;
       default:
-        print('Wrong value for colorsCount parameter value: $value');
+        printlog('Wrong value for colorsCount parameter value: $value');
     }
 
     for (int itemValue = 0; itemValue < positions.length; itemValue++) {
diff --git a/lib/utils/tools.dart b/lib/utils/tools.dart
new file mode 100644
index 0000000000000000000000000000000000000000..fd48b2b009b80b22248d6e7f08a63e96c4065bd7
--- /dev/null
+++ b/lib/utils/tools.dart
@@ -0,0 +1,7 @@
+import 'package:flutter/foundation.dart';
+
+void printlog(String message) {
+  if (!kReleaseMode) {
+    debugPrint(message);
+  }
+}
diff --git a/pubspec.lock b/pubspec.lock
index 13f00d7e9037f223d94417fa9e5b7d7d2df4dee0..50bc1071d87ff0f04d58cddb6451e5aaeb726eeb 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -252,10 +252,10 @@ packages:
     dependency: transitive
     description:
       name: provider
-      sha256: "9a96a0a19b594dbc5bf0f1f27d2bc67d5f95957359b461cd9feb44ed6ae75096"
+      sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c
       url: "https://pub.dev"
     source: hosted
-    version: "6.1.1"
+    version: "6.1.2"
   shared_preferences:
     dependency: transitive
     description:
diff --git a/pubspec.yaml b/pubspec.yaml
index e85d05a812f210572c72fbdc44cf2d92160db0a7..d8fb7956bac8006871552156c991c8e48fb19e02 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -3,7 +3,7 @@ description: Jeweled Game
 
 publish_to: 'none'
 
-version: 0.0.26+26
+version: 0.0.27+27
 
 environment:
   sdk: '^3.0.0'