Raycast has a feature to import/export preferences in a .rayconfig file format. This isn't ideal for use in a dotfiles-esque Git repository since it would be difficult to compare changes with a compressed file. Also, unfortunately, syncing is only possible on a pro subscription and only through Raycast's cloud service.
To get a more useful JSON file from the .rayconfig (example shown in example.rayconfig.json), you will have to first have to export a decrypted version. Go to Settings > Extensions > Raycast > Export Settings & Data and under "Export Password," which by default is 12345678, you will want to delete that.
After that, run the "Export Settings & Data" command. You should be able to export all of the preferences (Settings, Extensions, Floating Notes, Script Directories, Snippets) except Quicklinks without setting a password.
Then, in terminal, run gzip --decompress --keep --suffix .rayconfig NAME_OF_FILE.rayconfig and you should get a JSON file similar to example.rayconfig.json.
After that, you can get it back into .rayconfig format using gzip --keep --suffix .rayconfig NAME_OF_FILE and then run "Import Settings & Data" command to get it back.
As for syncing, I am not sure of a way to do it. Deeplinks may be a path but it still requires some input from the user (raycast://extensions/raycast/raycast/export-settings-data and raycast://extensions/raycast/raycast/import-settings-data). Let me know if you have any thoughts
Nice one @halo. I found that encrypting the json file isn't required for the import to work (I guess to be backwards compatible before they introduced encryption). You do still need to gzip the file though.