Expl3 and recent xparse on overleaf: No expl3 loader detected

You need to upload the entire l3kernel. The log says it used the local expl3.sty but used expl3-code.tex (the actual expl3 code) from /usr/share/texlive/texmf-dist/tex/latex/l3kernel/:

(./expl3.sty (/usr/share/texlive/texmf-dist/tex/latex/l3kernel/expl3-code.tex

! Package expl3 Error: Mismatched expl3 files detected.

You need to upload this file too to get it working. Better yet, upload the entire kernel (including driver files and other stuff that you might need):

-rw-rw-r--  1 phelype phelype 991026 Mai  7 13:25 expl3-code.tex
-rw-rw-r--  1 phelype phelype   2882 Mai  7 13:25 expl3-generic.tex
-rw-rw-r--  1 phelype phelype   3868 Mai  7 13:25 expl3.lua
-rw-rw-r--  1 phelype phelype   9894 Mai  7 13:25 expl3.sty
-rw-rw-r--  1 phelype phelype  20583 Mai  7 13:25 l3dvipdfmx.def
-rw-rw-r--  1 phelype phelype  37442 Mai  7 13:25 l3dvips.def
-rw-rw-r--  1 phelype phelype  15331 Mai  7 13:25 l3dvisvgm.def
-rw-rw-r--  1 phelype phelype  63076 Mai  7 13:25 l3names.def
-rw-rw-r--  1 phelype phelype  21611 Mai  7 13:25 l3pdfmode.def
-rw-rw-r--  1 phelype phelype  22242 Mai  7 13:25 l3xdvipdfmx.def
  • expl3-code.tex is the actual expl3 code. Without that nothing works;
  • expl3-generic.tex is the generic loader, in case you are using other format other than LaTeX;
  • expl3.lua are the Lua routines in case you are using expl3 with LuaTeX;
  • expl3.sty is the loader for LaTeX (counterpart of expl3-generic.tex);
  • The remaining .def files are driver-specific definitions which are loaded depending on which engine you use.

Phelype Oleinik has given an excellent answer , but I'd like to point to a couple of another method.

We provide a TDS-style zip file which available from CTAN. This is 'pre-extracted' and explicitly contains a tex/latex directory with all of the run-time files in it. A copy of the content of that directory will always have a full set of matching files.