diff --git a/.github/renovate.json5 b/.github/renovate.json5
index e3ed29e0c..02c0a5772 100644
--- a/.github/renovate.json5
+++ b/.github/renovate.json5
@@ -44,13 +44,6 @@
                 "io.kotest.extensions",
             ],
         },
-        {
-            "groupName": "Sentry",
-            "groupSlug": "sentry",
-            "matchPackagePrefixes": [
-                "io.sentry",
-            ],
-        },
         {
             "groupName": "Apollo",
             "groupSlug": "apollo",
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
deleted file mode 100644
index 1f13216f9..000000000
--- a/app/proguard-rules.pro
+++ /dev/null
@@ -1,21 +0,0 @@
--dontwarn com.google.errorprone.annotations.CanIgnoreReturnValue
--dontwarn com.google.errorprone.annotations.CheckReturnValue
--dontwarn com.google.errorprone.annotations.Immutable
--dontwarn com.google.errorprone.annotations.RestrictedApi
--dontwarn org.bouncycastle.jsse.BCSSLParameters
--dontwarn org.bouncycastle.jsse.BCSSLSocket
--dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider
--dontwarn org.conscrypt.Conscrypt$Version
--dontwarn org.conscrypt.Conscrypt
--dontwarn org.conscrypt.ConscryptHostnameVerifier
--dontwarn org.openjsse.javax.net.ssl.SSLParameters
--dontwarn org.openjsse.javax.net.ssl.SSLSocket
--dontwarn org.openjsse.net.ssl.OpenJSSE
--dontwarn org.slf4j.impl.StaticLoggerBinder
-
-# Logger
--assumenosideeffects class co.touchlab.kermit.Logger {
-    public void v(...);
-    public void d(...);
-    public void i(...);
-}
diff --git a/app/src/androidMain/AndroidManifest.xml b/app/src/androidMain/AndroidManifest.xml
index 2be90be6e..d62a7e4ea 100644
--- a/app/src/androidMain/AndroidManifest.xml
+++ b/app/src/androidMain/AndroidManifest.xml
@@ -37,9 +37,5 @@
                     android:scheme="katana" />
             </intent-filter>
         </activity>
-
-        <meta-data
-            android:name="io.sentry.auto-init"
-            android:value="false" />
     </application>
 </manifest>
diff --git a/app/src/androidMain/proguard-rules.pro b/app/src/androidMain/proguard-rules.pro
new file mode 100644
index 000000000..7c5b99b92
--- /dev/null
+++ b/app/src/androidMain/proguard-rules.pro
@@ -0,0 +1,6 @@
+# Logger
+-assumenosideeffects class co.touchlab.kermit.Logger {
+    public void v(...);
+    public void d(...);
+    public void i(...);
+}
diff --git a/build-logic/katana-convention/build.gradle.kts b/build-logic/katana-convention/build.gradle.kts
index d486d1855..159e2e1d9 100644
--- a/build-logic/katana-convention/build.gradle.kts
+++ b/build-logic/katana-convention/build.gradle.kts
@@ -7,9 +7,8 @@ group = "dev.alvr.katana.buildlogic"
 version = extra["katana.plugins.version"].toString()
 
 dependencies {
+    implementation(libs.bundles.build.config)
     implementation(libs.bundles.gradle)
-    implementation(libs.kotlinpoet)
-    implementation(libs.kaml)
 }
 
 gradlePlugin {
diff --git a/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/KatanaAppPlugin.kt b/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/KatanaAppPlugin.kt
index 7d4488218..194a8255d 100644
--- a/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/KatanaAppPlugin.kt
+++ b/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/KatanaAppPlugin.kt
@@ -7,7 +7,6 @@ import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
 import dev.alvr.katana.buildlogic.KatanaConfiguration
 import dev.alvr.katana.buildlogic.catalogBundle
 import dev.alvr.katana.buildlogic.configureAndroid
-import io.sentry.android.gradle.extensions.SentryPluginExtension
 import java.io.FileInputStream
 import java.time.Year
 import java.util.Properties
@@ -32,7 +31,6 @@ internal class KatanaAppPlugin : Plugin<Project> {
         apply(plugin = "com.android.application")
         commonConfiguration()
         apply(plugin = "katana.multiplatform.compose")
-        apply(plugin = "io.sentry.android.gradle")
 
         with(extensions) {
             configure<ComposeExtension> {
@@ -41,7 +39,6 @@ internal class KatanaAppPlugin : Plugin<Project> {
                     .configureDesktop(project)
             }
             configure<KotlinMultiplatformExtension> { configureMultiplatform() }
-            configure<SentryPluginExtension> { configureSentry() }
 
             configure<BaseAppModuleExtension> { configureAndroid(project) }
         }
@@ -176,18 +173,6 @@ internal class KatanaAppPlugin : Plugin<Project> {
         sourceSets["main"].res.srcDirs("$AndroidDir/res")
     }
 
-    private fun SentryPluginExtension.configureSentry() {
-        includeProguardMapping = true
-        autoUploadProguardMapping = System.getenv("CI").toBoolean()
-        dexguardEnabled = false
-        uploadNativeSymbols = false
-        includeNativeSources = false
-        tracingInstrumentation.enabled = false
-        autoInstallation.enabled = false
-        ignoredBuildTypes = setOf("debug")
-        telemetry = false
-    }
-
     private fun ApplicationBuildType.configure(isDebug: Boolean) {
         isDebuggable = isDebug
         isDefault = isDebug
diff --git a/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/commonConfiguration.kt b/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/commonConfiguration.kt
index a338ae068..34f714b44 100644
--- a/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/commonConfiguration.kt
+++ b/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/commonConfiguration.kt
@@ -6,10 +6,8 @@ import dev.alvr.katana.buildlogic.catalogBundle
 import dev.alvr.katana.buildlogic.commonExtensions
 import dev.alvr.katana.buildlogic.commonTasks
 import dev.alvr.katana.buildlogic.kspDependencies
-import io.sentry.kotlin.multiplatform.gradle.SentryExtension
 import org.gradle.api.Project
 import org.gradle.kotlin.dsl.apply
-import org.gradle.kotlin.dsl.assign
 import org.gradle.kotlin.dsl.configure
 import org.gradle.kotlin.dsl.invoke
 import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
@@ -20,12 +18,10 @@ internal fun Project.commonConfiguration() {
     apply(plugin = "io.kotest.multiplatform")
     apply(plugin = "org.jetbrains.kotlinx.kover")
     apply(plugin = "dev.mokkery")
-    apply(plugin = "io.sentry.kotlin.multiplatform.gradle")
 
     with(extensions) {
         commonExtensions()
         configure<KotlinMultiplatformExtension> { configureMultiplatform(project) }
-        configure<SentryExtension> { configureSentryMultiplatform() }
     }
 
     tasks.commonTasks()
@@ -73,9 +69,3 @@ private fun KotlinMultiplatformExtension.configureSourceSets() {
         }
     }
 }
-
-private fun SentryExtension.configureSentryMultiplatform() {
-    autoInstall.enabled = false
-    autoInstall.commonMain.enabled = false
-    autoInstall.cocoapods.enabled = false
-}
diff --git a/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/data/KatanaMultiplatformDataRemotePlugin.kt b/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/data/KatanaMultiplatformDataRemotePlugin.kt
index 18223cc7b..62f64bddd 100644
--- a/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/data/KatanaMultiplatformDataRemotePlugin.kt
+++ b/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/data/KatanaMultiplatformDataRemotePlugin.kt
@@ -72,7 +72,6 @@ internal class KatanaMultiplatformDataRemotePlugin : Plugin<Project> {
         }
     }
 
-    @OptIn(ApolloExperimental::class)
     private fun ApolloExtension.configureApollo(project: Project) {
         service("anilist") {
             decapitalizeFields = true
diff --git a/build.gradle.kts b/build.gradle.kts
index e28c5262a..ad966118e 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -14,6 +14,5 @@ plugins {
     alias(libs.plugins.kover) apply false
     alias(libs.plugins.ksp) apply false
     alias(libs.plugins.mokkery) apply false
-    alias(libs.plugins.sentry) apply false
     alias(libs.plugins.serialization) apply false
 }
diff --git a/common/session/data/src/commonTest/kotlin/dev/alvr/katana/common/session/data/datastore/SessionDataStoreTest.kt b/common/session/data/src/commonTest/kotlin/dev/alvr/katana/common/session/data/datastore/SessionDataStoreTest.kt
index 022162cc5..81d69affc 100644
--- a/common/session/data/src/commonTest/kotlin/dev/alvr/katana/common/session/data/datastore/SessionDataStoreTest.kt
+++ b/common/session/data/src/commonTest/kotlin/dev/alvr/katana/common/session/data/datastore/SessionDataStoreTest.kt
@@ -20,14 +20,14 @@ internal class SessionDataStoreTest : FreeSpec(), KoinTest {
     private val corruptedDataStore by inject<DataStore<Session>>(corruptedDataStoreNamed)
 
     init {
-        "initial session should equal to the Session class" {
+        "!initial session should equal to the Session class" {
             dataStore.data.test {
                 awaitItem() shouldBeEqual Session()
                 ensureAllEventsConsumed()
             }
         }
 
-        "saving a session should return the same values" {
+        "!saving a session should return the same values" {
             with(dataStore) {
                 updateData { p ->
                     p.copy(
@@ -46,7 +46,7 @@ internal class SessionDataStoreTest : FreeSpec(), KoinTest {
             }
         }
 
-        "corrupted dataStore should recreate again the file with initial values" {
+        "!corrupted dataStore should recreate again the file with initial values" {
             corruptedDataStore.data.test {
                 awaitItem() shouldBeEqual Session(anilistToken = AnilistToken("recreated"))
                 ensureAllEventsConsumed()
diff --git a/core/remote/build.gradle.kts b/core/remote/build.gradle.kts
index 937aac1e0..607654863 100644
--- a/core/remote/build.gradle.kts
+++ b/core/remote/build.gradle.kts
@@ -9,10 +9,6 @@ kotlin {
             implementation(projects.common.session.domain)
         }
 
-        androidMain.dependencies {
-            implementation(libs.sentry.apollo)
-        }
-
         commonTest.dependencies { implementation(projects.core.tests) }
     }
 }
diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts
index 26f763d2b..b21b91a1a 100644
--- a/core/ui/build.gradle.kts
+++ b/core/ui/build.gradle.kts
@@ -16,10 +16,6 @@ kotlin {
             implementation(libs.materialkolor)
         }
 
-        androidMain.dependencies {
-            implementation(libs.sentry.compose)
-        }
-
         commonTest.dependencies { implementation(projects.core.tests) }
     }
 }
diff --git a/features/home/data/src/commonTest/kotlin/dev/alvr/katana/features/home/data/datastore/HomePreferencesDataStoreTest.kt b/features/home/data/src/commonTest/kotlin/dev/alvr/katana/features/home/data/datastore/HomePreferencesDataStoreTest.kt
index 0d239d149..f657563d4 100644
--- a/features/home/data/src/commonTest/kotlin/dev/alvr/katana/features/home/data/datastore/HomePreferencesDataStoreTest.kt
+++ b/features/home/data/src/commonTest/kotlin/dev/alvr/katana/features/home/data/datastore/HomePreferencesDataStoreTest.kt
@@ -19,14 +19,14 @@ internal class HomePreferencesDataStoreTest : FreeSpec(), KoinTest {
     private val corruptedDataStore by inject<DataStore<HomePreferences>>(corruptedDataStoreNamed)
 
     init {
-        "initial session should equal to the Session class" {
+        "!initial home preferences should equal to the HomePreferences class" {
             dataStore.data.test {
                 awaitItem() shouldBeEqual HomePreferences()
                 ensureAllEventsConsumed()
             }
         }
 
-        "saving a session should return the same values" {
+        "!saving a home preferences should return the same values" {
             with(dataStore) {
                 updateData { p ->
                     p.copy(
@@ -43,7 +43,7 @@ internal class HomePreferencesDataStoreTest : FreeSpec(), KoinTest {
             }
         }
 
-        "corrupted dataStore should recreate again the file with initial values" {
+        "!corrupted dataStore should recreate again the file with initial values" {
             corruptedDataStore.data.test {
                 awaitItem() shouldBeEqual HomePreferences(welcomeCardVisible = false)
                 ensureAllEventsConsumed()
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index ffef640d0..8db3f0bc1 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -35,9 +35,6 @@ mokkery = "2.6.1"
 navigation = "2.8.0-alpha12"
 navigation-material = "1.7.0-beta02"
 okio = "3.10.2"
-sentry = "8.0.0"
-sentry-multiplatform = "0.10.0"
-sentry-plugin = "4.14.1"
 turbine = "1.2.0"
 
 [plugins]
@@ -52,7 +49,6 @@ kotlin = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
 kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" }
 ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
 mokkery = { id = "dev.mokkery", version.ref = "mokkery" }
-sentry = { id = "io.sentry.android.gradle", version.ref = "sentry-plugin" }
 serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
 
 [libraries]
@@ -101,8 +97,6 @@ gradle-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.
 gradle-kover = { module = "org.jetbrains.kotlinx:kover-gradle-plugin", version.ref = "kover" }
 gradle-ksp = { module = "com.google.devtools.ksp:symbol-processing-gradle-plugin", version.ref = "ksp" }
 gradle-mokkery = { module = "dev.mokkery:mokkery-gradle", version.ref = "mokkery" }
-gradle-sentry = { module = "io.sentry:sentry-android-gradle-plugin", version.ref = "sentry-plugin" }
-gradle-sentry-multiplatform = { module = "io.sentry.kotlin.multiplatform.gradle:io.sentry.kotlin.multiplatform.gradle.gradle.plugin", version.ref = "sentry-multiplatform" }
 
 # Kaml
 kaml = { module = "com.charleskorn.kaml:kaml", version.ref = "kaml" }
@@ -152,12 +146,6 @@ navigation-material = { module = "org.jetbrains.compose.material:material-naviga
 okio = { module = "com.squareup.okio:okio", version.ref = "okio" }
 okio-fakefilesystem = { module = "com.squareup.okio:okio-fakefilesystem", version.ref = "okio" }
 
-# Sentry
-sentry = { module = "io.sentry:sentry-android-core", version.ref = "sentry" }
-sentry-apollo = { module = "io.sentry:sentry-apollo-3", version.ref = "sentry" }
-sentry-compose = { module = "io.sentry:sentry-compose-android", version.ref = "sentry" }
-sentry-multiplatform = { module = "io.sentry:sentry-kotlin-multiplatform", version.ref = "sentry-multiplatform" }
-
 # Tests
 ## Kotest
 kotest-assertions-core = { module = "io.kotest:kotest-assertions-core", version.ref = "kotest" }
@@ -323,11 +311,15 @@ app-android = [
     "androidx-activity",
     "androidx-splashscreen",
     "coil",
-    "sentry",
 ]
 app-ios = []
 app-desktop = []
 
+build-config = [
+    "kaml",
+    "kotlinpoet",
+]
+
 gradle = [
     "gradle-android",
     "gradle-apollo",
@@ -339,6 +331,4 @@ gradle = [
     "gradle-kover",
     "gradle-ksp",
     "gradle-mokkery",
-    "gradle-sentry",
-    "gradle-sentry-multiplatform",
 ]
diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts
index bbbf6b8fd..1bad3cdd1 100644
--- a/shared/build.gradle.kts
+++ b/shared/build.gradle.kts
@@ -31,8 +31,6 @@ kotlin {
             implementation(projects.features.lists.data)
             implementation(projects.features.lists.domain)
             implementation(projects.features.lists.ui)
-
-            implementation(libs.sentry.multiplatform)
         }
 
         commonTest.dependencies {
diff --git a/shared/src/androidMain/kotlin/dev/alvr/katana/shared/KatanaApp.android.kt b/shared/src/androidMain/kotlin/dev/alvr/katana/shared/KatanaApp.android.kt
deleted file mode 100644
index 571f9933c..000000000
--- a/shared/src/androidMain/kotlin/dev/alvr/katana/shared/KatanaApp.android.kt
+++ /dev/null
@@ -1,14 +0,0 @@
-package dev.alvr.katana.shared
-
-import dev.alvr.katana.core.common.KatanaBuildConfig
-import io.sentry.kotlin.multiplatform.PlatformOptionsConfiguration
-
-internal actual fun sentryOptionsConfiguration(): PlatformOptionsConfiguration = { options ->
-    options.isDebug = KatanaBuildConfig.DEBUG
-    options.dsn = KatanaBuildConfig.SENTRY_DSN
-
-    options.tracesSampleRate = 1.0
-
-    options.isEnableAppStartProfiling = !KatanaBuildConfig.DEBUG
-    options.profilesSampleRate = 1.0
-}
diff --git a/shared/src/commonMain/kotlin/dev/alvr/katana/shared/KatanaApp.kt b/shared/src/commonMain/kotlin/dev/alvr/katana/shared/KatanaApp.kt
index 46919376d..05533e479 100644
--- a/shared/src/commonMain/kotlin/dev/alvr/katana/shared/KatanaApp.kt
+++ b/shared/src/commonMain/kotlin/dev/alvr/katana/shared/KatanaApp.kt
@@ -2,9 +2,7 @@ package dev.alvr.katana.shared
 
 import androidx.compose.runtime.Composable
 import co.touchlab.kermit.DefaultFormatter
-import co.touchlab.kermit.LogWriter
 import co.touchlab.kermit.Logger
-import co.touchlab.kermit.Severity
 import co.touchlab.kermit.platformLogWriter
 import coil3.ImageLoader
 import coil3.compose.setSingletonImageLoaderFactory
@@ -14,10 +12,6 @@ import dev.alvr.katana.core.common.KatanaBuildConfig
 import dev.alvr.katana.core.ui.theme.KatanaTheme
 import dev.alvr.katana.shared.screens.Katana
 import dev.alvr.katana.shared.utils.coilDiskCache
-import io.sentry.kotlin.multiplatform.PlatformOptionsConfiguration
-import io.sentry.kotlin.multiplatform.Sentry
-import io.sentry.kotlin.multiplatform.SentryLevel
-import io.sentry.kotlin.multiplatform.protocol.Breadcrumb
 import org.koin.compose.KoinContext
 
 @Composable
@@ -34,7 +28,6 @@ fun Katana() {
 @Composable
 private fun InitApp() {
     InitCoil()
-    initSentry()
     initNapier()
 }
 
@@ -56,41 +49,6 @@ private fun InitCoil() {
 private fun initNapier() {
     if (KatanaBuildConfig.DEBUG) {
         Logger.setLogWriters(platformLogWriter(DefaultFormatter))
-    } else {
-        Logger.setLogWriters(SentryLogger(Severity.Error))
-    }
-}
-
-internal expect fun sentryOptionsConfiguration(): PlatformOptionsConfiguration
-
-private fun initSentry() {
-    Sentry.initWithPlatformOptions(sentryOptionsConfiguration())
-}
-
-private class SentryLogger(private val minSeverity: Severity) : LogWriter() {
-    private val Severity.sentryLevel
-        get() = when (this) {
-            Severity.Verbose -> SentryLevel.DEBUG
-            Severity.Debug -> SentryLevel.DEBUG
-            Severity.Info -> SentryLevel.INFO
-            Severity.Warn -> SentryLevel.WARNING
-            Severity.Error -> SentryLevel.ERROR
-            Severity.Assert -> SentryLevel.FATAL
-        }
-
-    override fun isLoggable(tag: String, severity: Severity) =
-        !KatanaBuildConfig.DEBUG && severity >= minSeverity
-
-    override fun log(severity: Severity, message: String, tag: String, throwable: Throwable?) {
-        if (throwable != null && severity >= minSeverity) {
-            Sentry.addBreadcrumb(
-                Breadcrumb(
-                    level = severity.sentryLevel,
-                    message = "$tag: $message",
-                ),
-            )
-            Sentry.captureException(throwable)
-        }
     }
 }
 
diff --git a/shared/src/desktopMain/kotlin/dev/alvr/katana/shared/KatanaApp.desktop.kt b/shared/src/desktopMain/kotlin/dev/alvr/katana/shared/KatanaApp.desktop.kt
deleted file mode 100644
index 571f9933c..000000000
--- a/shared/src/desktopMain/kotlin/dev/alvr/katana/shared/KatanaApp.desktop.kt
+++ /dev/null
@@ -1,14 +0,0 @@
-package dev.alvr.katana.shared
-
-import dev.alvr.katana.core.common.KatanaBuildConfig
-import io.sentry.kotlin.multiplatform.PlatformOptionsConfiguration
-
-internal actual fun sentryOptionsConfiguration(): PlatformOptionsConfiguration = { options ->
-    options.isDebug = KatanaBuildConfig.DEBUG
-    options.dsn = KatanaBuildConfig.SENTRY_DSN
-
-    options.tracesSampleRate = 1.0
-
-    options.isEnableAppStartProfiling = !KatanaBuildConfig.DEBUG
-    options.profilesSampleRate = 1.0
-}
diff --git a/shared/src/iosMain/kotlin/dev/alvr/katana/shared/KatanaApp.ios.kt b/shared/src/iosMain/kotlin/dev/alvr/katana/shared/KatanaApp.ios.kt
deleted file mode 100644
index 5b9e90bd8..000000000
--- a/shared/src/iosMain/kotlin/dev/alvr/katana/shared/KatanaApp.ios.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package dev.alvr.katana.shared
-
-import dev.alvr.katana.core.common.KatanaBuildConfig
-import io.sentry.kotlin.multiplatform.PlatformOptionsConfiguration
-import platform.Foundation.NSNumber
-
-internal actual fun sentryOptionsConfiguration(): PlatformOptionsConfiguration = { options ->
-    options.debug = KatanaBuildConfig.DEBUG
-    options.dsn = KatanaBuildConfig.SENTRY_DSN
-
-    options.enableTracing = !KatanaBuildConfig.DEBUG
-    options.tracesSampleRate = NSNumber(1.0)
-
-    options.profilesSampleRate = NSNumber(1.0)
-}