Migration Guide

Learn more about migrating to the current version.

enable_logs now defaults to true, and the Godot logger integration no longer captures Godot's log output as Sentry Logs automatically. See Changes to logging below.

App Hang Tracking (Apple platforms) and ANR (Application Not Responding) detection (Android) are now separate features, and both are enabled by default. See App Hang Tracking and ANR detection below.

The deprecated SentryOptions.experimental.enable_logs and SentryOptions.experimental.before_send_log properties have been removed. If you still reference them, use SentryOptions.enable_logs and SentryOptions.before_send_log instead.

The Godot logger options are now grouped under SentryOptions.godot_logger. All options that were previously available as SentryOptions.logger_* properties have moved there. For example, logger_event_mask becomes godot_logger.event_mask and logger_limits becomes godot_logger.limits. The old flat logger_* properties still work as deprecated aliases that forward to the new object. As part of the move, logger_include_source was renamed to godot_logger.include_source_context. Existing Project Settings under Sentry > Logger are migrated automatically to Sentry > Godot Logger.

By default, the Godot logger integration no longer sends Godot log output to Sentry Logs. If you want to capture those logs, you must opt in by setting godot_logger.log_mask to the event types you want to send:

Copied
SentrySDK.init(func(options: SentryOptions) -> void:
	options.godot_logger.log_mask = SentryOptions.MASK_ERROR | SentryOptions.MASK_SCRIPT | SentryOptions.MASK_MESSAGE
)

The GodotErrorMask enum was renamed to GodotLoggerEventMask, and a new MASK_MESSAGE flag captures log messages such as print() statements. Update the enum name if you reference these masks in code.

logger_messages_as_breadcrumbs is deprecated. Set the MASK_MESSAGE flag in godot_logger.breadcrumb_mask instead — it's included in the default mask.

App Hang Tracking now applies to Apple platforms (iOS and macOS) only and is enabled by default; set SentryOptions.enable_app_hang_tracking to false to opt out. Its options were also renamed to align with other SDKs: app_hang_tracking is now enable_app_hang_tracking, and app_hang_timeout_sec is now app_hang_timeout_ms, configured in milliseconds. The old names remain as deprecated aliases, and existing Project Settings are migrated automatically (converting the timeout from seconds to milliseconds).

On Android, ANR (Application Not Responding) detection is a separate feature, now enabled by default and configured through Android-specific options under SentryOptions.android, or in the Project Settings under Sentry > Android > Application Not Responding. Set SentryOptions.android.enable_anr_detection to false to opt out.

The minimum supported Godot Engine version has been updated to 4.5-stable. This requirement will remain fixed for the 1.x release series. The log file is no longer required for script error detection.

We redesigned breadcrumbs API for a cleaner interface. See Changes to breadcrumbs API below.

Configuration script support and SentryConfiguration class are removed. Instead, please use manual initialization with a configuration callback, if you need to set up SDK from code. See Changes to programmatic configuration below.

The attach_screenshot and screenshot_level options have moved to the experimental section while we're still improving things. If you previously had it enabled, you will need to re-enable it in its new location. Testing is recommended if you want to use this in production.

enabled and disabled_in_editor_play project settings were renamed to auto_init and skip_auto_init_on_editor_play for clarity.

Previously, add_breadcrumb() method accepted 5 parameters (3 of which were strings), making it confusing to use. The new approach uses a dedicated SentryBreadcrumb class:

Copied
var crumb := SentryBreadcrumb.create("Something happened")
crumb.type = "info"
crumb.set_data({"some": "data"})
SentrySDK.add_breadcrumb(crumb)

For simple breadcrumbs, you can use a one-liner:

Copied
SentrySDK.add_breadcrumb(SentryBreadcrumb.create("Something happened"))

Configuration scripts and the SentryConfiguration class have been removed. To configure the SDK programmatically, you must initialize it manually. The earliest point for initialization is within the MainLoop._initialize() method. Here's how you can do it:

  1. Disable Auto Init in Godot's Project Settings window under Sentry category.
  2. Create a main loop script with a class_name attribute, and init Sentry inside _initialize() method.
Copied
class_name MyMainLoop
extends SceneTree

func _initialize() -> void:
	# Sentry initialization
	SentrySDK.init(func(options: SentryOptions) -> void:
		options.release = "my-game@1.2.3"
		options.before_send = _before_send
	)

	# Post-init configuration
	SentrySDK.add_attachment(...)
	# ...

func _before_send(ev: SentryEvent) -> SentryEvent:
	# Return the event (with or without modifications) or null to skip reporting.
	return ev
  1. Assign your main loop type in Godot's Project Settings under Application > Run > Main Loop Type ("MyMainLoop" in the example code).
Was this helpful?
Help improve this content
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").