diff --git a/Cargo.toml b/Cargo.toml
index a1d795c..d2e79f1 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -18,7 +18,7 @@ serializable = ["serde"]
 [dependencies]
 markdown = "1.0.0-alpha.7"
 serde = { version = "1", optional = true }
-swc_core = { version = "0.59.0", features = [
+swc_core = { version = "0.69.0", features = [
   "ecma_ast",
   "ecma_visit",
   "ecma_codegen",
diff --git a/src/mdx_plugin_recma_jsx_rewrite.rs b/src/mdx_plugin_recma_jsx_rewrite.rs
index 09b7221..65b5aa4 100644
--- a/src/mdx_plugin_recma_jsx_rewrite.rs
+++ b/src/mdx_plugin_recma_jsx_rewrite.rs
@@ -473,7 +473,7 @@ impl<'a> State<'a> {
                     decl.function.body.as_mut().unwrap()
                 }
                 Func::Arrow(arr) => {
-                    if let BlockStmtOrExpr::Expr(expr) = &mut arr.body {
+                    if let BlockStmtOrExpr::Expr(expr) = &mut *arr.body {
                         let block = BlockStmt {
                             stmts: vec![Stmt::Return(ReturnStmt {
                                 arg: Some(expr.take()),
@@ -481,7 +481,7 @@ impl<'a> State<'a> {
                             })],
                             span: DUMMY_SP,
                         };
-                        arr.body = BlockStmtOrExpr::BlockStmt(block);
+                        arr.body = Box::new(BlockStmtOrExpr::BlockStmt(block));
                     }
                     arr.body.as_mut_block_stmt().unwrap()
                 }