diff --git a/.github/workflows/bioccheck.yaml b/.github/workflows/bioccheck.yaml
index 4284a8e16..5b7a0b54e 100644
--- a/.github/workflows/bioccheck.yaml
+++ b/.github/workflows/bioccheck.yaml
@@ -108,7 +108,7 @@ jobs:
           path: ${{ github.event.repository.name }}
 
       - name: Restore SD cache ๐Ÿ’ฐ
-        uses: actions/cache@v3
+        uses: actions/cache@v4
         with:
           key: sd-${{ runner.os }}-${{ github.event.repository.name }}
           path: ~/.staged.dependencies
diff --git a/.github/workflows/build-check-install.yaml b/.github/workflows/build-check-install.yaml
index f451a8a4f..66aad2b3a 100644
--- a/.github/workflows/build-check-install.yaml
+++ b/.github/workflows/build-check-install.yaml
@@ -271,7 +271,7 @@ jobs:
         if: >-
           inputs.publish-unit-test-report-gh-pages == true
             && github.event_name != 'pull_request'
-        uses: actions/cache@v3
+        uses: actions/cache@v4
         with:
           key: npm-${{ runner.os }}-${{ github.job }}
           restore-keys: |
@@ -312,7 +312,7 @@ jobs:
 
       - name: Restore SD cache ๐Ÿ’ฐ
         if: inputs.install-deps-from-package-repositories == ''
-        uses: actions/cache@v3
+        uses: actions/cache@v4
         with:
           key: sd-${{ runner.os }}-${{ github.event.repository.name }}
           path: ~/.staged.dependencies
@@ -386,7 +386,7 @@ jobs:
 
       - name: Restore any additional caches ๐Ÿ“ฅ
         if: inputs.additional-caches != ''
-        uses: actions/cache@v3
+        uses: actions/cache@v4
         with:
           path: "${{ inputs.additional-caches }}"
           key: additional-caches-${{ runner.os }}
@@ -512,7 +512,7 @@ jobs:
 
       - name: Check whether JUnit XML report exists ๐Ÿšฆ
         id: check-junit-xml
-        uses: andstor/file-existence-action@v2
+        uses: andstor/file-existence-action@v3
         with:
           files: "${{ env.PKGNAME }}.Rcheck/tests/testthat/junit-result.xml"
 
@@ -538,7 +538,7 @@ jobs:
           steps.check-junit-xml.outputs.files_exists == 'true'
             && inputs.publish-unit-test-report-gh-pages == true
             && github.event_name != 'pull_request'
-        uses: actions/upload-artifact@v3
+        uses: actions/upload-artifact@v4
         with:
           name: unit-test-report
           path: "index.html"
@@ -661,7 +661,7 @@ jobs:
           env.junit_xml_comparison_result_method == 'artifact' &&
           !github.event.pull_request.head.repo.fork &&
           github.event_name == 'pull_request'
-        uses: actions/upload-artifact@v3
+        uses: actions/upload-artifact@v4
         with:
           path: output-artifact.md
           name: junit-xml-report-comparison
@@ -754,7 +754,7 @@ jobs:
 
       - name: Upload package build โคด
         if: startsWith(github.ref, 'refs/tags/v')
-        uses: actions/upload-artifact@v3
+        uses: actions/upload-artifact@v4
         with:
           path: ${{ github.event.repository.name }}/${{ inputs.package-subdirectory }}/${{ env.PKGBUILD }}
           name: ${{ env.PKGBUILD }}
diff --git a/.github/workflows/grammar.yaml b/.github/workflows/grammar.yaml
index 35ba48206..aa8403a38 100644
--- a/.github/workflows/grammar.yaml
+++ b/.github/workflows/grammar.yaml
@@ -43,7 +43,7 @@ jobs:
         uses: actions/checkout@v4
 
       - name: Restore npm cache ๐Ÿ’ฐ
-        uses: actions/cache@v3
+        uses: actions/cache@v4
         with:
           key: npm-${{ runner.os }}-${{ github.job }}
           restore-keys: |
@@ -51,7 +51,7 @@ jobs:
           path: node_modules
 
       - name: Setup NodeJS โ˜Š
-        uses: actions/setup-node@v3
+        uses: actions/setup-node@v4
         id: npm-cache
         with:
           node-version: 20
@@ -122,7 +122,7 @@ jobs:
       - name: Check whether annotations exist ๐Ÿ’ญ
         id: check-annotations
         if: inputs.enable-annotations
-        uses: andstor/file-existence-action@v2
+        uses: andstor/file-existence-action@v3
         with:
           files: "annotations.json"
 
diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml
index 5480e3f31..e82b17820 100644
--- a/.github/workflows/pkgdown.yaml
+++ b/.github/workflows/pkgdown.yaml
@@ -173,7 +173,7 @@ jobs:
           path: ${{ github.event.repository.name }}
 
       - name: Restore SD cache ๐Ÿ’ฐ
-        uses: actions/cache@v3
+        uses: actions/cache@v4
         with:
           key: sd-${{ runner.os }}-${{ github.event.repository.name }}
           path: ~/.staged.dependencies
@@ -267,7 +267,7 @@ jobs:
 
       - name: Upload docs for review โฌ†
         if: github.event_name == 'pull_request' || startsWith(github.ref, 'refs/tags/v')
-        uses: actions/upload-artifact@v3
+        uses: actions/upload-artifact@v4
         with:
           name: pkgdown.zip
           path: pkgdown.zip
