Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions _posts/2026-04-13-reflection-free-jsckson-serializers.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
layout: post
title: 'Enabling reflection-free Jackson serializers by default'
date: 2026-04-13
tags: json serialization jackson performance
synopsis: 'In 3.35, we are going to enable reflection-free Jackson serializers by default.'
author: mariofusco
---

Some time ago, we started experimenting on how to improve the efficiency of JSON serialization and deserialization offered by Jackson and extensively used in Quarkus applications. From a performance point of view, Jackson's main bottleneck is its heavy reliance on Java reflection to access or populate data objects at runtime. To address this issue, we developed a build-time metaprogramming approach that generates reflection-free serializers and deserializers for Jackson.

In https://quarkus.io/blog/quarkus-metaprogramming/[this article] we explained how we implemented this feature in Quarkus and the performance improvements it brings. Since then, we have been continuously working to enhance this feature, fix bugs, and improve compatibility with various Jackson features.

== Configuring reflection-free Jackson serialization

Given the experimental nature of this feature, we initially made it opt-in. To enable reflection-free Jackson serializers and deserializers in your Quarkus application, it is necessary to add the following configuration to your `application.properties` file:

[source,properties]
----
quarkus.rest.jackson.optimization.enable-reflection-free-serializers=true
----

In the past months an increasing number of users have tried this feature, taking advantage of the performance benefits it offers, but also helping us to discover bugs, edge cases, and compatibility issues with various Jackson features that we have addressed one by one. Overall, we have received positive feedback from the community, so we have decided to make the obvious next step.

== Enabling by default in the Quarkus 3.35 release

At the moment the entire Quarkus test suite is passing with this feature enabled, and we have addressed all compatibility issues reported by users so far. Therefore, we have decided to enable this feature by default in the next Quarkus 3.35 release.

In order to cover the broadest possible range of use cases, we invite you to test your applications with this feature enabled, possibly also measuring its impact on performances. If you encounter any issues or have feedback, please report them on our GitHub repository or reach out to us on the Quarkus community channels. This will help us to be more confident about the stability of this feature and ensure a smooth transition for all users.