diff --git a/.github/workflows/roxygen.yaml b/.github/workflows/roxygen.yaml
index e89a8a9bc..64dfa02ff 100644
--- a/.github/workflows/roxygen.yaml
+++ b/.github/workflows/roxygen.yaml
@@ -94,7 +94,7 @@ jobs:
           path: ${{ github.event.repository.name }}
 
       - name: Restore SD cache ๐Ÿ’ฐ
-        uses: actions/cache@v3
+        uses: actions/cache@v4
         with:
           key: sd-${{ runner.os }}-${{ github.event.repository.name }}
           path: ~/.staged.dependencies
diff --git a/.github/workflows/style.yaml b/.github/workflows/style.yaml
index dd1a60296..cb3cb2d35 100644
--- a/.github/workflows/style.yaml
+++ b/.github/workflows/style.yaml
@@ -99,7 +99,7 @@ jobs:
 
       - name: Check file existence ๐Ÿค”
         id: check_files
-        uses: andstor/file-existence-action@v2
+        uses: andstor/file-existence-action@v3
         with:
           files: "/tmp/style-problems.R, /tmp/style-problems.txt"
 
diff --git a/.github/workflows/test-coverage.yaml b/.github/workflows/test-coverage.yaml
index f8f670441..0ea66585e 100644
--- a/.github/workflows/test-coverage.yaml
+++ b/.github/workflows/test-coverage.yaml
@@ -181,7 +181,7 @@ jobs:
           path: ${{ github.event.repository.name }}
 
       - name: Restore SD cache ๐Ÿ’ฐ
-        uses: actions/cache@v3
+        uses: actions/cache@v4
         with:
           key: sd-${{ runner.os }}-${{ github.event.repository.name }}
           path: ~/.staged.dependencies
@@ -257,7 +257,7 @@ jobs:
 
       - name: Check whether coverage reports exists ๐Ÿ’ญ
         id: check_coverage_reports
-        uses: andstor/file-existence-action@v2
+        uses: andstor/file-existence-action@v3
         with:
           files: >-
             ${{ github.event.repository.name }}/${{ inputs.package-subdirectory }}/coverage.xml,
@@ -276,7 +276,7 @@ jobs:
         continue-on-error: true
 
       - name: Upload report ๐Ÿ”ผ
-        uses: actions/upload-artifact@v3
+        uses: actions/upload-artifact@v4
         with:
           name: coverage-report
           path: |
@@ -312,7 +312,7 @@ jobs:
           path: ${{ github.event.repository.name }}
 
       - name: Restore SD cache ๐Ÿ’ฐ
-        uses: actions/cache@v3
+        uses: actions/cache@v4
         with:
           key: sd-${{ runner.os }}-${{ github.event.repository.name }}
           path: ~/.staged.dependencies
diff --git a/.github/workflows/validation.yaml b/.github/workflows/validation.yaml
index ef13ec1b0..9b93814e5 100644
--- a/.github/workflows/validation.yaml
+++ b/.github/workflows/validation.yaml
@@ -84,7 +84,7 @@ jobs:
         shell: bash
 
       - name: Restore SD cache ๐Ÿ’ฐ
-        uses: actions/cache@v3
+        uses: actions/cache@v4
         with:
           key: sd-${{ runner.os }}-${{ github.event.repository.name }}
           path: ~/.staged.dependencies
@@ -109,7 +109,7 @@ jobs:
 
       - name: Upload report for review โฌ†
         if: github.ref != 'refs/heads/main'
-        uses: actions/upload-artifact@v3
+        uses: actions/upload-artifact@v4
         with:
           name: validation_report.pdf
           path: validation_report.pdf
diff --git a/.github/workflows/verdepcheck.yaml b/.github/workflows/verdepcheck.yaml
index d4d56b3c8..b7102f9d1 100644
--- a/.github/workflows/verdepcheck.yaml
+++ b/.github/workflows/verdepcheck.yaml
@@ -92,14 +92,14 @@ jobs:
 
       - name: Upload lock file โคด๏ธ
         if: always()
-        uses: actions/upload-artifact@v3
+        uses: actions/upload-artifact@v4
         with:
           name: "lock-file-${{ env.strategy }}"
           path: pkg.lock
 
       - name: Upload output file โคด๏ธ
         if: always()
-        uses: actions/upload-artifact@v3
+        uses: actions/upload-artifact@v4
         with:
           name: "res-${{ env.strategy }}"
           path: res.RDS
diff --git a/.github/workflows/version-bump.yaml b/.github/workflows/version-bump.yaml
index 11faf3dc5..7c3d22fdd 100644
--- a/.github/workflows/version-bump.yaml
+++ b/.github/workflows/version-bump.yaml
@@ -100,7 +100,7 @@ jobs:
 
       - name: Check if a pre-commit config exists
         id: precommit-config-exists
-        uses: andstor/file-existence-action@v2
+        uses: andstor/file-existence-action@v3
         with:
           files: ".pre-commit-config.yaml"
 
@@ -108,7 +108,7 @@ jobs:
         if: |
           inputs.disable-precommit-autoupdate != 'true' &&
             steps.precommit-config-exists.outputs.files_exists == 'true'
-        uses: actions/setup-python@v4
+        uses: actions/setup-python@v5
         with:
           python-version: '3.12'
 
diff --git a/.github/workflows/version.yaml b/.github/workflows/version.yaml
index 27a6a11ee..2ea74f723 100644
--- a/.github/workflows/version.yaml
+++ b/.github/workflows/version.yaml
@@ -74,7 +74,7 @@ jobs:
         uses: actions/checkout@v4
 
       - name: Set up Python ๐Ÿ
-        uses: actions/setup-python@v4
+        uses: actions/setup-python@v5
         with:
           python-version: '3.12'